我想從快樂生成一個GLR解析器,但是一旦文件生成就會出錯。GLR_Lib.hs:找不到模塊'系統'
下面是一個例子,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 happy'd ,我無法建立結果。我想知道我是否做錯了。準確地說,happy --glr產生了兩個輸出ABC.hs.但是,ABCData.hs
ghc --make ABC.hs ABCData.hs
現在失敗。我得到的錯誤是找不到模塊'系統',它是haskell-98的一個隱藏成員...我嘗試添加包haskell98,並得到模糊的前奏問題。我也嘗試將語法編碼爲BNFC並使用它們的-glr選項,但是我仍然遇到其他錯誤,例如依賴Data.FiniteMap,這顯然已被棄用。有沒有辦法讓這個編譯?
我想添加一條評論。我自動生成.y文件,我很樂意使用任何glr解析器 - 即使代碼gen不會導致Haskell代碼。所以如果有人可以推薦一個好的glr解析器;如果野牛glr方法完整並且發展良好,我可以輕鬆切換到該方法。 –