Happy和Alex如何引导自己成为自己?

happy的源代码树包含AttrGrammarParser.lyParser.lyalex的源代码树包含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

上一篇: How do Happy and Alex bootstrap themselves into being?

下一篇: How to specify tab width for Alex lexer?