22.08.2013 Aufrufe

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

Grundlagen der Informatik I “Programmierung”

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

möglichen Alternativen auf <strong>der</strong> rechten Seite sind mittels | getrennt. Sie werden als syntaktische Alternativen<br />

bezeichnet. Falls auf <strong>der</strong> rechten Seite einer Regel (also auch <strong>der</strong> Startregel) ein Non-Terminalsymbol<br />

auftritt, wird dieses durch eine <strong>der</strong> Alternativen auf <strong>der</strong> rechten Seite einer Regel ersetzt, bei <strong>der</strong> dieses<br />

Non-Terminalsymbol links steht. Terminalsymbole werden direkt Bestandteil des zu konstruierenden Satzes.<br />

In einem konkreten Satz erscheinen dabei konkrete Elemente <strong>der</strong> Grundmengen Namen und Kostanten. In<br />

unserem Beispiel mit Peter und dem Apfel, wären Subjekt, Prädikat und Objekt Grundmengen, die in diesem<br />

Satz verwendeten Elemente wären Peter (als Element <strong>der</strong> Menge Subjekt), ißt (als Element <strong>der</strong> Menge<br />

Prädikat) und einen Apfel (als Element <strong>der</strong> Menge Objekt). Dieser Prozeß wird solange fortgeführt, bis alle<br />

Non-Terminalsymbole durch Terminalsymbole ersetzt sind. Dabei kann jede Regel beliebig häufig (d.h. auch<br />

gar nicht) angewandt werden, vorausgesetzt, ihre linke Seite ’paßt’. Das folgende Beispiel enthält den Nachweis,<br />

daß <strong>der</strong> Satz a ∗ b + c eine syntaktisch korrekte Formel ist, d.h., daß er mit <strong>der</strong> obigen Grammatik ableitbar<br />

ist. Dabei steht −→ für ’wird abgeleitet zu’ und die Nummer rechts bezeichnet die verwendete Regel).<br />

Formel −→ Formel + Term [2]<br />

−→ Term + Term [1]<br />

−→ Term ∗ Faktor + Term [5]<br />

−→ Faktor ∗ Faktor + Term [4]<br />

−→ a ∗ Faktor + Term [8]<br />

−→ a ∗ b + Term [8]<br />

−→ a ∗ b + Faktor [4]<br />

−→ a ∗ b + c [8]<br />

In diesem Beispiel werden die mathematischen Ausdrücke in <strong>der</strong> sogenannten Infix-Notation dargestellt. Hierbei<br />

steht <strong>der</strong> Operator zwischen (in) den Operanden. a+b wäre ein typisches Beispiel für die Infix-Darstellung<br />

(o<strong>der</strong> -Notation). Bei Operatoren mit mehr als zwei Operanden ist diese Schreibweise nicht mehr gut verwendbar.<br />

Stattdessen wird in solchen Fällen die Prefix-Darstellung, <strong>der</strong> Operator steht vor den Operanden,<br />

verwendet. In <strong>der</strong> Prefix-Darstellung könnte die zwei-stellige Vergleichsoperation ≥ mit den Parametern a<br />

und b als ≥(a, b) geschrieben werden.<br />

Wenn hier von Syntax die Rede ist, dann gehen wir immer davon aus, daß eindeutig zu identifizieren ist,<br />

welcher Art Objekt ein Wort <strong>der</strong> Sprache ist, d.h. zu welcher Grundmenge es gehört. Dies ist, was die natürliche<br />

Sprache betrifft u.U. eine unzulässige Annahme, wie das folgende Beispiel zeigt:<br />

Peter zieht gerade Linien<br />

Hier ist nicht klar zu entscheiden, ob gerade ein Adjektiv o<strong>der</strong> eine zeitliche Bestimmung ist; sind die Linien, die<br />

Peter zieht, gerade, o<strong>der</strong> ist er just in diesem Augenblick dabei Linien (u.U. krumme) zu ziehen? Ein ähnliches<br />

Problem ergibt sich auch im Fall mehr formaler Sprachen, z.B. Programmiersprachen. Die Anweisung<br />

if a ≤ b then if b ≤ c then x := a else x := c<br />

ist mehrdeutig, da unklar ist, zu welcher if-Anweisung das else gehört. Mithin stellt sich im Fall von a > b<br />

die Frage nach dem Wert von x. Hier muß die Struktur <strong>der</strong> Anweisung eindeutig interpretierbar sein. Wir<br />

gehen hier immer davon aus, daß die Elemente unserer Grundmengen disjunkt sind, d.h., daß jedem Element<br />

des Alphabetes genau eine Menge zugeordnet werden kann und daß die Struktur unserer Sätze eindeutig<br />

erkennbar ist. Letzteres bedeutet, daß die Grammatik die Möglichkeit bieten muß, den Ableitungsprozeß zu<br />

rekonstruieren, d.h. einen Ableitungsbaum zu erstellen.<br />

Ein Ableitungsbaum ist eine Darstellung <strong>der</strong> Ableitung unabhängig von <strong>der</strong> Ersetzungsauswahl. Der Ableitungsbaum<br />

zeigt deutlich die Bindungsregeln, die durch die Grammatikstruktur vorgegeben sind. Falls es zur<br />

Erzeugung eines bestimmten Wortes über einer Grammatik nur eine Folge von Regelanwendungen gibt, dann<br />

bezeichnen wir die Herleitung als eindeutig. Eine eindeutige Herleitung erzwingt dabei auch einen eindeutigen<br />

Ableitungsbaum, während es zu einem Ableitungsbaum durchaus auch mehrere Herleitungen geben kann.<br />

Diese unterscheiden sich dann nur in <strong>der</strong> Reihenfolge ihrer Regelanwendungen. In unserem Herleitungsbeispiel<br />

hatten wir z.B. immer das am weitesten links stehende Non-Terminal-Symbol expandiert, wir hätten

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!