Bison の演算子の優先順位と結合性について質問があります。
すべての例で、プロダクションは次のようexpr 'op' expr
になっています。たとえば、http://dinosaur.compilertools.net/bison/bison_8.html
しかし、バイソン%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
、警告が表示されないようになります。