Formelle Grammatik
Im Formale Sprachtheorie, a Grammatik (Wenn der Kontext nicht gegeben ist, oft als a genannt formelle Grammatik Für Klarheit) beschreibt, wie man Strings aus einer Sprache bildet Alphabet das sind nach der Sprache gültig Syntax. Eine Grammatik beschreibt die nicht Bedeutung der Saiten Oder was kann mit ihnen in welchem Kontext - nur ihrer Form - getan werden können. Eine formale Grammatik wird als eine Reihe von Produktionsregeln für solche Saiten in einer formalen Sprache definiert.
Die formale Sprachtheorie, die Disziplin, die formale Grammatiken und Sprachen untersucht, ist ein Zweig von angewandte Mathematik. Seine Anwendungen sind in gefunden in Theoretische Informatik, Theoretische Sprachwissenschaft, formelle Semantik, Mathematische Logikund andere Bereiche.
Eine formelle Grammatik ist eine Reihe von Regeln für das Umschreiben von Zeichenfolgen sowie ein "Startsymbol", aus dem das Umschreiben beginnt. Daher wird normalerweise eine Grammatik als Sprachgenerator betrachtet. Es kann jedoch auch manchmal als Grundlage für eine "verwendet werden"Erkenntnis" - Eine Funktion beim Berechnen, die feststellt Automatenheorie. Eines der interessanten Ergebnisse der Automatentheorie ist, dass es nicht möglich ist, einen Erkenner für bestimmte formale Sprachen zu entwerfen.[1] Parsing ist der Prozess der Erkennung einer Äußerung (eine Saite in natürlichen Sprachen), indem sie sie auf eine Reihe von Symbolen zerlegt und jeden gegen die Grammatik der Sprache analysiert. Die meisten Sprachen haben die Bedeutungen ihrer Äußerungen nach ihrer Syntax - eine Praxis, die als bekannt ist Kompositionssemantik. Infolgedessen besteht der erste Schritt zur Beschreibung der Bedeutung einer Äußerung in der Sprache darin, sie durch einen Teil aufzubrechen und ihre analysierte Form zu betrachten (bekannt als seine als ITS bekannt Baum analysieren in der Informatik und als es tiefe Struktur in Generative Grammatik).
Geschichte
PāṇiniAbhandlung Astadyayi gibt formale Produktionsregeln und Definitionen, um die formale Grammatik von zu beschreiben Sanskrit.[2] Es gibt unterschiedliche Verwendungen von "Form" und "Formalismus", die sich im Laufe der Zeit geändert haben, abhängig von den Feldern, mit denen der zuständige Autor in Kontakt war. Ein historischer Überblick über das Konzept ist in [3]
Einführungsbeispiel
Eine Grammatik besteht hauptsächlich aus einem Satz von ProduktionsregelnUmschreiben von Regeln für die Transformation von Saiten. Jede Regel gibt einen Austausch einer bestimmten Zeichenfolge an (ITS) links) mit einem anderen (es rechte Seite). Eine Regel kann auf jede Zeichenfolge angewendet werden, die ihre linke Seite enthält und eine Schnur erzeugt, in der ein Auftreten dieser linken Seite durch ihre rechte Seite ersetzt wurde.
Im Gegensatz zu a Semi-Thue-System, was durch diese Regeln vollständig definiert ist, unterscheidet eine Grammatik weiter zwischen zwei Arten von Symbolen: nicht terminal und Terminal Symbole; Jede linke Seite muss mindestens ein nicht terminales Symbol enthalten. Es unterscheidet auch ein spezielles nicht terminales Symbol, das als das genannt wird Starten Sie das Symbol.
Die von der Grammatik generierte Sprache wird als die Menge aller Zeichenfolgen definiert, ohne nicht terminale Symbole, die aus der Zeichenfolge erzeugt werden können, die aus einem einzigen Startsymbol besteht, indem sie (möglicherweise wiederholt) ihre Regeln auf eine mögliche Weise aufweist. Wenn es im Wesentlichen unterschiedliche Möglichkeiten gibt, dieselbe einzelne Zeichenfolge zu erzeugen, soll die Grammatik sein zweideutig.
In den folgenden Beispielen sind die terminalen Symbole a und bund das Startsymbol ist S.
Beispiel 1
Angenommen, wir haben die folgenden Produktionsregeln:
- 1.
- 2.
Dann beginnen wir mit Sund kann eine Regel auswählen, die sich dafür bewerben kann. Wenn wir Regel 1 wählen, erhalten wir die Zeichenfolge Asb. Wenn wir dann Regel 1 auswählen, ersetzen wir erneut S mit Asb und erhalten Sie die Zeichenfolge aasbb. Wenn wir jetzt Regel 2 wählen, ersetzen wir S mit ba und erhalten Sie die Zeichenfolge Aababb, und sind fertig. Wir können diese Reihe von Auswahlmöglichkeiten kurz mehr mit Symbolen schreiben: .
Die Sprache der Grammatik ist der unendliche Satz , wo ist wiederholt Zeiten (und Insbesondere stellt die Anzahl der Produktionsregel 1 an, die angewendet wurde. Diese Grammatik ist kontextfrei (nur einzelne Nichtterminale erscheinen als linke Seiten) und eindeutig.
Beispiele 2 und 3
Angenommen, die Regeln sind stattdessen:
- 1.
- 2.
- 3.
Diese Grammatik ist aufgrund von Regel 3 nicht kontextfrei und ist aufgrund der mehrfachen Möglichkeiten, in denen Regel 2 verwendet werden kann, um Sequenzen von zu generieren s.
Die Sprache, die sie erzeugt s und/oder s. Dies ist leicht zu erkennen: um a zu generieren von einem Verwenden Sie Regel 2 zweimal, um zu generieren , dann vor Regel 1 zweimal und Regel 3 einmal zu produzieren, um zu produzieren . Dies bedeutet, dass wir willkürliche nicht leere Sequenzen von generieren können s und ersetzen Sie dann jeden durch sie durch oder wie wir wollen.
Dieselbe Sprache kann alternativ durch eine kontextfreie, nicht schwere Grammatik erzeugt werden. Zum Beispiel die regulär Grammatik mit Regeln
- 1.
- 2.
- 3.
- 4.
Formale Definition
Die Syntax der Grammatiken
In der klassischen Formalisierung generativer Grammatiken, die zuerst von vorgeschlagen wurden von Noam Chomsky in den 1950ern,[4][5] eine Grammatik G besteht aus den folgenden Komponenten:
- Ein endliches Set N von Nicht terminale Symbole, das ist disjunkt mit den Saiten aus gebildet aus G.
- Ein endliches Set von Terminalsymbole das ist disjunkt aus N.
- Ein endliches Set P von Produktionsregeln, jede Regel der Form
- wo ist der Kleene Star Bediener und bezeichnet Set Union. Das heißt, jede Produktionsregel kartiert von einer Zeichenfolge von Symbolen zu einer anderen, wobei die erste Zeichenfolge (der "Kopf") eine willkürliche Anzahl von Symbolen enthält, die mindestens einer von ihnen vorgesehen sind. Für den Fall, dass die zweite Zeichenfolge (der "Körper") ausschließlich aus dem besteht leerer String- Ich enthält überhaupt keine Symbole - es kann mit einer besonderen Notation bezeichnet werden (oft , e oder ) um Verwirrung zu vermeiden.
- Ein angesehenes Symbol das ist das Starten Sie das Symbol, auch die genannt Satzsymbol.
Eine Grammatik wird formal definiert als die Tupel . Eine solche formale Grammatik wird oft als als genannt System umschreiben oder ein Phrasenstruktur Grammatik in der Literatur.[6][7]
Einige mathematische Konstrukte in Bezug auf formelle Grammatiken
Der Betrieb einer Grammatik kann in Bezug auf die Beziehungen zu Zeichenfolgen definiert werden:
- Eine Grammatik gegeben , die binäre Beziehung (ausgesprochen als "G stellt sich in einem Schritt ab") auf Strings in wird definiert durch:
- die Beziehung (ausgesprochen als G leitet sich in null oder mehr Schritten ab) ist definiert als die Reflexive transsitive Schließung von
- a Sententiale Form ist ein Mitglied von Das kann in einer begrenzten Anzahl von Schritten vom Startsymbol abgeleitet werden ; Das heißt, eine sententiale Form ist ein Mitglied von . Eine sententiale Form, die keine nicht terminalen Symbole enthält (d. H. Ist ein Mitglied von ) wird a genannt Satz.[8]
- das Sprache von , bezeichnet als , ist definiert als die Sätze von Sätzen, die von erbaut wurden von .
Beachten Sie, dass die Grammatik ist effektiv das Semi-Thue-System Saiten genauso umschreiben; Der einzige Unterschied besteht darin, dass wir spezifisch unterscheiden nicht terminal Symbol zu Strings ohne nicht terminale Symbole.
Beispiel
Für diese Beispiele werden formale Sprachen verwendet Set-Builder-Notation.
Betrachten Sie die Grammatik wo , , ist das Startsymbol und besteht aus den folgenden Produktionsregeln:
- 1.
- 2.
- 3.
- 4.
Diese Grammatik definiert die Sprache wo bezeichnet eine Reihe von n aufeinanderfolgenden 's. Somit ist die Sprache die Reihe von Zeichenfolgen, die aus 1 oder mehr bestehen 's, gefolgt von der gleichen Anzahl von 's, gefolgt von der gleichen Anzahl von 's.
Einige Beispiele für die Ableitung von Strings in sind:
- (Hinweis zur Notation: liest "String P erzeugt String Q durch Produktion i", und der generierte Teil ist jedes Mal in fettem Typ angegeben.)
Die Chomsky -Hierarchie
Wann Noam Chomsky Erste formalisierte generative Grammatiken im Jahr 1956,[4] Er klassifizierte sie in Typen, die jetzt als die bezeichnet werden Chomsky -Hierarchie. Der Unterschied zwischen diesen Typen besteht darin, dass sie zunehmend strengere Produktionsregeln haben und daher weniger formale Sprachen ausdrücken können. Zwei wichtige Typen sind Kontextfreie Grammatiken (Typ 2) und Regelmäßige Grammatiken (Typ 3). Die Sprachen, die mit einer solchen Grammatik beschrieben werden können Kontextfreie Sprachen und reguläre Sprachen, beziehungsweise. Obwohl viel weniger mächtig als uneingeschränkte Grammatiken (Typ 0), der tatsächlich jede Sprache ausdrücken kann, die von a akzeptiert werden kann Turing MaschineDiese beiden eingeschränkten Grammatikarten werden am häufigsten verwendet, da Parser für sie effizient implementiert werden können.[9] Zum Beispiel können alle regulären Sprachen von a erkannt werden Finite-State-Maschineund für nützliche Untergruppen kontextfreier Grammatiken gibt es bekannte Algorithmen, um effizient zu erzeugen LL Parser und LR -Parser Um die entsprechenden Sprachen zu erkennen, erzeugen diese Grammatiken.
Kontextfreie Grammatiken
A Kontextfreie Grammatik ist eine Grammatik, in der die linke Seite jeder Produktionsregel nur aus einem einzigen nicht terminalen Symbol besteht. Diese Einschränkung ist nicht trivial; Nicht alle Sprachen können durch kontextfreie Grammatiken generiert werden. Diejenigen, die können, werden genannt Kontextfreie Sprachen.
Die Sprache oben definiert ist keine kontextfreie Sprache, und dies kann streng mit dem nachgewiesen werden Lemma für kontextfreie Sprachen pumpen, aber zum Beispiel die Sprache (mindestens 1 gefolgt von der gleichen Anzahl von 's) ist kontextfrei, da es durch die Grammatik definiert werden kann mit , , Das Startsymbol und die folgenden Produktionsregeln:
- 1.
- 2.
Eine kontextfreie Sprache kann in erkannt werden Zeit (sehen Big O Notation) durch einen Algorithmus wie z. Earleys Erkenntnis. Das heißt, für jede kontextfreie Sprache kann eine Maschine erstellt werden, die eine Zeichenfolge als Eingabe aufnimmt und in feststellt Zeit, ob die Zeichenfolge ein Mitglied der Sprache ist, wo ist die Länge der Saite.[10] Deterministische kontextfreie Sprachen ist eine Untergruppe kontextfreier Sprachen, die in der linearen Zeit erkannt werden können.[11] Es gibt verschiedene Algorithmen, die entweder auf diesen Sprachen oder eine Teilmenge davon abzielen.
Regelmäßige Grammatiken
Im Regelmäßige GrammatikenDie linke Seite ist wieder nur ein einzelnes nicht terminales Symbol, aber jetzt ist die rechte Seite ebenfalls eingeschränkt. Die rechte Seite kann die leere Saite oder ein einzelnes Klemmensymbol oder ein einzelnes terminales Symbol sein, gefolgt von einem nicht terminalen Symbol, aber nichts anderes. (Manchmal wird eine breitere Definition verwendet: Man kann längere Strings von Terminals oder einzelne Nichtterminale ohne irgendetwas anderes zulassen, was Sprachen macht einfacher zu bezeichnen während immer noch die gleiche Klasse von Sprachen definiert.)
Die Sprache oben definiert ist nicht regelmäßig, sondern die Sprache (mindestens 1 gefolgt von mindestens 1 , wo die Zahlen unterschiedlich sein können), wie sie durch die Grammatik definiert werden kann mit , , Das Startsymbol und die folgenden Produktionsregeln:
Alle von einer regulären Grammatik generierten Sprachen können in erkannt werden Zeit von einer endlichen Zustandsmaschine. Obwohl in der Praxis regelmäßige Grammatiken häufig verwendet werden Reguläre AusdrückeEinige in der Praxis verwendete Formen des regelmäßigen Ausdrucks generieren die regulären Sprachen nicht strikt und zeigen aufgrund dieser Abweichungen keine lineare Erkennungsleistung.
Andere Formen generativer Grammatiken
Viele Erweiterungen und Variationen von Chomskys ursprünglicher Hierarchie formeller Grammatiken wurden sowohl von Linguisten als auch von Informatikern entwickelt, die normalerweise entweder ihre ausdrucksstarke Kraft oder die Analyse oder Analyse erleichtern. Einige Formen der entwickelten Grammatiken umfassen:
- Bree-Adjoining-Grammatiken Erhöhen Sie die Ausdruckskraft herkömmlicher generativer Grammatiken, indem Sie die Umschreibung von Regeln ermöglichen Bäume analysieren statt nur Strings.[12]
- Betix -Grammatiken[13] und Grammatiken zuschreiben[14][15] Ermöglichen Sie, dass die Umschreiben von Regeln durch semantische Attribute und Operationen erweitert werden, sowohl nützlich für die Erhöhung der Grammatikausdruckskraft als auch für die Konstruktion praktischer Sprachübersetzungsinstrumente.
Rekursive Grammatiken
Eine rekursive Grammatik ist eine Grammatik, die Produktionsregeln enthält, die sind rekursiv. Zum Beispiel eine Grammatik für a Kontextfreie Sprache ist linksrekursiv Wenn es ein nicht terminales Symbol gibt A Das kann durch die Produktionsregeln gestellt werden, um eine Zeichenfolge mit A als das symbol links.[16] Ein Beispiel für rekursive Grammatik ist eine Klausel innerhalb eines von zwei Kommas getrennten Satzes.[17] Alle Arten von Grammatik in der Okoye -Hierarchie können rekursiv sein.
Analytische Grammatiken
Obwohl es einen enormen Körper der Literatur gibt Parsing -AlgorithmenDie meisten dieser Algorithmen gehen davon aus beschrieben mittels a generativ formelle Grammatik, und das Ziel ist es, diese generative Grammatik in einen funktionierenden Parser zu verwandeln. Streng genommen entspricht eine generative Grammatik in keiner Weise dem Algorithmus, mit dem eine Sprache analysiert wird, und verschiedene Algorithmen haben unterschiedliche Einschränkungen für die Form von Produktionsregeln, die als gut geformt angesehen werden.
Ein alternativer Ansatz besteht darin, die Sprache in erster Linie in Bezug auf eine analytische Grammatik zu formalisieren, die direkter der Struktur und Semantik eines Parsers für die Sprache entspricht. Beispiele für analytische Grammatikformalismen sind die folgenden:
- Die Sprachmaschine Implementiert uneingeschränkte analytische Grammatiken direkt. Substitutionsregeln werden verwendet, um einen Eingang zu transformieren, um Ausgaben und Verhalten zu erzeugen. Das System kann auch produzieren das LM-Diagramm, was zeigt, was passiert, wenn die Regeln einer uneingeschränkten analytischen Grammatik angewendet werden.
- Top-Down-Parsingsprache (TDPL): Ein hochminimalistischer analytischer Grammatikformalismus, der Anfang der 1970er Jahre entwickelt wurde, um das Verhalten von zu untersuchen Top-Down-Parser.[18]
- Grammatiken verlinken: Eine Form der analytischen Grammatik für Linguistik, was die syntaktische Struktur ableitet, indem die Positionsbeziehungen zwischen Wörternpaaren untersucht werden.[19][20]
- Ausdrucksgrammatiken analysieren (PEGS): Eine neuere Verallgemeinerung von TDPL, die um die Praktikum entwickelt wurden Ausdruckskraft Bedürfnissen Programmiersprache und Compiler Schriftsteller.[21]
Siehe auch
Verweise
- ^ Meduna, Alexander (2014), Formale Sprachen und Berechnungen: Modelle und ihre Anwendungen, CRC Press, p. 233, ISBN 9781466513457. Weitere Informationen zu diesem Thema finden Sie unter unentschlossenes Problem.
- ^ "Panini -Biographie". www-history.mcs.st-andrews.ac.uk. Archiviert von das Original Am 2018-08-15.
- ^ McElvenny J (2019). McElvenny J (Hrsg.). Form und Formalismus in der Linguistik (PDF). Berlin: Language Science Press. doi:10.5281/Zenodo.2654375. ISBN 978-3-96110-182-5.
- ^ a b Chomsky, Noam (September 1956). "Drei Modelle für die Beschreibung der Sprache". IRE -Transaktionen zur Informationstheorie. 2 (3): 113–124. doi:10.1109/tit.1956.1056813.
- ^ Chomsky, Noam (1957). Syntaktische Strukturen. Den Haag: Mouton.
- ^ Ginsburg, Seymour (1975). Algebraische und automatische theoretische Eigenschaften formaler Sprachen. Nordholland. S. 8–9. ISBN 978-0-7204-2506-2.
- ^ Harrison, Michael A. (1978). Einführung in die formale Sprachtheorie. Reading, Mass.: Addison-Wesley Publishing Company. p. 13. ISBN 978-0-201-02955-0.
- ^ Sententiale Formen, Kontextfreie Grammatiken, David Matuszek
- ^ Grune, Dick & Jacobs, Ceriel H.,, Parsing -Techniken - ein praktischer Leitfaden, Ellis Horwood, England, 1990.
- ^ Earley, Jay, "Ein effizienter kontextfreier Parsing-Algorithmus, " Kommunikation der ACM, Vol. 13 Nr. 2, S. 94-102, Februar 1970.
- ^ Knuth, D. E. (Juli 1965). "Über die Übersetzung von Sprachen von links nach rechts". Informationen und Kontrolle. 8 (6): 607–639. doi:10.1016/s0019-9958 (65) 90426-2.
- ^ Joshi, Aravind K., et al., "Baum -Adjunct -Grammatiken, " Journal of Computer Systems Science, Vol. 10 Nr. 1, S. 136-163, 1975.
- ^ Koster, Cornelis H. A., "Affix -Grammatiken", in Algol 68 Implementierung, North Holland Publishing Company, Amsterdam, p. 95-109, 1971.
- ^ Knuth, Donald E., "Semantik kontextfreier Sprachen, " Theorie der mathematischen Systeme, Vol. 2 Nr. 2, S. 127-145, 1968.
- ^ Knuth, Donald E., "Semantik kontextfreier Sprachen (Korrektur)", " Theorie der mathematischen Systeme, Vol. 5 Nr. 1, S. 95-96, 1971.
- ^ Anmerkungen zur formalen Sprachtheorie und zur Parsen Archiviert 2017-08-28 bei der Wayback -Maschine, James Power, Abteilung für Informatik der Nationalen Universität Irlands, Maynooth Maynooth, Co. Kildare, Irland.jpr02
- ^ Borenstein, Seth (27. April 2006). "Songvögel erfassen auch Grammatik". Northwest Herald. p. 2 - über Newspapers.com.
- ^ Birman, Alexander, Das TMG -Erkennungsschema, Doktorarbeit, Princeton University, Abteilung für Elektrotechnik, Februar 1970.
- ^ Sleator, Daniel D. & Temperly, Davy, "Englisch mit einer Link -Grammatik analysieren, "Technischer Bericht CMU-CS-91-196, Carnegie Mellon University Computer Science, 1991.
- ^ Sleator, Daniel D. & Temperly, Davy, "Englisch mit einer Link -Grammatik analysieren", Dritter internationaler Workshop zur Parsing -Technologien, 1993. (überarbeitete Version des obigen Berichts.)
- ^ Ford, Bryan, Packrat-Parsing: Ein praktischer Linear-Zeit-Algorithmus mit Backtracking, Masterarbeit, Massachusetts Institute of Technology, September 2002.