일치 수있는 이유 : 내가 start
에 의해 잘못된 표현 ABC &* DEF
을 시도했습니다ANTLR : 유효하지 않은 입력이 문법 정의 나는 계산식에 대한 매우 간단한 문법 정의를 작성했습니다
grammar SimpleCalc;
options {
output=AST;
}
tokens {
PLUS = '+' ;
MINUS = '-' ;
MULT = '*' ;
DIV = '/' ;
}
/*------------------------------------------------------------------
* LEXER RULES
*------------------------------------------------------------------*/
ID : ('a'..'z' | 'A' .. 'Z' | '0' .. '9')+ ;
WHITESPACE : ('\t' | ' ' | '\r' | '\n'| '\u000C')+ { Skip(); } ;
/*------------------------------------------------------------------
* PARSER RULES
*------------------------------------------------------------------*/
start: expr EOF;
expr : multExpr ((PLUS | MINUS)^ multExpr)*;
multExpr : atom ((MULT | DIV)^ atom)*;
atom : ID
| '(' expr ')' -> expr;
을하지만 통과시켰다. &
개의 문자가 무시 된 것 같습니다. 여기서 뭐가 문제 야?
이 문법은 어떻게 확인 했습니까? AntlrWorks에서이 문법으로 구문 분석을 해봤습니까? – Andremoniy
생성 된 코드를 시도하고'ABC & * DEF'에 대한 결과'ABC * DEF'를 얻습니다. –
Mmm ... * start * 규칙을 호출하고 결정 출력 AST 구조를 호출하는 데 사용하는 코드를 제공해주십시오. – Andremoniy