행복에서 GLR 파서를 생성하려고하는데 파일이 생성되면 오류가 발생합니다. 여기 GLR_Lib.hs : 'System'모듈을 찾을 수 없습니다.
는 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
}
이 예는 --glr와 happy'd, 그러나
happy ABC.y
와 잘 작동합니다 , 나는 결과를 만들 수 없다. 내가 잘못하고 있는지 궁금합니다. 정확히 말하면 happy --glr은 ABC.hs라는 두 개의 출력을 생성합니다. 그러나 ABCData.hs,
ghc --make ABC.hs ABCData.hs
지금은 실패합니다. 내가 얻는 오류는 'System'모듈을 찾을 수 없다. haskell-98의 숨겨진 멤버이다 ... 나는 haskell98 패키지를 추가하려고 애썼고, 모호한 prelude 문제가있다. 또한 BNFC에 문법을 코딩하고 -glr 옵션을 사용하여 시도했지만, 여전히 다른 오류가 발생합니다. 예를 들어 Data.FiniteMap에 대한 의존성이 사용되지 않습니다. 이 컴파일을 할 수있는 방법이 있습니까?
하나의 덧글을 추가하고 싶습니다. 나는 .y 파일을 자동으로 생성하고 있으며, 코드 gen이 하스켈 코드가되지 않는 경우에도 gl - 파서를 사용하게되어 기쁩니다.그래서 누군가가 좋은 glr 파서를 추천 할 수 있다면; 들소 glr 방법이 완전하고 잘 개발 된 것처럼, 나는 쉽게 전환 할 수 있습니다. –