happy から GLR パーサーを生成しようとしていますが、ファイルが生成されるとエラーが発生します。
これが ABC.y の例なので、私が何をしようとしているのかは明らかです:
{
module Main where
}
%name ps1 s1
%tokentype { ABC }
%error { parseError }
%token
a { A }
b { B }
c { C }
%%
s1: a a a b {} | b s2 a {}
s2: b a b s2 {} | c {}
{
data ABC = A | B | C
parseError _ = error "bad"
main = getContents >>= print . ps1 . lexer
lexer ('a':xs) = A : lexer xs
ETC
}
この例は、
happy ABC.y
ただし、 --glr に満足しているため、結果をビルドできません。私はそれを間違っているのだろうかと思っています。正確に言うと、 --glr を実行すると、ABC.hs という 2 つの出力が生成されます。ただし、ABCData.hs
ghc --make ABC.hs ABCData.hs
今失敗します。私が得るエラーは、「Could not find module 'System', It is a hidden member of haskell-98...」です。また、文法を BNFC にコーディングして -glr オプションを使用しようとしましたが、明らかに廃止された Data.FiniteMap への依存など、他のエラーが発生します。このコンパイルを取得する方法はありますか?