J'ai trouvé des exemples similaires à ma question mais je n'arrive pas à l'appliquer à mon exemple.Lex et yacc comment résoudre shift/réduire dangling else
Quelqu'un pourrait m'aider à me diriger dans la bonne direction?
Voici le message d'erreur de 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
Voilà ma grammaire: déclaration: bloc | emptystatement | ifstatement | whilestatement | statementexpression SEMICOLON | SORTIE LPAREN addexprlist RPAREN SEMICOLON ;
addexprlist:
addexpr |
addexprlist COMMA addexpr
;
emptystatement:
SEMICOLON
;
ifstatement:
IF LPAREN conditionalexpr RPAREN statement |
IF LPAREN conditionalexpr RPAREN statement ELSE statement
;
Il n'y a donc aucune solution pour se débarrasser de cet avertissement? – momonkey
Eh bien, d'une certaine manière. * Réponse mise à jour. * – DigitalRoss
Merci pour cela, mais j'espère modifier la grammaire pour corriger l'ambiguïté sans faire taire l'avertissement si possible. – momonkey