Bison - pierwszeństwo operatora
Mam pytanie o pierwszeństwo i asocjatywność operatora w Bison.
W każdym przykładzie widzę produkcjeexpr 'op' expr
, na przykład: http: //dinosaur.compilertools.net/bison/bison_8.html
Ale jeśli użyłbym żubra%left
i inne narzędzia asocjacyjne i używałbym gramatyki takiej jak:
expr| expr binop expr
| expr relop expr
| expr logical_op expr
i
binop: '+'
| '-'
| '*'
| '/'
;
relop: EE
| NE
| LE
| '<'
| GE
| '>'
;
logical_op: AND
| OR
;
czy zostaną zastosowane zasady asocjatywności i pierwszeństwa?
Czy muszę napisać expliciteexpr 'op' expr
dla każdego operatora?
Pytam, ponieważ kiedy próbuję użyć gramatyki takiej jak ta, którą napisałem, otrzymuję ostrzeżenia o konfliktach.
Ale kiedy ręcznie piszę produkcje takie jakexpr '+' expr
Nie otrzymuję żadnych ostrzeżeń.