Syntaxbaum
EinSyntax-,Ableitungs- oderParsebaum ist ein Begriff aus dertheoretischen Informatik und derLinguistik. Er bezeichnet eine hierarchische Darstellung der Zergliederung eines Textes. Syntaxbäume werden sowohl als Hilfsmittel zur graphischen Visualisierung der Zerlegung eingesetzt als auch, in Form einerDatenstruktur, zur Darstellung dieser Zergliederung für die maschinelle Weiterverarbeitung z. B. in einemCompiler oderÜbersetzer.
Die verschiedenen Bezeichnungen werden in der Literatur nicht einheitlich verwendet. Formal präzise definiert ist nur der TerminusAbleitungsbaum, der sich auf den Begriff derAbleitung stützt. Andere Bezeichnungen für verschiedenartige Bäume können dann, wie unten beschrieben, bei Bedarf technisch näher definiert werden.
Anders als in der Informatik, in der Sprachen auch den technischen Möglichkeiten folgend definiert werden können, findet die Linguistik bei der Behandlungnatürlicher Sprachen schwierigere Voraussetzungen vor, vor allem weil die Reihenfolge der Bestandteile in einem Satz variieren kann.
Einleitung
[Bearbeiten |Quelltext bearbeiten]
Bei der (mechanischen) Analyse vonnatürlichsprachlichen Sätzen oderformalen Texten (z. B. Computerprogrammen) findet direkt nach derlexikalischen Analyse (der Zergliederung inToken oderSymbole) oft eine hierarchische Zusammenfassung der Symbole zu zusammenhängenden Satzteilen (Konstituenten) bzw. Teilabschnitten des formalen Textes statt. Umgekehrt kann dies wiederum auch als eine Zergliederung des Textes aufgefasst werden. Im Ergebnis erhält man einenBaum, wie den rechts gezeigten. Neben der zeichnerischen Form werden auch geklammerte Darstellungen für Syntaxbäume verwendet:
Technisch bezeichnet man den nebenstehenden Baum auch alskonkreten Ableitungsbaum, da er die resultierende Struktur anhand des konkreten Textes exakt darstellt. In der Linguistik sind jedoch auch Modelle gängig, die mehrere Schichten der Repräsentation vorsehen (z. B. Oberflächen- undTiefenstruktur).
Oftmals werden die Knoten des Baums mit Attributen angereichert (in der Linguistik sind dies dann vor allemmorphologische Kategorien).[1] Man erhält so einenattributierten Syntaxbaum mit zugehörigerattributierter Grammatik. Während in den ersten beiden Baumdarstellungen einekontextfreie Grammatik verwendet wird, kommt in letzterer dieKontextabhängigkeit zum Tragen. Diese Unterschiede spiegeln sich in derChomsky-Hierarchie wider. Im Compilerbau spricht man in solchen Fällen bereits vonsemantischer Analyse.
Ableitungsbäume
[Bearbeiten |Quelltext bearbeiten]Man betrachte einekontextfreie Grammatik.Ein Ableitungsbaum dazu ist einBaum, dessen Knoten mit Symbolen aus (alsoTerminal- und Nichtterminalsymbolen und demleeren Wort) beschriftet sind. Der Baum istgeordnet, d. h. die Kinder jedes Knotens haben eine feste Reihenfolge, und für die Beschriftung gilt:
- DieWurzel ist mit dem Startsymbol beschriftet.Diese Eigenschaft wird gelegentlich nicht verlangt. Ein Baum, der sie erfüllt, wird alsvollständiger Ableitungsbaum bezeichnet.
- Wenn die Kinder eines mit beschrifteten inneren Knotens mit den Symbolen (in dieser Reihenfolge) beschriftet sind, muss die Grammatik die Regel enthalten.
- DieBlätter des Baumes sind mit Symbolen aus beschriftet.
- Ist ein Blatt mit gekennzeichnet, so ist es der einzige Nachfolger seines Vorgängerknotens.
Als innere Knoten kommen also nur Nichtterminalsymbole in Frage sowie für die Blätter nur die Terminalsymbole oder das leere Wort.
Konstruktion von Ableitungsbäumen
[Bearbeiten |Quelltext bearbeiten]Mögliche Syntaxbäume/diagramme lassen sich für kurze Texte oft leicht durch Befolgen der Produktionsregeln erstellen.Für längere Texte stehen vielemechanische Verfahren zur Verfügung.
Beispielsweise liegen dem einleitend gezeigten Syntaxdiagramm u. a. folgende Regeln zugrunde:
Um nun einen Ableitungbaum zu erzeugen, kann man die Regeln schrittweise von der Wurzel aus anwenden, indemman systematisch je ein Nonterminal der linken Seite der Regel durch die Symbole auf der rechten Seite ersetzt,bis nur noch Terminale übrig sind:
Bei jedem der Schritte zeichnet man dabei von oben nach unten ein Stück des Syntaxbaums. Man kann die Regeln aber auch umgekehrt anwenden und mit dem niedergeschriebenen Satz beginnen und darüber denBaum schrittweise von unten nach oben aufbauen.
Ableitungsbäume bei ein- und mehrdeutigen Grammatiken
[Bearbeiten |Quelltext bearbeiten]Falls es für ein Wort der Sprache einer Grammatik mehr als einen Ableitungsbaum gibt, spricht man von einermehrdeutigen Grammatik, sonst von einer eindeutigen.Beispielsweise ist die folgende Grammatik mehrdeutig
da man etwa "a a a" in zwei verschiedenen Weisen einteilen kann: "[a a] a" und "a [a a]". Nur eine mögliche Einteilung erlaubt hingegen folgende Grammatik
Bei mehrdeutigen Grammatiken kann die Zahl möglicher Ableitungsbäume für ein und dasselbe Wort mit der Länge des Wortes stark ansteigen. In diesem Fall sind Ableitungsbäume keine geeignete Darstellung für die Gesamtheit möglicher Ableitungen mehr. Bei formalen Sprachen wird die konkrete (Oberflächen-)Grammatik meist eindeutig formuliert. Abstrakte Grammatiken sind dagegen oft mehrdeutig, wobei sich die Eindeutigkeit des abstrakten Ableitungsbaums dann durch den Gang der Analyse aus dem konkreten ergibt.
Abstrakte Syntaxbäume
[Bearbeiten |Quelltext bearbeiten]Für die Darstellung von Syntaxbäumen alsDatenstruktur in einem Rechner wird die Bezeichnungabstrakter Syntaxbaum (engl.: abstract syntax tree (AST)) inzwischen recht einheitlich verwendet, wobei die Terminologie auch hier schwankt und z. B. ebenfalls vonabstrakten Ableitungsbäumen,Operatorbäumen o. Ä. die Rede sein kann. Ein exakter Zusammenhang von abstraktem Syntaxbaum und konkretem Ableitungsbaum wird in der Literatur z. T. angedeutet. Allerdings gehen bei diesen neben einer Vergröberung des Ableitungsbaums auch Erfordernisse der weiteren Verarbeitung mit in den Aufbau ein, so dass eine direkte formale Herleitung aus der Oberflächengrammatik meist im Ergebnis nicht zufriedenstellend ist.
Der kontextfreien Oberflächengrammatik steht dann eineabstrakte Grammatik gegenüber, die im engeren Sinne aber meist einalgebraischer Datentyp ist. Die Syntaxbäume werden dann alsvielsortige Terme technisch repräsentiert. Die Analyse befindet sich dabei im Übergang zwischen grammatischen und algebraisch-logischen Begriffen, so dass hier fließend sowohl von Nonterminalen und Typen oder von Bäumen und Termen die Rede sein kann.
Beispiel
[Bearbeiten |Quelltext bearbeiten]
Die nebenstehende Abbildung zeigt konkrete und abstrakte Syntaxbäume für die nachfolgenden Grammatiken.
konkrete Grammatik | abstrakte Grammatik | algebraischer Typ |
---|---|---|
E :: E "+" T -- Ausdruck :: TT :: T "*" F -- Term :: FF :: V -- Faktor :: N :: "(" E ")"V -- VariableN -- Zahl | E :: E "+" E :: E "*" E :: V :: N | typ E = add(E, E); mul(E, E); var(V); num(N) |
Die konkrete Grammatik in diesem Beispiel muss insbesondere dieAnwendungsreihenfolge von Operatoren auf die (Teil-)Ausdrücke regeln – also dass Punkt- vor Strichrechnung geht und die Teilausdrücke gleicher Priorität von links nach rechts zusammenzufassen sind. Ebenso wird mit Klammerausdrücken die Möglichkeit angeboten, eine andere Zusammenfassung zu bewirken. Dies sind zusammen mit bestimmten Terminalen (hier "(", ")", "+", "*") lediglich Eigenschaften der syntaktischen Oberfläche, die in der späteren Analyse und Weiterverarbeitung keine Rolle mehr spielen. Insbesondere kann auf die Unterscheidung in verschiedene Arten von Ausdrücken (hier E, T und F) sowie die Schlüsselworte völlig verzichtet werden, wie man am abstrakten Syntaxbaum sieht, der auch deutlich näher am "Inhalt" des Ausdrucks ist. Ferner werden konkrete Ableitungsbäume wegen dieser Oberflächendetails nicht nur schnell unübersichtlich, sondern belegen auch als Datenstruktur im Rechner durch ihre Details mehr Speicherplatz als nötig. Dies schlägt sich ebenfalls in der Laufzeit und Kompliziertheit der Programme nieder, die später den Ableitungsbaum weiter verarbeiten sollen. Auch aus technischen Gründen wird die Zergliederung eines Quelltextes daher meist nicht durch einen konkreten Ableitungsbaum dargestellt.
Darstellung abstrakter Syntaxbäume
[Bearbeiten |Quelltext bearbeiten]Neben der im Beispiel gezeigten graphischen Darstellung als (Operator-)Baum werden abstrakte Syntaxbäume technisch auch alsTerme notiert, z. B.:mul(var('a'), add(var('b'), num(3)))
.
Abstrakte Grammatik
[Bearbeiten |Quelltext bearbeiten]Während abstrakte SyntaxbäumeDatenstrukturen sind und algebraische Typen bei ihnen in die Rolle der Grammatik treten, wird in der Literatur, speziell im Zusammenhang mit Kalkülen oft nur eine vergröberte, mehrdeutige Grammatik angegeben, die, wie in obigem Beispiel gezeigt, zwar dieselbe Struktur wie die Terme haben, aber noch Schlüsselworte enthalten. Diese Form ermöglicht eine dann vor allem eine angenehme Niederschrift abstrakter Syntaxbäume, die der eigentlichen Quelle oft sehr nahe ist. Meist wird einleitend darauf hingewiesen, dass zur Vereindeutigung Klammern gesetzt werden dürfen. Ein abstrakter Syntaxbaum für das obige Beispiel würde dann tatsächlich alsa * (b + 3)
niedergeschrieben. Im Kontext dieser Literatur liegt der Blick dabei aber stets auf dem Term. Wie erwähnt, werden die Grenzen zwischen Grammatik und Algebra durch ein Spiel mit der Form verwischt.
Ein typisches Beispiel sind die Ausdrücke imLambda-Kalkül, deren abstrakte Grammatik oft nur knapp als niedergeschrieben wird. Dieselbe Technik wird aber auch für umfangreiche Grammatiken eingesetzt.
Literatur
[Bearbeiten |Quelltext bearbeiten]- Ingo Wegener:Theoretische Informatik. Eine algorithmenorientierte Einführung. B.G. Teubner, Stuttgart,ISBN 3-519-02123-4, 6.1 Beispiele kontextfreier Sprachen und Syntaxbäume,S. 147–148.
- Uwe Schöning:Theoretische Informatik – kurz gefasst. 5. Auflage. Spektrum Akademischer Verlag, Heidelberg,ISBN 978-3-8274-1824-1, 1.1.4 Syntaxbäume,S. 15–17.
- Juraj Hromkovič:Theoretische Informatik. Formale Sprachen, Berechenbarkeit, Komplexitätstheorie, Algorithmik, Kommunikation und Kryptographie. 3. Auflage. B.G. Teubner Verlag, Heidelberg,ISBN 978-3-8351-0043-5, 10.4 Kontextfreie Grammatiken und Kellerautomaten,S. 378.
- Hans Zima:Compilerbau I. Analyse. Bibliographisches Institut, Mannheim/Wien/Zürich 1982,ISBN 3-411-01644-2, 4.3 Abstrakte Bäume und ihre Attributierung,S. 216–229.
- Stefan Müller:Grammatical Theory. From transformational grammar to constraint-based approaches. 2. Auflage. Language Science Press, Berlin 2018,ISBN 978-3-96110-074-3,Kap. 2 (langsci-press.org).
Weblinks
[Bearbeiten |Quelltext bearbeiten]Einzelnachweise
[Bearbeiten |Quelltext bearbeiten]- ↑ Müller (2018), S. 59f.