찾을 수 없습니다 :ANTLR 심볼을 기본적으로 내가이 간단한 문법을 구현해야합니다 ANTLR 프로젝트에서 일하고 있어요
WS : ' '
;
MINUS : '-' ;
DIGIT : '0'..'9'
;
int4
@init{
int n = 0;
}
: (({n<4}?=> WS {n++;})* (MINUS{n++;})?({n<4}?=> DIGIT{n++;})*){n==4}? ;
numbers
: (int4)*;
INT4 포트란의 형식 I4를 따라
(폭 넷과의 정수를 의미) 이 코드는 다음 오류를 제공합니다.
[10:17:20] C:\Users\guille\Documents\output\testParser.java:277: cannot find symbol
[10:17:20] symbol : variable n
[10:17:20] location: class testParser
[10:17:20] if ((evalPredicate(n==4,"n==4"))) {
[10:17:20] ^
[10:17:20] C:\Users\guille\Documents\output\testParser.java:283: cannot find symbol
[10:17:20] symbol : variable n
[10:17:20] location: class testParser
[10:17:20] else if ((LA4_0==WS) && (evalPredicate(n<4,"n<4"))) {
[10:17:20] ^
[10:17:20] C:\Users\guille\Documents\output\testParser.java:289: cannot find symbol
[10:17:20] symbol : variable n
[10:17:20] location: class testParser
[10:17:20] else if ((LA4_0==DIGIT) && (evalPredicate(n<4,"n<4"))) {
[10:17:20] ^
[10:17:20] 3 errors
아이디어가 있습니까?
@BartKiers 기본적으로 이것은 헤더에'문법 테스트; '를 추가하는 문법입니다. 나는 옵션 {...}을 사용하지 않았다. 필자는 ANTLRWorks 만 테스트했기 때문에 드라이버 클래스를 사용하지 않았습니다. 이 오류는 ANTLRWorks 도구에 의해 던졌습니다. – Cyberguille
@BartKiers 문법이 성공적으로 생성되었습니다. 문제는 내가 컴파일러를 디버깅 할 때 실패하고 질문에 나타나는 오류를 던집니다. – Cyberguille
아, 오해. 나는 문법을 생성 할 때 생각했다. 이제 나는 그들이 정말로 컴파일러 오류라고 봅니다. v3 (3.5.2)의 최신 버전을 사용해보십시오. 문제가 계속되는 경우 http://www.antlr3.org/pipermail/antlr-interest/2007-August/023111.html –