私は 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 ファイルを見ると、正しくありません (変更されていません)。Cabal がビルドで使用する hs ファイルは、変更されるべき動作が変更されていないため、間違ったファイルです。つまり、.y ファイルへの変更はビルドされたプログラムに組み込まれていないため、Happy が実行されている間、Cabal はこのファイルを一時ディレクトリに置き、古い .hs ファイルを使用していると思われます。建てる。しかし、これについてはよくわかりません。
エラーは私の側にあるのでしょうか、それともツールの 1 つが正しく動作していないのでしょうか?