Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Von der Sprache zum Programm

Ähnliche Präsentationen


Präsentation zum Thema: "Von der Sprache zum Programm"—  Präsentation transkript:

1 Von der Sprache zum Programm
Parsing Von der Sprache zum Programm

2 Grundlagen Begriffe: compile - zusammentragen zusammenstellen
parse - (Satz) zerlegen, analysieren, (zer)gliedern; (Wort) grammatisch definieren scan u.a. auch in Versfüße zerlegen

3 Vom Code zum Programm Ein Compiler übersetzt ein Programm in Maschinencode. lexikalische Analyse syntaktische Analyse semantische Analyse Adressvergabe Befehlsauswahl Maschinencode- generierung Analyseteil Syntheseteil

4 ...aber wo genau ist der Parser?
ein Beispiel: (in Java) class Konten { double anfangskapital =1000; double zins =11; static double Verzinsung (double betrag) { return betrag*(Zins/100+1); }

5 Vom Scanner zum Parser Anweisung return betrag*(Zins/100+1); besteht aus: Sonderzeichen * ( + / ) ; Bezeichnern, wie „Betrag“ und „Zins“ Schlüsselwort return Zahlliteral 100 und 1 Der Scanner reduziert die Zeichen um den sog. „whitespace“ und gruppiert zu Gruppen von Symbolen. er überprüft: Sind alle Wörter („Tokens“) legale Wörter der Sprache?

6 Der Parser Zusammensetzen der Symbolfolge zu Konstrukt der Sprache:
Unser Beispiel return betrag*(Zins/100+1); Ist es der Form: ReturnSymbol Ausdruck Semikolon ? ReturnSymbol und Semikolon sind ok. Parser prüft rekursiv: Ausdruck = Bezeichner(„Betrag“), MulOpSysmbol, RundeKlammerAufSymbol, Bezeichner(„Zins“), DivOpSymbol, Zahlliteral(100), PlusOpSymbol, Zahlliteral(1), RundeKlammerZuSysmbol ? Dies ist offensichtlich der Fall, denn es gilt auch: Ausdruck MulOpSymbol Ausdruck.

7 Parsing theoretisch 1 Definition Parsing: Zerlegung
Prozess der Entscheidung, ob eine Folge von Tokens durch die gegebene Grammatik erzeugt werden kann. Durch rekursive Aufrufe wird ein Zerlegungsbaum oder (parse tree) aufgebaut. Es werden die Top-Down- und die Bottom-Up-Zerlegung unterschieden. Die Top-Down-Zerlegung beginnt mit dem Startsymbol der Grammatik, die Bottom-Up-Zerlegung mit dem zu analysierenden Wort der Eingabesprache. Anhand dieses Baumes wird dann Maschinencode erzeugt.

8 Parsing theoretisch 2 Top-Down-Zerlegung:

9 Parsing theoretisch 3 Bottom-Up-Zerlegung:

10 Parsing, theoretisch 4 Grundsätzlich: Sprache muss einfache Zerlegung durch Compiler ermöglichen. „Backtracking“ soll vermieden werden. Strategie: das jeweils nächste Symbol („Token“) im Eingabestrom des Parsers, wie die weitere Zerlegung zu erfolgen hat (lookahead = 1). (kein Backtracking nötig, ein effizienter Parser. Trennzeichen eingeführen, die das Lokalisieren von Syntaxfehlern erleichtern. Beispiel: die Sprache Basic: Es gibt ein eindeutiges Schlüsselwort zu Beginn jeder Anweisung.

11 Parsing: Syntaxbaum Bild unseres Syntaxbaumes: Return-Anweisung
ReturnSymbol Ausdruck ; * Betrag + 1 / Zins 100

12 Unser Programm in Maschinencode
rekursives Auslesen des Syntaxbaumes, jeder Teilbaum wird zu einem Teil des Maschinencodes: Method double Verzinsung(double) dload_1 <Lade double Betrag> 1 aload_0 <Adresse der eigenen Klasse> 2 getfield #7 <Lade Feld double zins> 5 ldc2_w #8 <Lade das Literal double 100.0> 8 ddiv <Dividiere double> 9 dconst_1 Lade das Literal double 1.0> 10 dadd <Addiere double> 11 dmul <Multipliziere Double> 12 dreturn <Ergebnis als double zurückgeben>

13 Viel Glück bei der BIT-Klausur!
Vielen Dank Viel Glück bei der BIT-Klausur! H.-P. Gumm/M. Sommer „Einführung in die Informatik“


Herunterladen ppt "Von der Sprache zum Programm"

Ähnliche Präsentationen


Google-Anzeigen