1
我有以下鹿茸G文件工作正常:如何更改ANTLR布爾優先權?
grammar BoolTest;
LEFT_PAREN : '(' ;
RIGHT_PAREN : ')' ;
AND : 'AND';
OR : 'OR';
WHITESPACE : (' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
WORD : (~(' ' | '\t' | '\r' | '\n' | '(' | ')'))*;
expression : and_expression;
and_expression : or_expression (AND^ or_expression)*;
or_expression : atom (OR^ atom)*;
atom : WORD | LEFT_PAREN! expression RIGHT_PAREN!;
的問題是,我需要的,具有比或更高的優先級。所以我修改了最後四行如下:
expression : or_expression;
or_expression : and_expression (OR^ and_expression)*;
and_expression : atom (AND^ atom)*;
atom : WORD | LEFT_PAREN! expression RIGHT_PAREN!;
但是由於某些原因它不能正常工作。而下面的表達式:
a AND b OR c
產生下面的樹,這是完全缺失或分公司:
我在做什麼錯?
我愛上這個爲好,不時。不要忘記接受你自己的答案! –