Dies ist eine Frage aus dem Drachenbuch. Das ist die Grammatik:
B → ε
In der Frage wird gefragt, wie gezeigt werden kann, dass es sich um LL (1) handelt, nicht jedoch um SLR (1).
Um zu beweisen, dass es sich um LL (1) handelt, habe ich versucht, die Analysetabelle zu erstellen, aber ich erhalte mehrere Produktionen in einer Zelle, was ein Widerspruch ist.
Bitte sagen Sie, wie ist dieses LL (1) und wie kann man es beweisen?
formal-grammars
compilers
parsers
Vinayak Garg
quelle
quelle
Antworten:
Lassen Sie uns zunächst Ihren Produktionen eine Nummer geben.
Berechnen wir zuerst die ersten und folgen wir den Mengen. Für kleine Beispiele wie diese reicht es aus, die Intuition für diese Mengen zu verwenden.
Berechnen wir nun die -Tabelle. Wenn wir keine Konflikte bekommen, lautet die Grammatik per Definition L L ( 1 ) .L L ( 1 ) L L ( 1 )
Da es keine Konflikte gibt, lautet die Grammatik .L L ( 1 )
Nun zur Tabelle . Zuerst der L R ( 0 ) Automat.S.L R ( 1 ) L R ( 0 )
Und dann die Tabelle (ich nehme an, auf S kann alles folgen).S.L R ( 1 ) S.
Es gibt Konflikte im Zustand 0, daher ist die Grammatik nicht . Beachten Sie, dass bei Verwendung von L A L R ( 1 ) beide Konflikte korrekt gelöst würden: Im Zustand 0 auf Lookahead würde ein L A L R ( 1 ) R3 und auf Lookahead b R4 annehmen.S.L R ( 1 ) L A L R ( 1 ) ein L A L R ( 1 ) b
Dies wirft die interessante Frage auf, ob es eine Grammatik gibt, die aber nicht L A L R ( 1 ) ist , was der Fall ist, aber nicht leicht zu finden ist.L L ( 1 ) L A L R ( 1 )
quelle
Wenn Sie nicht gefragt werden, müssen Sie die LL (1) -Tabelle nicht erstellen, um zu beweisen, dass es sich um eine LL (1) -Grammatik handelt. Sie berechnen einfach die FIRST / FOLLOW-Sätze wie Alex:
Und dann muss eine LL (1) -Grammatik per Definition:
Also, für die gegebene Grammatik:
Die SLR (1) -Analyse finde ich einwandfrei!
quelle
Suchen Sie nach einer ausreichenden Bedingung, die eine Grammatik LL (1) ergibt (Hinweis: Schauen Sie sich die ERSTEN Sätze an).
Suchen Sie nach einer erforderlichen Bedingung, die alle SLR (1) -Grammatiken erfüllen müssen (Hinweis: Sehen Sie sich die FOLLOW-Sätze an).
quelle