Rechtsableitung

Rechtsableitung

Eine Rechtsableitung (auch rechtskanonische Ableitung, engl: rightmost derivation) ist in der Theoretischen Informatik eine Folge von Ableitungsschritten, bei der stets das am weitesten rechts stehende sogenannte Nichtterminalsymbol durch Anwendung einer Produktionsregel ersetzt wird. Sie ist für den Compilerbau wichtig, weil mit ihr der Syntaxbaum für eine bestimmte Klasse von Programmiersprachen (LR(k) Sprachen) einfach zu berechnen ist.

Um formale Sprachen, wie zum Beispiel Programmiersprachen, zu erzeugen, werden formale Grammatiken aufgestellt, mit denen ihren Produktionsregeln entsprechend Wörter abgeleitet und erzeugt werden können. Die Rechtsableitung ist eine Folge von Schritten, die von einem Startsymbol ausgehend ein Wort der formalen Sprache erzeugt. In den formalen Grammatiken werden die sogenannten Nichtterminalsymbole abgeleiteter Wörter verwendet, um die innere Struktur der Sprache zu beschreiben. Diese Nichtterminalen könnten (in kontextfreien Grammatiken) an jeder Stelle eines Wortes ersetzt werden. Im Fall der Rechtsableitung legt man sich darauf fest, immer den rechtesten Nichtterminalen zu ersetzen. Wenn immer der linkeste ersetzt wird, spricht man entsprechend von Linksableitung.

Inhaltsverzeichnis

Beispiel

Es sei G = (N,T,P,S) eine Grammatik mit den Nichtterminalsymbolen N = {E}, den Terminalsymbolen T = {a,b,c, + , * ,(,)}, dem Startsymbol S = E und den folgenden Produktionsregeln P:

\begin{align}\\
(1) E &\rightarrow E+E \\
(2) E &\rightarrow E*E \\
(3) E &\rightarrow (E) \\
(4) E &\rightarrow \mathrm a \\
(5) E &\rightarrow \mathrm b \\
(6) E &\rightarrow \mathrm c \\
\end{align}

Es gibt zwei Rechtsableitungen für das Wort a + b * c, was zeigt, dass die Grammatik mehrdeutig und dementsprechend ungeeignet zur Beschreibung einer formalen Sprache ist.

Rechtsableitung 1:

\begin{align}\\
E & =(1)\rightarrow E+E\\
  & =(2)\rightarrow E+E*E\\
  & =(6)\rightarrow E+E*c\\
  & =(5)\rightarrow E+b*c\\
  & =(4)\rightarrow a+b*c\\
\end{align}

Rechtsableitung 2:

\begin{align}\\
E & =(2)\rightarrow E*E\\
  & =(6)\rightarrow E*c\\
  & =(1)\rightarrow E+E*c\\
  & =(5)\rightarrow E+b*c\\
  & =(4)\rightarrow a+b*c\\
\end{align}

Wenn es für eine Sprache keine Grammatik gibt, die nur eine Rechtsableitung für jedes Wort der beschriebenen Sprache besitzt, spricht man von einer Inhärent mehrdeutigen Sprache. Mit einer eindeutigen Grammatik kann der zu der Ableitung passende Syntaxbaum mit einem LR-Parser erzeugt werden.

Quellen

Weblinks

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Ableitung (Informatik) — Als Ableitung wird in der theoretischen Informatik der Vorgang bezeichnet, ein Wort nach den Regeln einer formalen Grammatik zu erzeugen. Unter einem Wort versteht man eine beliebige Zeichenkette, also eine endliche Folge von Symbolen. Eine… …   Deutsch Wikipedia

  • Abgeleiteter Funktor — Im mathematischen Teilgebiet der Kategorientheorie ist ein abgeleiteter Funktor (auch: derivierter Funktor) eines links oder rechtsexakten Funktors ein Maß dafür, wie weit dieser von der Exaktheit abweicht. Die Bezeichnung rührt daher, dass… …   Deutsch Wikipedia

  • Ableitungsbaum — Ein Syntax , Ableitungs oder Parsebaum ist ein Begriff aus der theoretischen Informatik und bezeichnet eine baumförmige Darstellung einer Ableitung. Man betrachte eine kontextfreie Grammatik . Ein Ableitungsbaum dazu ist ein Baum, dessen Knoten… …   Deutsch Wikipedia

  • Derivierter Funktor — Im mathematischen Teilgebiet der Kategorientheorie ist ein abgeleiteter Funktor eines links oder rechtsexakten Funktors ein Maß dafür, wie weit dieser von der Exaktheit abweicht. Die Bezeichnung rührt daher, dass analog dazu die Ableitungen einer …   Deutsch Wikipedia

  • Parsebaum — Ein Syntax , Ableitungs oder Parsebaum ist ein Begriff aus der theoretischen Informatik und bezeichnet eine baumförmige Darstellung einer Ableitung. Man betrachte eine kontextfreie Grammatik . Ein Ableitungsbaum dazu ist ein Baum, dessen Knoten… …   Deutsch Wikipedia

  • Linksableitung — Eine Rechtsableitung ist nach einer formalen Grammatik eine Ableitung eines Wortes w0 in wn, bei der in jedem Ableitungsschritt von wi in wi + 1 ( und i < n) stets das rechteste Nichtterminalsymbol von wi ersetzt wird. Eine Linksableitung ist… …   Deutsch Wikipedia

  • Rechtsreduktion — ist ein Begriff aus der Theoretischen Informatik und bezeichnet eine umgedrehte Rechtsableitung. Beim Bottom Up Parsing werden keine Ableitungen vom Startsymbol der Grammatik aus zur Eingabe berechnet, sondern Reduktionen von der Eingabe zum… …   Deutsch Wikipedia

  • Reduktion (Formale Sprachen) — Eine Ableitung ist in der Theoretischen Informatik eine Folge von Ableitungsschritten, die anhand einer formalen Grammatik ein Wort einer formalen Sprache erzeugt. Zur übersichtlichen Darstellung dieser Schritte verwendet man häufig Syntaxbäume.… …   Deutsch Wikipedia

  • Syntaxbaum — Ein Syntax , Ableitungs oder Parsebaum ist ein Begriff aus der theoretischen Informatik und bezeichnet eine baumförmige Darstellung einer Ableitung. Man betrachte eine kontextfreie Grammatik . Ein Ableitungsbaum dazu ist ein Baum, dessen Knoten… …   Deutsch Wikipedia

  • AtoCC — Entwickler Michael Hielscher Aktuelle Version 1.31 (17. September 2010) Betriebssystem Microsoft Windows Kategorie Lernumgebung Lizenz …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”