16.09.2017 Aufrufe

Vorkurs Informatik

Erfolgreiche ePaper selbst erstellen

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

292 18 Formale Sprachen und Compiler<br />

Bei anderen Programmiersprachen, z.B. Pascal, ist eine andere Grammatik-Notation gebräuchlich,<br />

die ein Zwischending zwischen der Java-Notation und unserer Notation darstellt, die sogenannte<br />

Backus-Naur-Form (BNF-Form) 2 . Eine andere, stärker grafisch orientierte Form zur<br />

Darstellung von Regeln haben wir bereits im Abschnitt 4.2.2 anhand der Syntaxdiagramme kennengelernt.<br />

Zusammenfassung 18.5 (Grammatiktypen nach Chomsky):<br />

• Chomsky-Typ-0-Grammatik:<br />

alle Grammatiken<br />

• Chomsky-Typ-1-Grammatik (kontextsensitive Grammatiken):<br />

Für alle Regeln w → w ′ ist w nicht länger als w ′ .<br />

• Chomsky-Typ-2-Grammatik (kontextfreie Grammatiken):<br />

Typ-1-Grammatiken, für die alle Regeln die Form X → w haben, wobei X ein Variablenzeichen<br />

ist.<br />

• Chomsky-Typ-3-Grammatik:<br />

Typ 2-Grammatiken, für die alle Regeln die Form X → x oder X → xY haben, wobei<br />

X, Y Hilfszeichen und x ein Endzeichen sind.<br />

Aufgabe 18.4:<br />

Welchen Chomsky-Typ haben die in den Abbildungen 18.1 beziehungsweise 18.2 dargestellten Grammatiken?<br />

18.4 Übersetzung<br />

In diesem Kapitel wollen wir auf die Arbeitsweise von Compilern eingehen. Ein Compiler übersetzt<br />

ein Programm, das in einer höheren Programmiersprache geschrieben ist, in eine maschinennahe<br />

Programmiersprache, z.B. Assembler oder Maschinensprache. Im Folgenden soll illustriert<br />

werden, wie dabei vorgegangen werden kann.<br />

Die Grundidee ist, für Produktionsregeln der zu übersetzenden Sprache, der sogenannten Quellsprache,<br />

Übersetzungsaktionen zu definieren, die den Produktionsregeln jeweils ein Programmstück<br />

in der Sprache, in die übersetzt werden soll, die sogenannte Zielsprache, zuordnen.<br />

Abbildung 18.5 illustriert dies exemplarisch. Die Quellsprache besteht aus geklammerten arithmetischen<br />

Ausdrücken mit n Variablen. Das Alphabet umfasst dabei die Variablen a 1 ,...,a n , die<br />

arithmetischen Operationen + und ∗ sowie ( und ). Die Hilfszeichenmenge enthält E, T und F,<br />

wobei E das ausgezeichnete Startsymbol repräsentiert. Ergänzend sind in Abbildung 18.5 ebenfalls<br />

die Produktionsregeln aufgeführt.<br />

Die Zielsprache ist eine einfache Maschinensprache, deren Befehlssatz aus den folgenden Operationen<br />

besteht: „hole a,b“, „addiere a,b,c“, „multipliziere a,b,c“. Die hole-Anweisung ent-<br />

2 A. V. Aho, R. Sethi, J. D. Ullman, Compilerbau I und II, Oldenbourg, 1999.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!