dierre
07-07-2010, 10:15
Ciao, sto usando CUP ( LALR(1) ) per creare un parser che mi serve per la mia tesi. Ho un problema di shift/reduce nella mia grammatica:
command ::= IDENTIFIER | IDENTIFIER LPAREN parlist RPAREN;
Ed ho questo warning:
Warning : *** Shift/Reduce conflict found in state #3
between command ::= IDENTIFIER (*)
and command ::= IDENTIFIER (*) LPAREN parlist RPAREN
under symbol LPAREN
Resolved in favor of shifting.
Come posso risolvere il problemuccio? Ho sempre letto dello shift/reduce nella situazione di if/else annidati, non mi sembra questo il caso e non so come proseguire. (E' la prima volta che mi occupo di grammatiche)
P.S.: IDENTIFIER, LPAREN "(" e RPAREN ")" sono terminal, parlist e command no.
command ::= IDENTIFIER | IDENTIFIER LPAREN parlist RPAREN;
Ed ho questo warning:
Warning : *** Shift/Reduce conflict found in state #3
between command ::= IDENTIFIER (*)
and command ::= IDENTIFIER (*) LPAREN parlist RPAREN
under symbol LPAREN
Resolved in favor of shifting.
Come posso risolvere il problemuccio? Ho sempre letto dello shift/reduce nella situazione di if/else annidati, non mi sembra questo il caso e non so come proseguire. (E' la prima volta che mi occupo di grammatiche)
P.S.: IDENTIFIER, LPAREN "(" e RPAREN ")" sono terminal, parlist e command no.