Бизонная петля для конфликта
Чтобы решить проблему висячей еще, я использовал следующее решение:
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
| ...
;
Для определения правил грамматики в цикле for я создаю конфликты смещение / уменьшение из-за той же проблемы:
stmt_for : FOR '(' exp ';' exp ';' exp ')' stmt
;
Как я могу решить эту проблему?