我对 Bison 中的运算符优先级和关联性有疑问。
在每个示例中,我看到的作品都是这样expr 'op' expr
的,例如:http://dinosaur.compilertools.net/bison/bison_8.html
但是,如果我使用 bison%left
和其他关联工具,我会使用如下语法:
expr| expr binop expr
| expr relop expr
| expr logical_op expr
和
binop: '+'
| '-'
| '*'
| '/'
;
relop: EE
| NE
| LE
| '<'
| GE
| '>'
;
logical_op: AND
| OR
;
会使用关联性和优先级规则吗?
还是我需要expr 'op' expr
为每个运算符写明确的?
我在问,因为当我尝试使用我发布的语法时,我会收到有关冲突的警告。
但是当我手工编写作品时,就像expr '+' expr
我没有收到任何警告一样。