<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Tomita-Parser</id>
	<title>Tomita-Parser - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Tomita-Parser"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Tomita-Parser&amp;action=history"/>
	<updated>2026-06-07T21:22:06Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Tomita-Parser&amp;diff=586979&amp;oldid=prev</id>
		<title>imported&gt;Meinichselbst: Parameter fix</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Tomita-Parser&amp;diff=586979&amp;oldid=prev"/>
		<updated>2025-10-03T19:01:53Z</updated>

		<summary type="html">&lt;p&gt;Parameter fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;Tomita-Parser&amp;#039;&amp;#039;&amp;#039; (nach [[Masaru Tomita]]) ist ein [[Parser|Parsverfahren]] für [[kontextfreie Grammatik]]en, das eine Verallgemeinerung des [[LR(k)]]-Verfahrens ist. Das Verfahren wird deshalb auch &amp;#039;&amp;#039;&amp;#039;GLR(k)-Verfahren&amp;#039;&amp;#039;&amp;#039; (für &amp;#039;&amp;#039;Generalized&amp;#039;&amp;#039; LR(k)) genannt.&lt;br /&gt;
&lt;br /&gt;
Ausgangspunkt des Tomita-Parsers ist der Tabellenerstellungsvorgang des LR(k)-Verfahrens. Bei Grammatiken, die nicht die LR(k)-Eigenschaft haben (u.&amp;amp;nbsp;a., aber nicht nur, [[Mehrdeutige Grammatik|ambige]] Grammatiken), führt dieser Vorgang zu Mehrfacheinträgen, sog. &amp;#039;&amp;#039;Konflikten&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Shift-Reduce-Konflikt&amp;#039;&amp;#039;: es besteht die Möglichkeit, das nächste Eingabesymbol auf den [[Stapelspeicher|Stapel]] des Parsers zu legen oder eine erkannte rechte Seite einer [[Produktionsregel]] durch die linke Regelseite zu ersetzen.&lt;br /&gt;
* &amp;#039;&amp;#039;Reduce-Reduce-Konflikt&amp;#039;&amp;#039;: es gibt mindestens zwei Produktionsregeln, mit deren Hilfe eine Reduktion erfolgen kann.&lt;br /&gt;
&lt;br /&gt;
Der [[Algorithmus]] des Tomita-Parsers verfolgt diese Konflikte pseudo-parallel weiter. Als [[Datenstruktur]] wird ein sog. &amp;#039;&amp;#039;Graphstapel&amp;#039;&amp;#039; (&amp;#039;&amp;#039;graph structured stack&amp;#039;&amp;#039;) – ein [[Graph (Graphentheorie)#Gerichteter azyklischer Graph|gerichteter azyklischer Graph]] – verwendet, der alle bereits vollzogenen Parsoperationen repräsentiert.&lt;br /&gt;
&lt;br /&gt;
== Graphstapel ==&lt;br /&gt;
Die verwendete Repräsentation der Parsergebnisse geschieht – ähnlich wie beim [[Chart-Parser]] – mittels eines gerichteten azyklischen Graphen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:GLRStack1.png|mini|hochkant=1.5|Abb. 1.: Graphstack für den Satz &amp;#039;&amp;#039;sie beobachtet den Einbrecher mit dem Fernglas&amp;#039;&amp;#039;]]&lt;br /&gt;
&lt;br /&gt;
Abb. 1 zeigt einen solchen [[Graph (Graphentheorie)|Graphen]] nach Beendigung des Parsvorgangs für den Beispielsatz „&amp;#039;&amp;#039;sie beobachtet den Einbrecher mit dem Fernglas&amp;#039;&amp;#039;“.&lt;br /&gt;
&lt;br /&gt;
Die dabei verwendete, [[Mehrdeutige Grammatik|ambige]] Grammatik ist:&lt;br /&gt;
&lt;br /&gt;
# [[Satz (Grammatik)|S]] → [[Nominalphrase|DP]] [[Verbalphrase|VP]]&lt;br /&gt;
# [[Verbalphrase|VP]] → [[Verbalphrase|Vbar]]&lt;br /&gt;
# [[Verbalphrase|VP]] → [[Verbalphrase|VP]] [[Präpositionalphrase|PP]]&lt;br /&gt;
# [[Verbalphrase|Vbar]] → [[Verb|V]]&amp;lt;sub&amp;gt;[[Transitivität (Grammatik)|trans]]&amp;lt;/sub&amp;gt; [[Nominalphrase|DP]]&lt;br /&gt;
# [[Nominalphrase|DP]] → [[Determinativ (Wortart)|Det]] [[Nominalphrase|NP]]&lt;br /&gt;
# [[Nominalphrase|DP]] → [[Pronomen|Pron]]&lt;br /&gt;
# [[Nominalphrase|NP]] → [[Nominalphrase|Nbar]]&lt;br /&gt;
# [[Nominalphrase|Nbar]] → [[Nomen|N]]&lt;br /&gt;
# [[Nominalphrase|Nbar]] → [[Nominalphrase|Nbar]] [[Präpositionalphrase|PP]]&lt;br /&gt;
# [[Präpositionalphrase|PP]] → [[Präposition|P]] [[Nominalphrase|DP]]&lt;br /&gt;
&lt;br /&gt;
Für den Beispielsatz erlaubt sie zwei verschiedene [[Syntaxbaum|syntaktische Analysen]]. Aufgrund dieser Ambiguität hat sie nicht die LR(k)-Eigenschaft, führt also zu Mehrfacheinträgen in der Parstabelle.&lt;br /&gt;
&lt;br /&gt;
Jeder [[Knoten (Graphentheorie)|Graphknoten]] hat einen eindeutigen Knotennamen (dieser beginnt mit „n“).&lt;br /&gt;
Die roten Knoten enthalten Elemente aus dem Vokabular der Grammatik, also einerseits [[Nichtterminalsymbol]]e und andererseits Wörter ([[Terminalsymbol]]e). Die blauen Knoten dagegen enthalten Zustandsnummern der [[LR-Parser|LR]]-Parstabelle. Man kann schön sehen, wie im Knoten &amp;#039;&amp;#039;n21&amp;#039;&amp;#039; zwei bis dahin verschiedene Analysen bei der Integration der [[Präposition]] „mit“ wieder zusammenlaufen. Die nachfolgende [[Präpositionalphrase]] „mit dem Fernglas“ wird also nur einmal analysiert.&lt;br /&gt;
&lt;br /&gt;
== Parsalgorithmus ==&lt;br /&gt;
Wie beim LR(k)-Verfahren besteht der Parsprozess aus eine Reihe von tabellengesteuerten Shift- bzw. Reduktionsschritten. Beim Shift-Schritt wird ein Wort aus der Eingabe entfernt und auf den Stapel gelegt. Bei einem Reduktionsschritt wird die rechte Seite (γ) einer Produktionsregel A → γ, die in umgekehrter Reihenfolge auf dem Stapel liegt, durch die linke Regelseite (A) ersetzt. Im Unterschied zum LR(k)-Verfahren wird der reduzierte Teil jedoch nicht aus dem Stapel gelöscht, sondern bleibt erhalten. Dies bedeutet, dass der Stapel monoton wächst.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang wird durch die GLR(k)-Tabelle gesteuert. Zu jedem Zeitpunkt befindet sich der Parser in einem definierten Zustand (vgl. [[Kellerautomat]]). Mit diesem Zustand und dem/den nächsten Symbol(en) der Eingabe wird die GLR(k)-Tabelle konsultiert und die nächsten Operationen (shift, reduce, accept, error) und der Folgezustand bestimmt. Im Fall von Mehrfacheinträgen (Konflikten) werden diese quasi parallel verfolgt. Nachfolgende Shift-Operationen können diese parallelen Verarbeitungsstränge jedoch wieder synchronisieren; dies ist wichtig für die [[Zeitkomplexität]] des Verfahrens.&lt;br /&gt;
&lt;br /&gt;
== Beziehung zu anderen Parsverfahren ==&lt;br /&gt;
Der Tomita-Parser ist ein vorkompilierter [[Chart-Parser]].&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
*  {{cite book |title= Parsing Techniques|last= Grune|first= Dick |coauthors= Jacobs, Ceriel J.H|year= 2008 |publisher= Springer Science+Business Media |isbn= 978-0-387-20248-8 |language=en}}&lt;br /&gt;
&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 | Autor=Masaru Tomita&lt;br /&gt;
 | Titel=LR parsers for natural languages&lt;br /&gt;
 | Sammelwerk=Coling 1984:  10th International Conference on Computational Linguistics&lt;br /&gt;
 | Seiten=354–357&lt;br /&gt;
 | Jahr=1984&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{Literatur&lt;br /&gt;
 | Autor=Masaru Tomita&lt;br /&gt;
 | Titel=An efficient context-free parsing algorithm for natural languages&lt;br /&gt;
 | Sammelwerk=International Joint Conference on Artificial Intelligence&lt;br /&gt;
 | Seiten=756–764&lt;br /&gt;
 | Jahr=1985&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Theorie formaler Sprachen]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Meinichselbst</name></author>
	</entry>
</feed>