我正在使用 Alex 3.0.5、Happy 1.18.10、Cabal 1.16.0.2
我有一个使用 Cabal 构建的小型编译器项目。我将编译器的内部作为库公开,所以我在公开的模块部分有 MyLangLex 和 MyLangPar。如果我删除 Alex 和 Happy 生成的 .hs 文件,然后运行 cabal configure,然后 cabal build 将首先运行 Alex 和 Happy,生成文件,然后继续构建,一切正常。但是,如果我不删除这些文件,Alex 和 Happy 要么不构建文件,要么没有将它们放在正确的位置。我觉得Happy跑了,因为我看到了Happy发来的信息;但是,当我查看应该生成的 .hs 文件时,它是不正确的(其中没有变化),我可以确定 .hs 文件的版本。Cabal 在构建中使用的 hs 文件是错误的,因为应该改变的行为没有。即对 .y 文件的更改没有合并到构建的程序中,所以我怀疑在运行 Happy 时,Cabal 将此文件放在某个临时目录中,然后使用旧的 .hs 文件,该文件仍然存在建造。但我不确定这一点。
是我的错误还是其中一种工具行为不端?