Auf der Grammatik einer .y (yacc - Bison) zu tun Datei Ich habe definiert die folgenden Regeln:Bison: Shift/Konfliktlösung reduzieren, wenn sie mit optionalen Regeln
C: E | D | F | A
A: B | B '[' C ']';
(so etwas wie B mit optionaler [C] ist) , wenn ich die .y-Datei in der entsprechenden Weise kompilieren eine richtige Lexer-Datei ich die folgende Verschiebung erhalten \ reduzieren Konflikt:
Zustand 48
74 A: B.
75 | B. '[' C ']'
'[' Verschiebung und gehe in den Zustand 91
'[' [reduzieren mit Regel 74 (A)]
$ Standard reduzieren mit Regel 74 (A)
Mein Problem ist folgendes, wenn es den Vorgänger '[' Ich möchte es verschieben und nicht reduzieren. Das Problem ist, dass ich die Lösung für diesen Fehler nicht finden kann, während ich Stunden in der Dokumentation suche. Wie kann ich das beheben (bitte Code-spezifisch sein).
Sie haben nicht genügend Informationen geliefert Ihre Fehler zu reproduzieren:
Sie können die in der Regel durch (unter der Annahme, B und C sind Tokens) ersetzen. Wenn ich aus Ihrem Beispiel eine Bison-Datei erstelle, finde ich keine Probleme. Zeigen Sie mehr Code, der Ihren Fehler reproduziert. –