Übersetzer und sprachverarbeitende Werkzeuge
|
|
- Rüdiger Schenck
- vor 8 Jahren
- Abrufe
Transkript
1 Übersetzer und sprachverarbeitende Werkzeuge Arnd Poetzsch-Heffter AG Softwaretechnik TU Kaiserslautern Sommersemester 07 1
2 1.Kapitel: Einführung Implementierung von Compilern und sprachspezifischen Werkzeugen Anwendungsbereiche & angrenzende Gebiete Implementierungsaufgaben & -techniken Konstruktion sprachspezifischer Werkzeuge: Begriffe, Architektur, Techniken Inhalt der Vorlesung Lernziele der Vorlesung Aufbau von Kapitel 1: Überblick und Umfeld Implementierungsaspekte sprachspezifischer Werkzeuge Inhalt und Lernziele Literatur: R. Wilhelm, D. Maurer: Übersetzerbau. Springer-Verlag A. Appel: Modern Compiler Implementation in Java. Cambridge University Press
3 1.1 Überblick und Umfeld Begriffsklärung: Implementierung sprachspezifischer Werkzeuge: - Verarbeiten Quelltexte bestimmter Sprachen - Analysieren die Quelltexte - ggf. Übersetzung in andere Sprachen Typische Quellsprachen: - Programmiersprachen: C, C++, C#, Java, ML, Cobol, Smalltalk, Prolog,... Skriptsprachen (JavaScript), Kommandosprachen - Sprachen für Konfigurationsmanagement (make,..) - Anwendungs- & werkzeugspezifische Sprachen (Excel, Lex, Max,...) - Spezifikationssprachen (Z, Isabelle/HOL, CASL) - Formatierungs- und Datenbeschreibungssprachen (LaTeX, HTML, XML,...) - Entwurfs- & Architekturbeschreibungssprachen (UML, SDL, VHDL, Darwin,...) 3
4 Typische Zielsprachen: - Assembler- und Maschinensprachen - Programmiersprachen (z.b. C) - Daten- und Layoutbeschreibungssprachen - Sprachen zur Drucksteuerung Implementierung: - Rechner- bzw. Werkzeugunterstützung für die Verarbeitung - Integration ins Systemumfeld - Verbindung zu anderen Sprachen 4
5 Anwendungsbereiche der Techniken: (exemplarisch) Realisierung von Programmierumgebungen: - kontextsensitive Editoren, Klassenbrowser,... - graphische Programmierwerkzeuge - Präprozessoren - Übersetzer - Interpreter - Debugger - Laufzeitumgebung (Laden, Linken, Ausführen, Speicherverwalten) Generierung von Programmen aus Entwurfsdokumenten (UML,... ) Programmverstehen, Reengineering Entwurf und Implementierung anwendungsspezifischer Sprachen: - Robotersteuerung - Simulationswerkzeuge - Tabellenkalkulatoren, aktive Dokumente Web-Technologie: - Analyse von Web-Sites - aktive Webseiten (mit integrierter Funktionalität) - abstrakte Plattformen: JVM,.Net - Optimieren von Caching 5
6 Angrenzende Gebiete: Formale Sprachen, Sprachspezifikation, -entwurf Programmier- und Spezifikationsprachen Programmierung, Softwareentwicklung, SW-Generierung, SW-Architektur Systemsoftware, Rechnerarchitektur gegenseite Wechselwirkung Implementierungsaufgaben: Analyse: Übersetzung: Interpretation: Quellcode Quellcode Quellcode Eingabedaten Analysator Übersetzer Interpreter Analyse- Zielcode Ausgabedaten information häufig Kombination der Aufgaben 6
7 1. Übersetzung: Übersetzer/Compiler realisiert Analyse & Übersetzung BS & reale Maschine realisieren Interpretation Vorteile: effizienteste Lösung ein Interpreter für alle Programmiersprachen auch für andere Lösungen Voraussetzung 2. Direkte Interpretation: Interpreter realisiert alle Aufgaben Beispiele: JavaScript, Kommandosprachen Vorteile: keine Übersetzung nötig (dafür Analyse zur Laufzeit) 3. Abstrakte/virtuelle Maschinen: Übersetzer/Compiler realisiert Analyse & Übersetzung in abstrakten Maschinencode Abstrakte Maschine als Interpreter Beispiele: Prolog/WAM, Java/JVM, C#/CLR Vorteile: Plattformunabhängigkeit (Portabilität, mobilen Code) selbst modifizierende Programme möglich 4. Weitere Kombinationen 7
8 Beispiel: (Analyse) package b1_1 ; class Weltklasse extends Superklasse implement BesteBohnen {Qualifikation studieren ( Arbeit schweiss) { return new Qualifikation ();}} Superklasse.class BesteBohnen.class Qualifikation.class Arbeit.class... javac-analysator b1_1/weltklasse.java:4: '{' expected. extends Superklasse ^ 1 error 8
9 Beispiel 1: (Übersetzung) package b1_1; class Weltklasse extends Superklasse implements BesteBohnen { Qualifikation studieren ( Arbeit schweiss ) { return new Qualifikation(); }} Superklasse.class BesteBohnen.class Qualifikation.class Arbeit.class... javac Compiled from Weltklasse.java class b1_1/weltklasse extends... implements... { b1_1/weltklasse(); b1_1.qualifikation studieren(...); } Method b1_1/weltklasse()... Method b1_1.qualifikation studieren(...)... 9
10 10 Compiled from Weltklasse.java class b1_1/weltklasse extends b1_1.superklasse implements b1_1.bestebohnen { b1_1/weltklasse(); b1_1.qualifikation studieren(b1_1.arbeit); } Method b1_1/weltklasse() 0 aload_0 1 invokespecial #6 <Method b1_1.superklasse()> 4 return Method b1_1.qualifikation studieren(b1_1.arbeit) 0 new #2 <Class b1_1.qualifikation> 3 dup 4 invokespecial #5 <Method b1_1.qualifikation()> 7 areturn Beispiel 1: (Fortsetzung)
11 Beispiel 2: (Übersetzung) int main() { printf("willkommen zur Vorlesung!"); return 0; } gcc.file "hello_world.c".version "01.01" gcc2_compiled.:.section.rodata.lc0:.string "Willkommen zur Vorlesung!".text.align 16.globl main.type main,@function main: pushl %ebp movl %esp,%ebp subl $8,%esp... 11
12 Beispiel 2: (Fortsetzung).file "hello_world.c".version "01.01" gcc2_compiled.:.section.rodata.lc0:.string "Willkommen zur Vorlesung!".text.align 16.globl main.type main: pushl %ebp movl %esp,%ebp subl $8,%esp addl $-12,%esp pushl $.LC0 call printf addl $16,%esp xorl %eax,%eax jmp.l2.p2align 4,,7.L2: movl %ebp,%esp popl %ebp ret.lfe1:.size main,.lfe1-main.ident "GCC: (GNU) (release)" 12
13 Beispiel 3: (Übersetzung) groovy.tex (104 bytes) \documentclass{article} \begin{document} \vspace*{7cm} \centerline{\huge\bf It s groovy} \end{document} latex groovy.dvi (207 bytes, binary)... dvips groovy.ps (7136 bytes) %!PS-Adobe-2.0 %%Creator: dvips(k) %%Title: groovy.dvi... 13
14 Beispiel: (Interpretation).class-Datei iload_1 15 iload_2 16 idiv 17 istore_3... Eingabedaten iload_1 15 iload_2 16 idiv 17 istore_3... Java Virtual Machine (JVM) Ausgabedaten 14
15 Beispiel: (Kombinierte Technik) Kombinierte Implementierungstechnik: Java-Implementierung mit JIT-Übersetzer Java-Übersetzungseinheit (JIT=Just in time) javac Analysator Übersetzer.class-Datei Eingabedaten Java Byte Code JIT-Übersetzer JVM Maschinencode reale Maschine/Hardware Ausgabedaten 15
16 1.2 Aspekte von Sprachimplementierungen Architektur/Phasen von Sprachimplementierungen Aspekte des Übersetzerbaus Architektur und Phasen von Sprachimplementierungen Analyse der Eingabe, d.h. z.b. - des Programms - der Spezifikation - des Diagramms In Abhängigkeit von den weiteren Zielen der Sprachimplementierung z.b.: - Transformation (z.b. XSLT, Refactoring) - Formatierung - semantische Analyse (z.b. Programmverstehen) - Optimierung - Übersetzung im engeren Sinne 16
17 1.2.2 Aspekte des Übersetzerbaus Begriffsklärungen: Übersetzungsaufgabe: Quellcode Übersetzer (im weiteren Sinn) Fehlermeldung Zielcode Übersetzer im weiteren Sinn realisiert: Analyse & Optimierung & Übersetzung Quellcode: Eingabe(-Zeichenreihe) für Übersetzer; sollte der Syntax der Quellsprache (QS) genügen Zielcode: Ausgabe(-Zeichenreihe) des Übersetzer; muss der Syntax der Zielsprache (ZS) genügen 17
18 Zur Übersetzungszeit: während der Übersetzer läuft. Alle Informationen und Aspekte, die schon zur Übersetzungszeit bekannt sind, nennt man statisch. Z.B. Typprüfung der Programms, Konstante Ausdrücke auswerten, Relativadressen festlegen,... Zur Laufzeit: während das übersetze Programm ausgeführt wird. Alle Informationen und Aspekte, die statisch noch unbekannt sind, nennt man dynamisch. Z.B. Allokation von Feldern variabler Größe, Bereichsprüfung von Feldern, dynamische Bindung von Methoden, Speicherverwaltung für rekursive Prozeduren. Da der Übersetzer dynamische Aspekte nicht zur Übersetzungszeit behandeln kann, erzeugt er dafür Code. Der Code erledigt die Aspekte dann zur Laufzeit. 18
19 Anforderungen an Übersetzer: Gute Fehlerbehandlung (statisch & dynamisch) Effizienter Zielcode Wahlmöglichkeit: schnelle Übersetzung & weniger effizienter Code versus langsamere Übersetzung & hoch effizienter Code semantisch korrekte Übersetzung: Übersetztes Programm verhält sich gemäß der Sprachdefinition der Quellsprache D.h. mit semqs: QS-Programme x QS-Daten semzs: ZS-Programme x ZS-Daten compile: QS-Programme code: QS-Daten ZS-Daten decode: ZS-Daten QS-Daten ZS-Programme QS-Daten ZS-Daten sollte für alle QS-Programme P, QS-Daten D gelten: semqs(p,d) = decode(semzs(compile(p),code(d))) 19
20 Architektur: Quellcode als Zeichenreihe Scanner Symbolfolge Analyse Parser Syntaxbaum Namensbinden Typisieren Attributieren & Optimieren Attributierter Baum ( QS-nahe Repr.) Übersetzer im engeren Sinn Synthese Attributieren & Optimieren Zwischensprache ( ZS-nahe Repr.) Codegenerator Peephole- Optimierer Zielcode als Zeichenreihe 20
21 Aspekte von Übersetzerarchitekturen: Phasen zunächst einmal konzeptionell gemeint Ausführung der Phasen kann verschränkt sein Unterschied: Phase versus Pass (Pass: ein Durchgang durch das Programm) genaue Festlegung der Phasen ist von Quell-, Zielsprache und Entwurfsentscheidungen abhängig Kombination mit anderen Architekturentscheidungen: QS_1 QS_2... QS_m gemeinsame Zwischensprache ZS_1 ZS_2... ZS_n getrennte Übersetzung: Programmteile können unabhängig von einander übersetzt werden; Schnittstelleninformation benutzter Elemente anderer Programmteile muss verfügbar sein. 21
22 Konstruktionstechniken: A. Schrittweise Konstruktion: Programmierung basiert üblicherweise auf Existenz eines Übersetzers für die Implementierungssprache. Bei Übersetzerkonstruktion kann davon im Allg. nicht ausgegangen werden; stehe QS ZS PS für einen Übersetzer der in Sprache PS geschrieben ist und QS in ZS übersetzt. 1. Konstruktion mit Übersetzer für andere Sprache: Gesucht: QS-Compiler, Ziel, läuft auf Annahme: C-Compiler existiert auf Plattform mit Maschinensprache QS QS zu entwickeln C C durch Übersetzung existiert 22
23 2. Konstruktion mit Übersetzer für anderen Rechner: Gesucht: C-Compiler auf 1 für 1 Annahme: C-Compiler auf 2 für 2 existiert Methode: realisiere zunächst Cross-Compiler 1.Schritt: C 1 C 1 C C Schritt: Cross-Compiler C 1 C 1 C C
24 3. Bootstrapping: Gesucht: QS-Compiler auf für Annahme: kein Compiler verfügbar Methode: 1. Entwerfe Teilsprachen QS i von QS mit QS QS 0 U QS 1 U QS 2 U 2. Implementiere QS -Compiler für in 3. Implementiere QS -Compiler für in QS 4. Erzeuge QS -Compiler für in i+1 0 i+1 i durch Erweiterung QS QS QS 2 QS 2 QS 2 QS 1 QS 1 QS 1 QS 0 QS 0 durch Übersetzung von Hand 24
25 B. Mit Generierungswerkzeugen: Scanner-Generator / reguläre Ausdrücke Parser-Generator / kontextfreie Grammatik Attributauswertungsgenerator / Attributgrammatik Codegenerator-Generator / Maschinenbeschreibung weitere phasenspezifische Werkzeuge Interpretergeneratoren / Sprachsemantik C. Spezielle Programmiermethodiken: allgmeine Technik: syntaxgesteuert speziell: rekursiver Abstieg 25
26 Dimensionen des Übersetzerbaus: Programmiersprachen (-sprachklassen): - sequentielle prozedurale, oo. Sprachen - funktionale, logische Sprachen - parallele Sprachen/Sprachkonzepte Zielsprachen/Maschine: - Code für abstrakte Maschine - Assembler - Maschinensprache (CISC, RISC,Superskalar,...) - Multiprozessorarchitekturen - Speicherhierarchie Übersetzungsaufgaben: Analyse, Optimierung, Synthese Konstruktionsmethoden und Werkzeuge Bootstrapping, Generatoren,... Portabilität, Spezifikation, Korrektheit 26
27 1.3 Inhalt und Lernziele 1. Einführung: Überblick, Motivation, Aufgabenstellung 2. Syntax- und Typanalyse 2.1 Lexikalische Syntaxanalyse 2.2 Kontextfreie Syntaxanalyse 2.3 Kontextabhängige Syntaxanalyse (oft semantische Analyse genannt) 3. Übersetzung in die Zielsprache 3.1 Übersetzung imperativer Sprachkonstrukte 3.2 Übersetzung objektorientierter Sprachkonstrukte 3.3 Übersetzung am Beispiel Java 4. Ausgewählte Aspekte der Übersetzung 4.1 Zwischensprachen 4.2 Optimierung 4.3 Befehlsauswahl 4.4 Registerzuweisung 4.5 Codegenerierung 5. Garbage Collection 6. Zusammenfassung und Ausblick 27
28 Lernziele: Grundlagen der Implementierung von Programmiersprachen, insbesondere des Übersetzerbaus Vertiefung in Programmiersprachen Genauere Kenntnis über die Ausführung von Programmen Erlernen ausgereifter, vielseitig einsetzbarer Methoden und Werkzeuge Kennenlernen des Zusammenwirkens von Theorie, Algorithmen, Ingenieurmethoden am Beispiel eines gereiften Gebiets der Informatik Übertragung in andere Gebiete Lesen Sie zu Kapitel 1: Wilhelm, Maurer: Kap. 1, Einleitung (S. 1-5) Kap. 6, Struktur von Übersetzern (S ) Appel: Chap. 1, Introduction (S. 3 14) 28
Übersetzung von Programmiersprachen
Übersetzung von Programmiersprachen Arnd Poetzsch-Heffter AG Softwaretechnik TU Kaiserslautern Wintersemester 2005/06 1 1.Kapitel: Einführung Aufbauend auf den Techniken zur syntaktischen Analyse formaler
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Outline 1 Übersetzer und Werkzeuge zur Sprachverarbeitung Examples 2 Sprachverarbeitung Terminology
MehrOutline. Software Entwicklung 1. Tasks of Language-Processing Tools I. Examples. Annette Bieniusa / Arnd Poetzsch-Heffter
Outline Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern 1 Übersetzer und Werkzeuge zur Sprachverarbeitung Examples 2 Sprachverarbeitung Terminology
MehrDefinition Compiler. Bekannte Compiler
Compiler Inhalt: Definition Compiler / bekannte Compiler Klassifikationen von Compilern Analyse-Synthese-Modell der Kompilierung Analyse des Quellprogramms Synthesephase Die Phasen eines Compilers Symboltabellenverwaltung
MehrCompilerbau für die Common Language Run-Time
Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrÜbersetzer I. Vorlesung WS 1999/2000 Uwe Kastens
U-0 Übersetzer I Vorlesung WS 1999/2000 Uwe Kastens grundlegende Verfahren der Sprachimplementierung erlernen, den Einsatz von generierenden Werkzeugen und von Standardverfahren kennen und schätzen lernen,
MehrKapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren
Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrEinführung. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :49. Einführung 1/26
Einführung (Compiler) Prof. Dr. Oliver Braun Letzte Änderung: 10.05.2017 15:49 Einführung 1/26 Ein Compiler ist ein Computerprogramm das ein Programm geschrieben in einer Sprache in ein Programm übersetzt
MehrEs gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.
1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software
Mehrden Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden
U- Übersetzer Vorlesung WS /8 Uwe Kastens Ziele: grundlegende Verfahren der Sprachimplementierung erlernen den Einsatz von generierenden Werkzeugen und von Standardverfahren kennen und schätzen lernen
MehrEinführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
MehrCompiler. Einführung. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:
Compiler Einführung Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 10.05.2017 15:49 Inhaltsverzeichnis Ein Compiler................................... 2 Ein Compiler...................................
MehrCompiler: Einführung
Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 10.05.2017 15:49 Inhaltsverzeichnis Ein Compiler................................... 2 Ein Compiler...................................
Mehrn 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum
MehrJava I Vorlesung 1 Einführung in Java
Java I Vorlesung 1 Einführung in Java Alexander Koller koller@coli.uni-sb.de 26.4.2004 Problem Algorithmus Programm Programmiersprachen Warum Java? Unser erstes Java-Programm Organisatorisches Was heißt
Mehr6. Grundlagen der Programmierung
Computeranwendung in der Chemie Informatik für Chemiker(innen) 6. Grundlagen der Programmierung Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL6 Folie 1 Dr. Jens Döbler Grundlagen
Mehr30. Parser-Generatoren
30. Parser-Generatoren Prof. Dr. rer. nat. Uwe Aßmann Institut für Software- und Multimediatechnik Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden http://st.inf.tu-dresden.de Version 11-0.1,
MehrAssembler - Einleitung
Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache
MehrEIGENSCHAFTEN VON SPRACHEN
Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke
MehrJava: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder
Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform
MehrInhalte des Moduls Programmieren 1
Inhalte des Moduls Programmieren 1 Einführung: Algorithmus und Programm, Programmiersprache Erste Schritte in Java Grundlagen der Sprache: Datentypen, Ausdrücke und Anweisungen, imperative Programmierung
MehrC-Grundlagen. Einführung von Tronje Krabbe 1/21
C-Grundlagen Einführung von Tronje Krabbe 1/21 Gliederung Hintergrund Geschichte Nutzungsgebiete C-Derivate Syntax Compiler Beispielcode 2/21 Was ist C? C ist eine imperative, kompilierte Programmiersprache
Mehr7. Syntax: Grammatiken, EBNF
7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik
MehrEIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217
EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?
MehrSeite 1. ProSeminar Compilerbau
Seite 1 ProSeminar Compilerbau Seite 2 Was passiert, wenn ihr javac aufruft? In diesem Seminar lernt ihr, wie ein Werkzeug, das ihr jeden Tag verwendet, eigentlich funktioniert. Seite 3 Aufbau des ProSeminars
MehrProgrammiersprache. Emily & rica
Programmiersprache Emily & rica inhaltsangabe Programmiersprache Def inition/funktion Arten Gängige Algorithmus/Syntax Compiler, Interpreter Def inition Unterscheidung Vor- und Nachteile Compiler/ Interpreter
MehrProgrammierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester
1 Programmierung 2 Übersetzer: Das Frontend Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Vom Programm zur Maschine Was passiert eigentlich mit unseren
MehrInfo B VL 1: Einführung p.1
Info B VL 1: Einführung Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 1: Einführung p.1 Programmier-Paradigmen
MehrSoftware Engineering. 5. Architektur
Software Engineering 5. Architektur Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung Konfigurationsmanagement
MehrStratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:
Stratego/XT und ASF+SDF Meta-Environment Paul Weder Seminar Transformationen Datum: 20.01.2006 Gliederung Allgemeines ASF+SDF Meta-Environment Stratego/XT Zusammenfassung/Vergleich SDF (Syntax Definition
MehrInhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen
Inhalt 3 Bemerkung... 9 Vorwort... 10 1 Programme und Programmiersprachen 1.1 Assembler... 13 1.2 Höhere Programmiersprachen... 15 1.2.1 Interpreter... 16 1.2.2 Compiler... 17 1.2.3 Zwischencode... 18
MehrSpringer-Verlag Berlin Heidelberg GmbH
Springer-Lehrbuch Springer-Verlag Berlin Heidelberg GmbH Ralf Hartmut Güting Martin Erwig Ü bersetzerba u Techniken, Werkzeuge, Anwendungen Mit 103 Abbildungen Springer Prof. Dr. Ralf HartmutGüting Dr.
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrDefinitionen/Vorarbeit zum Thema Java
Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript
MehrIII.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
MehrEinführung in die Informatik
Einführung in die Informatik Klaus Knopper 09.11.2004 Inhaltsverzeichnis Programmiersprachen Eine Programmiersprache ist eine formale Sprache zur Darstellung (Notation) von Computerprogrammen. Sie vermittelt
MehrCompilerbau. Wintersemester 2010 / Dr. Heiko Falk
Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung für Eingebettete Systeme Organisatorisches (1) Vorlesung (2V) Montags,
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrInhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.
Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung
MehrAlgorithmen und Datenstrukturen Laufzeitabschätzung
Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,
MehrÜbung 1 - Betriebssysteme I
Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits
MehrJAVA als erste Programmiersprache Semesterkurs
JAVA als erste Programmiersprache Semesterkurs 0 - Einstieg WS 2012 / 2013 Prof. Dr. Bodo Kraft Prof. Dr. Bodo Kraft FH Aachen University of Applied Sciences Fachbereich Medizintechnik und Technomathematik
MehrEinführung in die Informatik Jumping into Java
Einführung in die Informatik Jumping into Java Programme, Modelle, Objekte, Klassen, Methoden Wolfram Burgard Cyrill Stachniss 2.1 Java, eine moderne, objektorientierte Sprache Beispielprogramm: import
MehrProgrammieren in Java
Einführung in die (imperative) Programmierung 2 Programmierung Ziel: Zielsystem soll eine bestimmte Aktion ausführen Zielsystem: Eine Plattform wie Windows oder MacOS oder ein bestimmter Prozessor Aktion:
MehrProgrammierung unter GNU/Linux für Einsteiger
unter GNU/Linux für Einsteiger Edgar Fast Edi Hoffmann Community FreieSoftwareOG kontakt@freiesoftwareog.org 7. September 2016 Begriffserklärung 2 / 35 Begriffserklärung Programmierung (von griechisch
MehrII.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
MehrEINFÜHRUNG. Maschinenmodell. konkrete Maschine. Interpreter. universelle programmierbare Rechenmaschine:
EINFÜHRUNG (ontag, den 28 April 2003) Implementierung von Programmiersprachen aschinenmodell 7 konkrete aschine 8 Interpreter 9 Übersetzer 10 Implementierungssprache 11 Implementierung von Übersetzern
Mehr1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer
MehrÜbersetzergenerierung mit lex und yacc
Übersetzergenerierung mit lex und yacc 0. Überblick und Organisatorisches Jan Bredereke WiSe 2006/07, Universität Bremen otivation Übersetzer: Grundlegende Werkzeuge welche Fehler kann er finden? Konstrukt
MehrEinführung in die Informatik. Jumping into Java
Einführung in die Informatik Jumping into Java Programme, Modelle, Objekte, Klassen, Methoden Wolfram Burgard 1 Java, eine moderne, objektorientierte Sprache Beispielprogramm: import java.io.*; class Program1
MehrComputergrundlagen Programmiersprachen, Interpreter, Compiler, Linker
Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,
MehrComputergrundlagen Programmiersprachen, Interpreter, Compiler, Linker
Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,
MehrProgrammiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen
Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung
Mehr1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung.
1. Erläutern Sie die Aufgaben von Datentypen in der imperativen Programmierung. Beschreiben Sie ferner je einen frei gewählten Datentyp aus der Gruppe der skalaren und einen aus der Gruppe der strukturierten
MehrCompiler für f r Eingebettete Systeme (CfES)
Compiler für f r Eingebettete Systeme (CfES) Sommersemester 2009 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung für Eingebettete Systeme Kapitel 9 Ausblick
MehrSystemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007
Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung
MehrGrundlagen der Programmierung 2 (Comp-A)
Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 23. Mai 2007 Compiler; Übersetzungprogramme Ein Übersetzer (Compiler) ist ein Programm,
MehrObjektorientierte und Funktionale Programmierung SS 2014
Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten
MehrImpact of economics on compiler optimization
Impact of economics on compiler optimization Seminar Zwischen Sprachen und Codegenerierung SS 2005 Dimitar Dimitrov Betreuer: Rubino Geiß Kurzbeschreibung Arch D. Robinson, einer der Entwickler der KAI
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2017 1. Einführung 1.1 Sprachen und
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrÜbungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
MehrGuile Die Erweiterungssprache des GNU-Projekts
Guile Die Erweiterungssprache des GNU-Projekts Matthias Köppe Otto-von-Guericke-Universität Magdeburg Magdeburger Linux User Group e. V. 19. Mai 2001 Überblick Guile als Erweiterungssprache Guile als Scheme-Implementierung
MehrListe Programmieren Java Überblick
Liste Programmieren Java Überblick 1 Was ist Java? 2 Klassen und Objekte 3 Vererbung 4 Schnittstellen 5 Innere Klassen 6 Exceptions 7 Funktionsbibliothek 8 Datenstrukturen und Algorithmen 9 Ein-/Ausgabe
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrSemantik von Programmiersprachen
Semantik von Programmiersprachen Prof. Dr. Manfred Schmidt-Schauß SS 2013 Stand der Folien: 15. April 2013 Semantik von Programmen verschiedene Semantiken: operationale Semantik (Spezifikation eines Interpreters)
MehrStruktur und Implementierung von Programmiersprachen II. (Compilerbau) WS 2006/2007
Struktur und Implementierung von Programmiersprachen II (Compilerbau) WS 2006/2007 Vorlesung und Übung: Dr. Christoph Herrmann http://infosun.fmi.uni passau.de /cl/lehre/sips2 ws0607/index.html 1/1 Einordnung
MehrImpact of Economics on Compiler Optimization
Impact of Economics on Compiler Optimization Arch D. Robinson Kai Software Seminar Zwischensprachen & Codegenerierung IPD Goos Dimitar Dimitrov Betreuer Rubino Geiß 0 Überblick Überblick Problem Übersetzer
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrStruktur und Implementierung von Programmiersprachen I. (Compilerbau) SS 2006
Struktur und Implementierung von Programmiersprachen I (Compilerbau) SS 2006 http://infosun.fmi.uni-passau.de /cl/passau/sips2006/index.html Vorlesung und Übung: Dr. Christoph Herrmann 1/1 Einordnung im
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Compiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein Programm, das ein Wort
MehrFach: Softwareentwicklung für technische Systeme (SOFT) Berufsbezogener Lernbereich Schwerpunkt: Informations- und Automatisierungstechnik
Fach: Softwareentwicklung für technische Systeme (SOFT) Berufsbezogener Lernbereich Schwerpunkt: Informations- und Automatisierungstechnik Aufgaben und Ziele des Faches: Für den zukünftigen Techniker ist
MehrII.1.1. Erste Schritte - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.
MehrGenerierung von Steuerungsprogrammcode für SPS und μc aus Petri-Netz-Modellen
Fachhochschule Köln Cologne University of Applied Sciences Fakultät für Informations-, Medien- und Elektrotechnik Institut für Automatisierungstechnik Labor für Informations- und Automatisierungstechnik
MehrKlassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object
Smalltalk vs. Objective-C Klassen als Objekte Klassendeklarationen Selektoren als first-class values Objekt-Erzeugung Implementierung: Eigene VM vs. Einbettung in C Smalltalk: Everything is an object Klassen
Mehr10. Programmierungs-Phase: Objektorientierung Software Engineering
10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext
MehrAlfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman. Compiler. informatik. Prinzipien, Techniken und Werkzeuge. 2., aktualisierte Auflage
Alfred V. Aho Monica S. Lam Ravi Sethi Jeffrey D. Ullman it informatik Compiler Prinzipien, Techniken und Werkzeuge 2., aktualisierte Auflage Inhaltsverzeichnis Vorwort... XXIX Zur deutschen Ausgabe...XXXIII
MehrInhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1
Inhaltsverzeichnis Grundlagen und Einführung (1. Band) 1 1 Einleitung und Vorwort 1 1.1 Vorwort zur 13. Auflage....................... 1 1.2 Vorwort zur 10. Auflage....................... 1 1.3 Voraussetzungen...........................
MehrGrammatiken und ANTLR
Grammatiken und ANTLR Zusatzfolien zu Algo Blatt 6 Author: Henry Schaefer http://www.majeeks.de/folien_blatt6.pdf Grammatik Definition: syntaktische Beschreibung einer Sprache (H.S.) Definiton Grammatik
MehrDiplomarbeit Antrittsvortrag
Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...
Mehr1.3 Geschichte der Programmiersprachen
50er Jahre erste Definition höherer Programmiersprachen Effizienz maßgebliches Designziel FORTRAN (Backus) als Sprache für wissenschaftliches Rechnen (komplexe Berechnungen, einfachen Daten), Arrays, Schleifen,
MehrProgrammiersprachen und Übersetzer
Programmiersprachen und Übersetzer Sommersemester 2009 5. April 2009 Vorteile bei der Verwendung höherer Programmiersprachen Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation
Mehr7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik
7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:
MehrPraktische Informatik I
Praktische Informatik I WS 2005/2005 Prof. Dr. Wolfgang Effelsberg Lehrstuhl für Praktische Informatik IV Universität Mannheim 1. Einführung 1-1 Inhaltsverzeichnis (1) 1. Einführung 1.1 Was ist Informatik?
MehrObjekt-Orientierte Programmiersprachen
Objekt-Orientierte Programmiersprachen Martin Gasbichler Holger Gast 18. Oktober 2005 Wir sind... Martin Gasbichler 1974 1994 2000 2004 Aktuell: Diese Vorlesung Diss
MehrVorsemesterkurs Informatik
Vorsemesterkurs Informatik Programmieren und Programmiersprachen SoSe 2012 Stand der Folien: 26. März 2012 Übersicht Programme und Programmiersprachen Haskell 1 Programme und Programmiersprachen 2 Haskell
MehrComputergrundlagen Turingmaschinen und Programmierung
Computergrundlagen Turingmaschinen und Programmierung Jens Smiatek und Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2016/17 Was ist ein Computer? Ein Computer (Rechner oder
MehrGrundlagen des Software Engineering
Gustav Pomberger und Günther Blaschek Grundlagen des Software Engineering Prototyping und objektorientierte Software-Entwicklung Mit 101 Abbildungen Technische Universität Darmstadt FACHBEREICH INFORMATIK
MehrVorlesung Programmieren
Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache
Mehr