J'ai la grammaire suivante et je ne sais pas comment y remédier. Je vérifie que si elle est ambiguos les conditions Wirth mais peut-être cela n'a aucune importance parce que le bison utilise un analyseur LR:Aide avec cette grammaire, XMl dans Bison
première version, 7 changement/réduire
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
où j est un mot valide, et le texte est juste du texte sans caractères spéciaux, a et c sont la chaîne qui entoure une déclaration xml. l'un des conflits qui apparaissent est un décalage/réduire qui fait que la règle E3 ->/vide/devenir inutile.
Je fais quelques améliorations avec la transition epsilon
Deuxième version 2shift/réduire
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
Réduc changement 2 sont les problèmes qui lisent après un X ou J, et vient autre X ou J , il ne sait pas s'il réduit T ou décale et se prépare à utiliser N-> N N2 | N2
Troisième version 2shift/réduire, mais bien reconnaître mes exemples de fichiers xml
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
Est-ce que ce sont les devoirs? – LarsH