Happy和Alex如何引导自己成为自己?
  happy的源代码树包含AttrGrammarParser.ly和Parser.ly , alex的源代码树包含Scan.x  然而,据我所知,为了编译happy ,我们需要使用... happy地将.ly文件转换成.lhs文件,为了编译alex我们需要将.x文件转换成.hs文件使用... alex 。 
因此,为了编译任何工具,似乎必须有一些引导进行。
  每个项目的Setup.lhs文件都包含一些模板扩展,但据我所知,不要执行任何特别的操作来执行引导。 
引导程序如何以及在哪里完成?
我看到您正在darcs.haskell.org上查看这些软件包的darcs存储库的源代码树。 如果你看看Hackage上的实际tarball,你会看到一些不同的东西:
https://hackage.haskell.org/package/alex-3.1.4/src/dist/build/alex/alex-tmp/
https://hackage.haskell.org/package/happy-1.19.5/src/dist/build/happy/happy-tmp/
  所以基本上所需的构建工件随Hackage tarball一起发货。  然后Cabal只是在构建过程中使用构建工件,从而避免了在本地引导的需要。  当你为自己的软件包运行cabal sdist时,Cabal也知道如何保留这样的构建工件,而不想依赖于开发人员或alex,但是最后我检查了它与sandboxes,fwiw没有良好的互操作性。 
顺便说一句,亚历克斯和快乐的发展已经转移到github:
https://github.com/simonmar/alex/
https://github.com/simonmar/happy/
链接地址: http://www.djcxy.com/p/65635.html