作者:失和孔洞_943 | 来源:互联网 | 2023-05-23 16:14
源树happy
中包含AttrGrammarParser.ly
与Parser.ly
和源树alex
包含Scan.x
.然而,据我所知,为了编译happy
,我们需要使用... 将.ly
文件转换为.lhs
文件happy
,并且为了编译,alex
我们需要使用... 将.x
文件转换为.hs
文件alex
.
因此,为了编译任一工具,似乎必须进行一些自举.
Setup.lhs
每个项目的文件都包含一些模板扩展,但据我所知,不要做任何特别的事情来进行自举.
引导如何以及在哪里完成?
1> kini..:
我看到你在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还知道如何保存这样的构建工件,当你运行cabal sdist
自己的程序包时,你不想依赖happy或alex,但最后我检查了这与沙盒,fwiw没有很好的互操作性.
顺便说一句,亚历克斯和快乐的发展已经转移到github:
https://github.com/simonmar/alex/
https://github.com/simonmar/happy/