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
产生下面的树,这是完全缺失或分公司:
我在做什么错?
我爱上这个为好,不时。不要忘记接受你自己的答案! –