0
내 ANTLR 문법은 다음과 같습니다.ANTLR : 루프가 '%'문자와 일치하지 않습니다.
grammar ProgCalc;
options {
language = Java;
ASTLabelType=CommonTree;
output=AST;
backtrack=true;
}
/* Parser rules */
eval
: exp=add;
add
: term (PLUS^ term | MINUS^ term) *;
term
: factor (MULT^ factor | MOD^ factor)*;
factor
: number
| VARIABLE
| '('! add^ ')'!
;
number
: DEC | HEX | OCT;
/* Lexer Rules*/
VARIABLE: ('a'..'z' |'A'..'Z')('a'..'z'|'A'..'Z' | '0'..'9'|'_')* ;
DEC : ('1'..'9')('0'..'9')+;
HEX : '0x' ('0'..'9' | 'a'..'f' | 'A'..'F')+;
OCT : '0' ('0'..'7')*;
PLUS : '+';
MINUS : '-';
MULT : '*';
MOD : '%';
WHITESPACE : ('\t' | ' ' | '\r' | '\n'| '\u000C')+ { $channel = HIDDEN; };
컴파일 할 때 성공했습니다. 하지만 표현식 (예 : 5 % 3 * 5)을 파싱하면 오류가 발생합니다.
line 1:1 required (...)+ loop did not match anything at character '%' line 1:3 required (...)+ loop did not match anything at character '*' line 1:5 required (...)+ loop did not match anything at character '<EOF>' line 1:5 no viable alternative at input '<EOF>'
사람이 내 문법을 확인하고 수정하시기 바랍니다 수 있을까요? 대단히 감사합니다.
대단히 감사합니다. 그것은 작동합니다. –