Ich habe die folgende Grammatik und ich weiß nicht, wie man es repariert. Ich überprüfe, dass, wenn es Ambiguos mit den Wirth Bedingungen ist aber vielleicht ist dies irrelevant, weil Bison einen LR-Parser verwenden:Hilfe mit dieser Grammatik, XMl in Bison
Erste Version, 7 Schiebe-/Reduzier
S->DE
D->aKc
E-><J K E2
E2-> /> | > H I
I-> </J>
K-> | KL
L-> j ='N'
H-> | HT
T-> N E3
E3-> | E N
N -> | N N2
N2-> text | j
wobei j ein gültiges Wort ist, und Text ist nur Text ohne besondere Zeichen, a und c sind die Zeichenfolgen, die eine XML-Deklaration umgeben. einer der Konflikte, die erscheinen, ist eine Verschiebung/reduzieren, die Ursache, dass die Regel E3 ->/leer/nutzlos werden.
Ich mache einige Verbesserungen mit dem Epsilon-Übergang
Zweite Version 2shift/reduzieren
S-> D E
D-> a D2
D2->|K c
E-> <J E1
E1-> E2 | K E2
E2-> /> | > HI
I-> </J>
K-> L | K L
L-> J= 'N'
N-> N N2 | N2
N2-> X | J
H-> HT | T
T-> N|E
die 2-Shift Problem reduzieren, dass nach ein X oder J lesen und kommt andere X oder J , es weiß nicht, ob es T reduziert oder verschiebt und bereitet vor, N-> N N2 | zu verwenden N2
dritte Version 2shift/reduzieren, aber auch xml meine Beispieldateien
S-> D E
D-> a D2
D2-> K c | c // a is "<?xml version=\"1.0\"" and c is "?>"
E-> <J E1
E1-> E2 | K E2
E2-> /> | > E3 // this is the other correction, for the case of an empty element
E3-> HI | I
I-> </J>
K-> L | K L
L-> J= 'N'
N-> N N2 | N2
N2-> X | J // X and J are word(any strange word) and ValidWord(used in element and atributes names)
H-> HT | T
T-> N|E
Ist das Hausaufgaben? – LarsH