我有一个有关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
这样的产生式时,我没有收到任何警告。