Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Ableitung (Informatik)

Eine formale Grammatik ist ein mathematisches Modell, das eine Menge solcher ableitbaren Wörter festlegt. Diese Menge nennt man eine formale Sprache. Das …

Inhalt5 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Grammatik, Satzformen und Regeln
  3. 3. Vom Schritt zur erzeugten Sprache
  4. 4. Beispiele für Grammatiken
  5. 5. Parsen und Rechtsableitungen

Grundidee und Bedeutung

Eine Ableitung ist in der theoretischen Informatik der Vorgang, mit den Regeln einer formalen Grammatik ein Wort zu erzeugen. Ein Wort ist dabei eine beliebige endliche Zeichenkette. Die Grammatik legt fest, welche Wörter erzeugbar sind; ihre Gesamtheit heißt formale Sprache.

Man beginnt mit einem besonderen Startsymbol und ersetzt anschließend nach passenden Regeln Teile der Zeichenkette. Zwischenergebnisse dürfen neben den endgültigen Zeichen auch besondere Symbole enthalten. Endet der Vorgang in einer Zeichenkette, die nur noch aus den vorgesehenen endgültigen Zeichen besteht, ist das Wort abgeleitet.

Ob ein Wort zu einer Sprache gehört, heißt Wortproblem. Eine gefundene Ableitung ist zugleich ein mathematischer Beweis dafür, dass das Wort zur Sprache der Grammatik gehört. Bei kontextfreien Grammatiken kann eine Ableitung als Ableitungsbaum dargestellt werden. Mehrere Ableitungen eines Wortes mit unterschiedlichen Ableitungsbäumen machen die Grammatik mehrdeutig.

Grammatik, Satzformen und Regeln

Eine Chomsky-Grammatik wird als G = (V,T,P,S) beschrieben. T ist das endliche Alphabet der Terminale: Zeichen der erzeugten Sprache, die nicht weiter abgeleitet werden. V ist das gesamte Vokabular. Die Nichtterminale sind N := V\setminus T; sie müssen noch in Terminale umgewandelt werden und heißen gelegentlich Variablen. Das Startsymbol S ist ein Nichtterminal. Ein Zeichen kann nicht zugleich Terminal und Nichtterminal sein. P bezeichnet die Produktionsregeln.

Alternativ schreiben manche Autoren G = (N,T,P,S) und fordern N\cap T=\emptyset.

Eine Satzform x ist jede Folge aus Terminalen und Nichtterminalen: x\in(N\cup T)^{}=V^{}. Eine Regel p=(\alpha,\beta) wird als \alpha\rightarrow\beta notiert. Bei w=w_{1}\alpha w_{2}\in V^{+} und \alpha\rightarrow\beta\in P entsteht durch einen Schritt w'=w_{1}\beta w_{2}. Dies wird w\rightsquigarrow w' oder w\Rightarrow_{G}w' geschrieben; mit Regelangabe auch w\rightsquigarrow_{\alpha\rightarrow\beta}w'. Welche Formen für \alpha und \beta erlaubt sind, hängt vom Grammatiktyp ab.

Vom Schritt zur erzeugten Sprache

Ein Ableitungsstück ist eine endliche Folge von Satzformen, bei der jede nächste aus der vorherigen durch einen Ableitungsschritt entsteht: w_{0}\rightsquigarrow_{G}w_{1}\rightsquigarrow_{G}\dotsb\rightsquigarrow_{G}w_{n}. Mehrere Schritte fasst man als w{\rightsquigarrow_{G}}^{}w' zusammen. Formal gilt {\rightsquigarrow_{G}}^{}=\bigcup_{n\in\mathbb{N}{0}}{\rightsquigarrow{G}}^{n}.

Eine Ableitung beginnt mit S und endet mit einem Wort aus T^{}, also ohne Nichtterminale. Eine Ableitung in n Schritten hat die Form S{\rightsquigarrow_{G}}^{n}w_{n}; ohne Angabe der Schrittzahl schreibt man S{\rightsquigarrow_{G}}^{}w.

Die von G erzeugte Sprache ist genau die Menge der so erreichbaren Terminalwörter: L(G):={w\in T^{}\mid S{\rightsquigarrow_{G}}^{}w}. Auf eine Satzform können im Allgemeinen mehrere Produktionen passen; außerdem kann dieselbe Regel an mehreren Stellen anwendbar sein.

Beispiele für Grammatiken

Für Palindrome über T={a,b,c} genügt ein Nichtterminal S mit den Regeln S\rightarrow aSa, S\rightarrow bSb, S\rightarrow cSc, S\rightarrow a, S\rightarrow b, S\rightarrow c, S\rightarrow\epsilon. \epsilon ist das leere Wort. Damit lassen sich alle Palindrome aus a, b und c erzeugen, zum Beispiel: S\rightsquigarrow aSa\rightsquigarrow abSba\rightsquigarrow abcScba\rightsquigarrow abcacba.

Positive gerade Ganzzahlen mit beliebig vielen führenden Nullen können mit T={0,...9}, N={A,S} und Startsymbol S erzeugt werden. Es gelten S\rightarrow A0|A2|A4|A6|A8 sowie A\rightarrow A0|A1|A2|A3|A4|A5|A6|A7|A8|A9|\epsilon. Die letzte Ziffer bleibt gerade; A erzeugt davor beliebig viele Ziffern und verschwindet schließlich durch A\rightarrow\epsilon. Beispielsweise führt S\rightsquigarrow A2\rightsquigarrow A42\rightsquigarrow42. Andere Zahlen sind mit diesen Regeln nicht erzeugbar.

Die Strichzahlensprache wird etwa durch G_{3}=({Z,i},{i},{Z\rightarrow i,Z\rightarrow iZ},Z) erzeugt. Für fünf Striche gilt Z\rightsquigarrow iZ\rightsquigarrow iiZ\rightsquigarrow iiiZ\rightsquigarrow iiiiZ\rightsquigarrow iiiii. Jede Strichzahl hat hier genau eine Ableitung; alle sind Rechtsableitungen. Die Grammatik G_{4}=({Z,i},{i},{Z\rightarrow i,Z\rightarrow ZZ},Z) erzeugt dieselbe Sprache, kann aber bei mehreren Z unterschiedliche Ersetzungsstellen offenlassen. Diese werden durch die Angabe einer Rechtsableitung oder des Henkels (englisch handle) eindeutig.

Parsen und Rechtsableitungen

Parsen ist der umgekehrte Vorgang: Zu einem gegebenen Wort wird eine mögliche Ableitung gesucht. Automaten prüfen dabei, ob das Wort aus den Regeln entstanden sein kann. Besonders wichtig ist dies für die Syntaxprüfung von Programmiersprachen. Da diese häufig kontextfreie Sprachen sind, wird ein Kellerautomat benötigt.

Eine Rechtsableitung ersetzt in jedem Schritt das am weitesten rechts stehende Nichtterminal. Dieser Begriff gilt nur für kontextfreie Grammatiken (Chomsky-Grammatiken vom Typ 2). Dort hat jede Produktion die Form A\rightarrow\alpha: Links steht ein einzelnes Nichtterminal, rechts darf eine beliebige Folge stehen. Bei Rechtsableitungen reicht die Reihenfolge der verwendeten Produktionen aus, um alle Ersetzungsstellen und das Ergebnis eindeutig festzulegen.

Rechtsableitungen sind im Compilerbau wichtig, weil für LR(k)-Sprachen eine effiziente Syntaxanalyse darauf beruht. Analog ersetzt eine Linksableitung stets das am weitesten links stehende Nichtterminal. Sie ist für die Syntaxanalyse von LL(k)-Grammatiken bedeutsam, hat aber insgesamt eine geringere Rolle als die auf Rechtsableitungen beruhende Klasse der LR(k)-Grammatiken. Die Asymmetrie folgt aus der Konvention, Eingabezeichenketten von links nach rechts zu lesen und zu verarbeiten.

Lernvideos zu Ableitung (Informatik)

Weiterlesen

Theoretische Informatik Ihre Inhalte sind die Automatentheorie, die Theorie der formalen Sprachen, die Berechenbarkeits- und Komplexitätstheorie, aber auch die Logik und formale … Formale Grammatik Formale Grammatiken werden mithilfe von Semi-Thue-Systemen angegeben in der Chomsky-Hierarchie klassifiziert. Symbol Religiöse Symbole sind konstitutive Elemente religiöser Identifikation, Sprache und Handlungen. ... Mythen, Symbole und Zeichen in Kultur, Religion, Kunst … Formale Sprache Eine formale Sprache ist eine abstrakte Sprache, bei der im Unterschied zu natürlichen Sprachen oft nicht die Kommunikation im Vordergrund steht, … Wortproblem (Berechenbarkeitstheorie) Für die Chomsky-Hierarchie ist bekannt: Das Wortproblem für Typ-0-Sprachen ist rekursiv aufzählbar und nicht entscheidbar. Das Wortproblem für Typ-1 … Kontextfreie Grammatik In der Theorie der formalen Sprachen ist eine kontextfreie Grammatik (englisch context-free grammar, CFG) eine formale Grammatik, die nur solche … Syntaxbaum Ein Syntax-, Ableitungs- oder Parsebaum. Er bezeichnet eine hierarchische Darstellung der Zergliederung eines Textes. Syntaxdiagramm u. Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten. Quelltext Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer … Chomsky-Hierarchie Sie ist eine Hierarchie von Klassen formaler Grammatiken, die formale Sprachen erzeugen, und wurde 1956 erstmals von Noam Chomsky beschrieben. Die … Alphabet (Informatik) Sie stellen das Zeicheninventar für Wörter zur Verfügung und bilden damit die Grundlage für formale Sprachen. Man muss unterscheiden zwischen dem Alphabet aus … Menge (Mathematik) Der Begriff der Menge (englisch set, französisch ensemble, spanisch conjunto) ist ein grundlegender Begriff der Mathematik. Damit eng verwandt ist der …