私は以下の文法を持っています。それを修正する方法はわかりません。私はそれがヴィルト条件にambiguosですが、バイソンはLRパーザ使用しているので、多分これが無関係である場合いることを確認しますこの文法の助けを借りて、BisonのXMl
最初のバージョンを、7シフト/削減
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
jは有効な単語である
、テキストは特別な文字列を含まないテキストのみであり、aとcはxml宣言を囲む文字列です。 表示される競合の1つはシフト/リダクションで、ルールE3 - >/が空の場合 /が役に立たなくなります。私はイプシロン遷移
セカンドバージョン2shift/
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
を減らす2シフトでいくつかの改善が問題を軽減します
は、後にXまたはJを読むことで、他のXまたはJが来ますそれはTまたはシフトを減らし、N> N N2を使用する準備ができているかどうかを知らない。 N2
第三版2shift /減らすが、
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
この宿題はありますか? – LarsH