Я нашел похожие примеры по моему вопросу, но я не могу применить его к моему примеру.Лекс и yacc как решить shift/уменьшить болтаться еще
Может ли кто-нибудь помочь указать мне в правильном направлении?
Вот сообщение об ошибке y.output:
state 97
ifstatement : IF LPAREN conditionalexpr RPAREN statement . (23)
ifstatement : IF LPAREN conditionalexpr RPAREN statement . ELSE statement (24)
ELSE shift 102
IF reduce 23
INT reduce 23
OUTPUT reduce 23
WHILE reduce 23
IDENTIFIER reduce 23
INT_LITERAL_TOK reduce 23
LPAREN reduce 23
LBRACE reduce 23
RBRACE reduce 23
SEMICOLON reduce 23
DBL_PLUS reduce 23
DBL_MINUS reduce 23
MINUS reduce 23
Вот моя грамматика: заявление: блок | emptystatement | ifstatement | автономное | выражение выражения SEMICOLON | OUTPUT LPAREN addexprlist RPAREN SEMICOLON ;
addexprlist:
addexpr |
addexprlist COMMA addexpr
;
emptystatement:
SEMICOLON
;
ifstatement:
IF LPAREN conditionalexpr RPAREN statement |
IF LPAREN conditionalexpr RPAREN statement ELSE statement
;
Итак, нет решения, чтобы избавиться от этого предупреждения? – momonkey
Ну, в некотором смысле. * Ответ обновлен. * – DigitalRoss
Спасибо за это, но я надеюсь изменить грамматику, чтобы исправить двусмысленность, не заставляя замолчать предупреждение, если это возможно. – momonkey