Compilerbau - Grundlagen: Analyse

Nach dem Wissen der Informatik entsteht durch das zu Grunde liegende EVA-Prinzip (Eingabe-Verarbeitung-Ausgabe) beim Compiler aus Textzeichen eine Struktur die vom Computer ausführbar ist.

Betrachten wir uns einmal die einzelnen Schritte, die für einen Compiler wichtig sind. Im Kern des Compilerbaus sehen wir uns auf die folgenden Muster reduziert:

  • Analyse
  • Synthese

Wie auch bei natürlichen Sprachen (wie Deutsch, Englisch, Spanisch usw) gibt es Vorschriften, wie ein Satz gebildet wird. Das ist die Grammatik oder auch Syntax genannt.

Und nun im speziellen die Analyse erst einmal im Groben.

  • Analyse
    • von zusammenhängendem Text (sourcecode)
    • Aufbereitung zu einer maschinenlesbaren, und -verarbeitbaren Form
      • Anweisungen (statement)
      • Ausdrücke (expression)
    • Darstellung in Strukturbäumen (syntax tree)

Bis hier sollten sich eigentlich keine wesentlichen Neuheiten für Programmierer die schon etwas Erfahrung aufgetan habe.

Bei einer genaueren Betrachtung aber eine nicht ganz triviale Aufgabe. Ich will mich hier im ersten Teil auf die Analyse beschränken und versuchen das im Modell so weit wie möglich zu skizzieren.

  1. Analyse

    1. Lexikalisch (lexical analysis)

      1. Wortbedeutung:
        • Lexikalisch: zum Wortschatz gehörend
        • Lexikon: der Wortschatz einer Sprache im Gegensatz zur Grammatik
      2. Struktur:
        • E - Quelltext (source code)
          • aus Folge von Schriftzeichen (characters)
        • V - Durchsuchung und Zerlegung (scanning and tokenization)
          • in Symbole aus Vokabular der Sprache
        • A - Folge von Symbolen (tokens/lexemes)
          • bestehend aus z.B.:
            • Bezeichner und Zahlen, Operanden (operands)
            • Satzzeichen
            • Operatoren (operators)
          • Unterscheidung zwischen:
      3. Programme:
        • Lexer
        • Tokenizer
    2. Syntaktisch (syntactic analysis / parsing)

      1. Wortbedeutung:
        • Syntaktisch: den Satzbau betreffend
        • Syntax: die Regeln, mit denen man in einer Sprache aus Wörtern Sätze bilden kann
      2. Struktur:
        • E - Terminal-Symbole
        • V - Übersetzung
          • in leicht erkennbare Struktur
        • A - Syntaxbaum (syntax tree)
      3. Programme:
        • Parser
    3. Semantisch / Typüberprüfung  (semantic analysis / type checking)
      1. Wortbedeutung:
        • Semantisch: zum Wortschatz gehörend
        • Semantik: die Lehre von der Bedeutung der Wörter und Sätze
      2. Struktur:
        • E - Syntaxbaum
        • V - Überprüfung des Regelwerks
        • A - Syntaxbaum, Regelverstöße

Fazit: Für mich für den Anfang ein guter Überblick, der mir ein gutes Verständniss davon gibt, wie so ein Compiler genauer tickt und welche Technischen Entscheidungen hinter den Schritten stehen. Das Buch von Niklaus Wirth aus dem ich die meisten Informationen habe ist im allgemeinen sehr gut lesbar und verständlich. Ein Klassiker und schon etwas angestaubt, aber für die Grundlagen nach wie vor ein ausgezeichnete Quelle.

Quelle: Niklaus Wirth, Grundlagen des Kompilerbaus, 2. Auflage

DotNetKicks-DE Image
Published Dienstag, 14. April 2009 14:54 von Rainer Schuster
Abgelegt unter:

Kommentare

# Unity - Wie funktioniert die Basis ObjectBuilder2?

Mittwoch, 15. April 2009 18:39 von Rainer Schuster

Über die Anforderung mit dem IoC Container Unity UserControls in ASP.NET dynamisch zu laden (per Page

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)