0

この 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;
            };
4

1 に答える 1

1

Javaターゲットの場合、次を変更すると:protected DIGIT: '0' .. '9';

DIGITをフラグメント化する: '0' .. '9';

それが動作します。

これがお役に立てば幸いです。

于 2010-05-03T13:06:15.357 に答える