Im Versuch, die EBNF AusdruckHilfe mit Shift/Konflikt reduzieren - Der Versuch, Modell (XA) * (XB) *
("declare" "namespace" ";")* ("declare" "variable" ";")*
ich die yacc aufgebaut haben zu modellieren Grammatik (Im MPPG verwenden), die scheint um dies darzustellen, aber es stimmt nicht mit meinem Testausdruck überein.
Der Testfall i bin versucht zu passen
declare variable;
Der Token Strom aus dem Lexer ist
KW_Declare
KW_Variable
Separator
Die Grammatik Parse sagt, es gebe eine „Shift/Reduce Konflikt, Zustand 6 auf KW_Declare ". Ich habe versucht, dies mit "% left PrologHeaderList PrologBodyList" zu lösen, aber keine Lösung funktioniert.
Program : Prolog;
Prolog : PrologHeaderList PrologBodyList;
PrologHeaderList : /*EMPTY*/
| PrologHeaderList PrologHeader;
PrologHeader : KW_Declare KW_Namespace Separator;
PrologBodyList : /*EMPTY*/
| PrologBodyList PrologBody;
PrologBody : KW_Declare KW_Variable Separator;
KW_Declare KW_Namespace KW_Variable Separator sind alle Token mit Werten "deklarieren", "naemsapce", "Variable", ";".
Dies ist der Ansatz, den ich am Ende angenommen habe. Ich denke, ich kann die Validierung im Code durchführen. – Sprotty