Von der Sprache zum Programm

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Programmiersprachen Eine allgemeine Übersicht der gängigsten Sprachen und ihrer Einteilung Gabriel Bretschner IG08 Fach: Informatiksysteme Einleitung Definition.
Vorlesung Compilertechnik Sommersemester 2008
Vorlesung Compilertechnik Sommersemester 2008
Programmierung 1 - Repetitorium
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Technische Universität Dortmund
Technische Universität Dortmund
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
Martin Schneider, Folien von Prof. H.-P. Gumm
8. Formale Sprachen und Grammatiken
Imperative Programmierung
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Notationen A = ist eine endliche, nichtleere menge,
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Kapitel 4 Syntaktische Analyse: LR Parsing.
Parser generieren Yet Another Compiler – Compiler YACC.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Parser - Verfahren: Rekursiver Abstieg
Java: Grundlagen der Objektorientierung
CFGs und Kellerautomaten
Java- Syntax.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (06 – Reduktion endlicher Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (12 – Kellerautomaten, PDA) Prof. Dr. Th. Ottmann.
PS: Basisinformationstechnologie Jens Alvermann
Basisinformationstechnologie I Dozent T.Schaßan Ableitungsbaum Referentin: Munkhnast Dembereldalai.
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering.
Beispiele für Ausdrucksalgebren
Agenda Motivation Formale Sprachen Compiler Compilerentwicklung
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Programmierkurs JAVA zusätzliche, ergänzende Lehrveranstaltung
Testen und Analysieren von Software Fehlerbehebung und Re-Engineering Vorbemerkungen zu Themen #04 - #06 WS 2002/2003 Univ.-Prof. em. Dr. H.-J. Hoffmann.
Christian Schindelhauer
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
DVG Einführung in Java1 Einführung in JAVA.
© 2003 Pohlig Informatikgrundkurs (Pohlig-Häberle) 1 5.Was ist eine Syntax? – Ein bierseliger Bayer im Himmel 5.1 Syntax des frohlockenden Bayern Alois.
© 2004 Pohlig - Taulien Dokumentation mit JavaDoc.
Berechenbarkeit. Fragestellungen Können Computer alles ausrechnen? Kann man alles ausrechnen? Was kann man berechnen? Was nicht? Was heißt Berechenbarkeit?
Grundkonzepte Java - Klassendefinition
RDF MT Resource Description Framework Model Theory © 2002 by Emir Blažević
Interpreter Seminar Entwurfsmuster Tobias Webelsiep
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Syntaxanalyse Bottom-Up und LR(0)
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Programmieren in C Einführung
Akzeptor & Sprache.
Entwurf und Implementierung eines Scanner-Generatorsystems
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Städtisches Gymnasium Beverungen Friedel Berlage
Noam CHOMSKY, Sheila GREIBACH
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
Mensch – Maschine - Kommunikation
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
7. Formale Sprachen und Grammatiken
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Semantische Analyse und attributierte Grammatiken
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Anmerkung des Autor Diese Präsentation ist mit Powerpoint für MacOS erstellt. Leider ist sie nicht vollständig mit Powerpoint für Windows kompatibel.
Information - syntaktisch
Robin Sedlaczek | Chief Technical Officer at Fairmas GmbH robinsedlaczek robinsedlaczek.wordpress.com.
Sprachen und Programmiersprachen
Vo#1:Semantik als Wissenschaft Semantik I Matej-Bel-Universität in Banská Bystrica Zuzana Tuhárska.
 Präsentation transkript:

Von der Sprache zum Programm 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 Ein Compiler übersetzt ein Programm in Maschinencode. lexikalische Analyse syntaktische Analyse semantische Analyse Adressvergabe Befehlsauswahl Maschinencode- generierung Analyseteil Syntheseteil

...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); }

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?

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.

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.

Parsing theoretisch 2 Top-Down-Zerlegung:

Parsing theoretisch 3 Bottom-Up-Zerlegung:

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.

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

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>

Viel Glück bei der BIT-Klausur! 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“