Loop de Bison para conflito
para resolver o problema do dangling else, usei a seguinte solução:
stmt : stmt_matched
| stmt_unmatched
;
stmt_unmatched : IF '(' exp ')' stmt
| IF '(' exp ')' stmt_matched ELSE stmt_unmatched
;
stmt_matched : IF '(' exp ')' stmt_matched ELSE stmt_matched
| stmt_for
| ...
;
Para definir as regras gramaticais sobre o loop for, produzo uma mudança / redução de conflito devido ao mesmo problema:
stmt_for : FOR '(' exp ';' exp ';' exp ')' stmt
;
Como posso resolver este problema?