1 / 13

Parsing

Parsing. Von der Sprache zum Programm. Grundlagen. Begriffe: compile  - zusammentragen zusammenstellen parse - (Satz) zerlegen, analysieren, (zer)gliedern; (Wort) grammatisch definieren scan - ... u.a. auch in Versfüße zerlegen. Vom Code zum Programm .

neona
Download Presentation

Parsing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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: ReturnSymbolAusdruck 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:

  13. Vielen Dank • Viel Glück bei der BIT-Klausur! • http://www-li5.ti.uni-mannheim.de/blackboard/vorlesungen/pi2ss03/PI2_6M22-42.pdf • H.-P. Gumm/M. Sommer „Einführung in die Informatik“

More Related