Beziehung zwischen einfachen und regulären Grammatiken

7

Ich lese "Eine Einführung in formale Sprachen und Automaten" von Peter Linz und nach dem Lesen der ersten fünf Kapitel habe ich das folgende Problem mit einfachen und regelmäßigen (insbesondere rechtslinearen) Grammatiken, die einander sehr ähnlich sind.

Welche Beziehung besteht zwischen diesen? Was ist der Unterschied? Können Sie (nicht deterministische) endliche Automaten für einfache Grammatiken erstellen (offensichtlich ohne Verwendung eines Stapels)?

Soroush
quelle
2
Ich bin nicht mit einfachen Grammatiken vertraut. Können Sie sich an die Definition erinnern oder eine Referenz geben?
20.

Antworten:

13

Eine einfache Grammatik (S-Grammatik) ist eine, bei der jede Produktion die Form hat EINeinB.1B.2...B.n wo ein ist ein Terminal und alles B.ich,ich0 sind keine Terminals und es gibt nur eine Produktion mit einem Paar EIN,ein.

Es ist klar, dass jede S-Sprache (erzeugt durch eine S-Grammatik) eindeutig und leicht zu analysieren ist, da jedes Terminalsymbol von links nach rechts und nicht-terminal die anzuwendende Produktion eindeutig bestimmt. Zum Beispiel, wenn die Zeichenfolge isteinbcdann das Paar S.,einBestimmt eindeutig die erste Produktion des Parsings usw. für jedes Terminal und das Nicht-Terminal rechts davon. Somit kann eine durch eine S-Grammatik definierte Sprache symbolweise ohne Lookahead analysiert werden, was eine lineare Analysezeit, tatsächlich Zeit, ergibt|x|.

S-Grammatiken sind an sich nicht besonders wichtig, da die meisten realen Sprachen ihre Fähigkeiten überschreiten. Aber sie sind ein Sprungbrett zu anderen Grammatiken, die in linearer Zeit analysiert werden, wie zL.L.(k) Grammatiken, in denen es eine Grenze gibt kauf dem Lookahead benötigt, um eine Produktion während des Parsens zu bestimmen. In der Tat ist eine S-Grammatik eineL.L.(0) Grammatik.

Die Verbindung zu Automaten besteht darin, dass eine S-Sprache mit einem Pushdown-Automaten mit einem einzelnen Status analysiert werden kann, der nur das Eingabesymbol und das oberste Stapelsymbol betrachtet, um eine Folge von zu drückenden Stapelsymbolen zu bestimmen. Aber seit der S-Grammatik ...

S.einS.B.|#B.ein

... erzeugt nicht reguläre {einich#einich::ich0}}, S-Sprachen können im Allgemeinen nicht durch deterministische oder nicht deterministische Automaten mit endlichen Zuständen erkannt werden.

David Lewis
quelle
2
Eine andere Möglichkeit, sie zu vergleichen, sind ihre Entscheidungsprobleme. Bei einfachen Grammatiken ist das Äquivalenzproblem (ob zwei Grammatiken dieselbe Sprache erzeugen) entscheidbar, während das Einschlussproblem (ob eine Grammatik eine Teilmenge der von der anderen Grammatik erzeugten Sprache erzeugt) nicht entscheidbar ist. Bei regulären Grammatiken sind beide Probleme entscheidbar.
Reinierpost