我尝试编译生成的文件时尝试了多个示例语法并得到相同的错误。
例如,我完全按照这个问题的解决方案 - GLR_Lib.hs: Could not find module 'System'
语法文件是
%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 deriving (Eq,Ord,Show)
parseError _ = error "bad"
}
但是当我编译时,我得到:
[1/2 of 2]编译ABCData(ABCData.hs,ABCData.o)
[2 of 2]编制ABC(ABC.hs,ANC.o)
GLR_Lib.hs:164:2:解析输入'case'
的错误我尝试过的每一个语法都发生了这个确切的错误。我不知道对于那些成功运作的人来说,我的做法可能与众不同。
答案 0 :(得分:1)
GLR_Lib
模板中存在缩进错误。这就是我为了让它发挥作用所做的事情:
ABCMain.hs
文件。./templates
。locate GLR_Lib
。在使用Haskell平台的OSX上,我在/Library/Haskell/current/share/happy-1.19.4 / ./templates
./templates/GLR_Lib
进行以下修改:
import System
case new_stks of
stks' <- foldM (pack i) stks reds
happy --glr --template=./templates ABC.y
您可能只需要ghc --make ABCMain
和GLR_Lib
模板。