Welche guten Notationen für deterministische kontextfreie und sichtbar Pushdown-Sprachen gibt es?


10

Deterministische kontextfreie Sprachen (DCFL) und sichtbar Pushdown-Sprachen (VPL) sind beide Sätze formaler Sprachen zwischen kontextfreien Sprachen (CFL) und regulären Sprachen (REG). Gibt es eine lesbare Notation, die in einfachem ASCII ausgedrückt werden kann, wie Backus-Naur-Form für CFL und reguläre Ausdrücke für REG?


1
Es kann nützlich sein, die Bedeutung von „gut“ im Titel der Frage zu klären. Was ist falsch daran, BNF zur Beschreibung einer DCFL zu verwenden?
Tsuyoshi Ito

1
Mit gut meine ich, dass es für Menschen leicht zu lesen und zu schreiben sein sollte, also sollte es auf ASCII basieren. BNF ist großartig - reguläre Ausdrücke sind eine kompakte Teilmenge von BNF. Aber welche Teilmenge von BNF definiert DCFL und welche definiert VPL?
Jakob

Antworten:


5

q,z,aq,γq,qQzγaein Eingabesymbol oder die leere Zeichenfolge. Die Notation selbst erzwingt keinen Determinismus, ist jedoch leicht zu überprüfen. Wenn Sie eine kontextfreie grammatikalische Notation (als BNF) verwenden, werden Sie auf Probleme stoßen, da DCFLs eine geeignete Unterklasse von CFLs sind. Wie von DaniCL festgestellt, können Sie bei einem CFG im Allgemeinen nicht entscheiden, ob seine Sprache deterministisch ist.

AaαbAabα

ab


Vielen Dank! In Bezug auf DCFLs denke ich, dass dies die richtige Richtung ist. Eine konkrete Syntax hätte einige nützliche Abkürzungen für Teilmengen, die durch reguläre Ausdrücke analysiert werden. In Bezug auf VPLs bin ich mir noch nicht sicher, da ein VLP im Gegensatz zu Baummodellen wie XML baumelnde Aufruf- und Rückgabesymbole haben darf. Sie können es besser mit einer beliebigen Teilsequenz von SAX-Ereignissen aus einem beliebigen XML-Baum vergleichen. Ich bezweifle, dass RelaxNG dies beschreiben kann.
Jakob

Die Bemerkung Using ... ist deterministisch. ist nebensächlich - es sagt nichts darüber aus, ob es eine Unterklasse der CFG gibt, die ganz offensichtlich alle DCFLs beschreibt und sonst nichts. Wie LR (k) Grammatiken.
Reinierpost

@reinerpost: stimmt, aber (zu meiner Verteidigung) würde ich LR (1) -Grammatiken nicht als syntaktische Notation betrachten, da man die LR (1) -Bedingung überprüfen muss.
Sylvain

3

Um eine kanonische Darstellung zu finden, betrachten Sie Folgendes: Die Klasse der DCFL entspricht der Klasse der Sprachen, die durch LR (k) -Grammatiken erzeugt werden, was wiederum LR (1) entspricht. Dies bedeutet, dass Sie für jede DCFL eine LR (1) -Grammatik finden können. Natürlich ist eine LR (1) -Grammatik immer noch eine kontextfreie Grammatik, aber mit einer besonderen Eigenschaft: Aus LR (1) -Grammatiken können wir leicht Analysetabellen erstellen, um einen deterministischen Parser zu führen (mit Lookahead von 1 Symbol, daher LR (1)). Diese Analysetabellen wären eine andere Darstellung, wenn auch etwas weniger lesbar.

Denken Sie übrigens daran, dass es unentscheidbar ist, ob eine bestimmte kontextfreie Sprache deterministisch ist (Satz von Greibach).

Ich muss zugeben, dass ich noch nie von VPL gehört habe.


Kanonische Darstellungen sind selten leicht zu lesen, aber danke für die Anweisungen. Wenn der Satz von Greibach besagt, dass es Sprachen in CFL gibt, für die nicht entschieden werden kann, dass sie in DCFL sind - wie spezifizieren Sie diese Sprachen? Wenn Sie eine Grammatik haben, können Sie sie in Backus Naur Form (BNF) ausdrücken. Greibachs Theorem scheint also zu implizieren, dass es keine Teilmenge von BNF gibt, die DCFL genau ausdrückt? Sichtbar Pushdown-Sprachen werden auch als "verschachtelte Wörter" bezeichnet. Diese Sprachklasse ist relativ neu, aber relevant für das Parsen geordneter Bäume und ähnlicher Strukturen.
Jakob

Zum Problem der Unentscheidbarkeit: Eine Sprache ist eine CFL, wenn eine kontextfreie Grammatik (CFG) vorhanden ist, die sie generiert. Wenn Sie eine CFG erhalten, können Sie entscheiden, ob diese Grammatik LR (k) ist und daher deterministisch. (Gleiches gilt für Pushdown-Automaten. Es ist einfach zu überprüfen, ob ein bestimmter PDA deterministisch ist oder nicht.) Angenommen, Sie haben eine CFG, die nicht LR (k) ist. Dies bedeutet jedoch nicht, dass die Sprache keine DCFL ist ;; Möglicherweise finden Sie keine LR (k) -Grammatik dafür.
DaniCL

"Sie können entscheiden, ob diese Grammatik LR (k) ist" für festes k.
Sylvain

@Jakob: Greibachs Theorem besagt nicht, dass und selbst wenn dies der Fall wäre, würde dies nur bedeuten, dass willkürliche CFGs keine geeigneten Notationsformalismen für DCFGs sind, genauso wie sie kein guter Notationsformalismus für reguläre Sprachen sind (ob a CFG beschreibt, dass eine reguläre Sprache ebenfalls unentscheidbar ist. Es ist jedoch nichts Falsches daran, eine Unterklasse der CFGs auszuwählen (z. B. die regulären Grammatiken für reguläre Sprachen).
Reinierpost

Es gibt eine Tradition schlampiger Formulierungen in Lehrbüchern: Sie neigen dazu, Aussagen wie "es ist unentscheidbar, ob eine CFL regulär / deterministisch ist" zu machen, wenn sie wirklich damit meinen "es ist unentscheidbar, ob eine CFG eine regulär / deterministisch beschreibt Sprache".
Reinierpost
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.