这个antlr示例无法正常工作

时间:2010-05-01 18:40:48

标签: antlr antlr3

此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;
            };

1 个答案:

答案 0 :(得分:1)

对于java目标,如果更改: 保护 数字 :'0'..'9' ;

要 分段 数字 :'0'..'9' ;

它会起作用。

希望这会对你有所帮助。