Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parsing Von der Sprache zum Programm. Grundlagen Begriffe: Begriffe: compile - zusammentragen zusammenstellen compile - zusammentragen zusammenstellen.

Ähnliche Präsentationen


Präsentation zum Thema: "Parsing Von der Sprache zum Programm. Grundlagen Begriffe: Begriffe: compile - zusammentragen zusammenstellen compile - zusammentragen zusammenstellen."—  Präsentation transkript:

1 Parsing Von der Sprache zum Programm

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

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

4 ...aber wo genau ist der Parser? ein Beispiel: (in Java) 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: Zusammensetzen der Symbolfolge zu Konstrukt der Sprache: Unser Beispiel 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 Definition Parsing: Zerlegung Prozess der Entscheidung, ob eine Folge von Tokens durch die gegebene Grammatik erzeugt werden kann. 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. Durch rekursive Aufrufe wird ein Zerlegungsbaum oder (parse tree) aufgebaut. Es werden die Top-Down- und die Bottom-Up-Zerlegung unterschieden. 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. 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. Anhand dieses Baumes wird dann Maschinencode erzeugt.

8 Parsing theoretisch 2 Top-Down-Zerlegung: Top-Down-Zerlegung:

9 Parsing theoretisch 3 Bottom-Up-Zerlegung: 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: Bild unseres Syntaxbaumes: Return-Anweisung Ausdruck * Betrag / Zins ReturnSymbol ;

12 Unser Programm in Maschinencode rekursives Auslesen des Syntaxbaumes, jeder Teilbaum wird zu einem Teil des Maschinencodes: rekursives Auslesen des Syntaxbaumes, jeder Teilbaum wird zu einem Teil des Maschinencodes: MethoddoubleVerzinsung(double) 0dload_1 1aload_0 2 getfield #7 5 ldc2_w #8 8ddiv 9dconst_1 Lade das Literal double 1.0> 10dadd 11dmul 12dreturn

13 Vielen Dank Viel Glück bei der BIT-Klausur! Viel Glück bei der BIT-Klausur! mannheim.de/blackboard/vorlesungen/pi2ss03/PI2_6 M22-42.pdf mannheim.de/blackboard/vorlesungen/pi2ss03/PI2_6 M22-42.pdf mannheim.de/blackboard/vorlesungen/pi2ss03/PI2_6 M22-42.pdf mannheim.de/blackboard/vorlesungen/pi2ss03/PI2_6 M22-42.pdf H.-P. Gumm/M. Sommer Einführung in die Informatik H.-P. Gumm/M. Sommer Einführung in die Informatik


Herunterladen ppt "Parsing Von der Sprache zum Programm. Grundlagen Begriffe: Begriffe: compile - zusammentragen zusammenstellen compile - zusammentragen zusammenstellen."

Ähnliche Präsentationen


Google-Anzeigen