16.09.2017 Aufrufe

Vorkurs Informatik

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

18<br />

Formale Sprachen und Compiler<br />

Rechner werden heutzutage meist in einer höheren Programmiersprache, wie zum Beispiel Java,<br />

programmiert. Auf der anderen Seite haben Prozessoren nach wie vor eine erheblich einfacher<br />

strukturierte Maschinensprache. Damit ein Programm, das in einer höheren Programmiersprache<br />

geschrieben ist, auf einem Rechner ausführbar wird, muss es in Maschinenbefehle überführt<br />

werden. Diese Überführung wird in der Regel von Compilern geleistet. Ein Beispiel ist der Java-<br />

Compiler, in dessen Verwendung im Teil 1.2 „Programmierung“ eingeführt wurde. In diesem<br />

Kapitel soll ein erster Eindruck von der inneren Arbeitsweise von Compilern gegeben werden.<br />

Abschnitt 18.1 führt in die Gegebenheiten der Überführung von Programmen höherer Programmiersprachen<br />

in Maschinensprache ein. Ein wesentliches Hilfsmittel bei der Entwicklung von<br />

Compilern ist die Theorie der formalen Sprachen. Wie bei natürlichen Sprachen wird die Struktur<br />

der Sprache, die üblicherweise als Syntax bezeichnet wird, durch eine Grammatik beschrieben.<br />

Abschnitt 18.2 stellt die in der <strong>Informatik</strong> häufig benutzten Grammatiken nach Chomsky vor,<br />

die, wie in Abschnitt 18.3 dargelegt wird, zu Klassen formaler Sprachen nach Chomsky führen.<br />

Compiler führen in der Regel eine Analyse der Syntax eines Programms aus, deren Ergebnis<br />

darstellt, welche Regeln der Grammatik der zugrundeliegenden Programmiersprache angewendet<br />

werden müssen, um das gegebene Programm zu erhalten. Aufbauend darauf setzt der Compiler<br />

das Zielsprachenprogramm zusammen. Wir illustrieren dies in Abschnitt 18.4 anhand eines<br />

Beispiels in vereinfachender Weise.<br />

Eine Möglichkeit, die Syntaxanalyse durchzuführen, bietet das Konzept der Automaten. Automaten<br />

sind im Prinzip Gegenstücke der Grammatiken. Abschnitt 18.5 gibt eine Übersicht zum<br />

Konzept der Automaten. In Abschnitt 18.6 gehen wir etwas genauer auf einen Automatentypen,<br />

die endlichen Automaten, ein.<br />

Neben der Syntax gibt es die Semantik, die Aussagen in einer Sprache zugeordnet und sich mit<br />

der inhaltlichen Bedeutung von Aussagen in einer Sprache befasst. Der Abschnitt 18.7 gibt eine<br />

kurze Einführung in dieses Konzept.<br />

18.1 Compiler<br />

Ein Compiler übersetzt ein gegebenes Programm, das üblicherweise in einer höheren Programmiersprache<br />

geschrieben ist, in ein Programm in einer anderen, normalerweise einfacher strukturierten<br />

Sprache, z.B. Assembler oder Maschinensprache. Ein Compiler ist selbst wiederum ein<br />

H. Müller, F. Weichert, <strong>Vorkurs</strong> <strong>Informatik</strong>,<br />

DOI 10.1007/978-3-8348-2629-9_18, © Springer Fachmedien Wiesbaden 2013

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!