2010-11-22 5 views
2

최근에 Antlr을 배우기 시작했으며 Antlr 3.2가 포함 된 AntlrWorks 1.4를 다운로드하기 시작했습니다.Antlr 3.2 다시 쓰기 규칙

grammar TestRewrite; 

ab : a b -> a; 

a : A; 
b : B; 

A : 'a'; 
B : 'b'; 

: - '>'이제 3.2이 같이 재 작성 규칙 문법을 지원하도록되어 있지만 심지어 가장 간단한 경우를 얻을 수 없었습니다 나도 렉서 또는 파서 규칙에 따라 작동하도록 구성 할 수 컴파일하려고하면 오류가 발생합니다.

[11:26:29] error(100): TestRewrite.g:3:13: syntax error: antlr: TestRewrite.g:3:13: unexpected token: a 

왜 그런가요? 구성은 충분히 단순 해 보입니다. ab는 노드 만 캡처되는 트리를 생성해야합니다. 그걸 어떻게하는거야? 나는 뿌리 뽑기 ('^') 또는 무시 ('!') 중 하나를 사용하여 작업 할 수 없습니다. 나는 매우 혼란 스러웠다.

답변

8

옵션 {출력 = AST;}

+0

@TimeHorse의'옵션 {출력 = AST는;};'문'당신'문법 TestRewrite 직후에 배치해야합니다. –

+2

+1은 Terence Parr입니다. ANTLR에 감사드립니다! :) –