Bison - precedência do operador
Eu tenho uma pergunta sobre precedência de operador e associatividade em Bison.
Em todos os exemplos, vejo que as produções são comoexpr 'op' expr
, por exemplo: http: //dinosaur.compilertools.net/bison/bison_8.html
Mas se eu usasse bison%left
e outras ferramentas de associatividade, e eu usaria gramática como:
expr| expr binop expr
| expr relop expr
| expr logical_op expr
e
binop: '+'
| '-'
| '*'
| '/'
;
relop: EE
| NE
| LE
| '<'
| GE
| '>'
;
logical_op: AND
| OR
;
as regras de associatividade e precedência seriam usadas?
Ou eu preciso escrever explicitamenteexpr 'op' expr
para todo operador?
Estou perguntando, porque quando tento usar a gramática como a que postei, recebo avisos sobre conflitos.
Mas quando a mão escrevo produções comoexpr '+' expr
Eu não estou recebendo nenhum aviso.