此ANTLR示例不解析输入“1;” 。你能解释一下原因吗?它解析“11;”。
grammar TestGrammar;
options {
output=AST;
}
expr: mexpr (PLUS^ mexpr)* SEMI!;
mexpr: atom (STAR^ atom)*;
atom: INT;
LPAREN: '(';
RPAREN: ')';
STAR: '*';
PLUS: '+';
SEMI: ';';
protected
DIGIT: '0'..'9';
INT: (DIGIT)+;
WS: (' ' | '\t' | '\n' | '\r') {
$channel = HIDDEN;
};
答案 0 :(得分:1)
对于java目标,如果更改: 保护 数字 :'0'..'9' ;
要 分段 数字 :'0'..'9' ;
它会起作用。
希望这会对你有所帮助。