Programmiersprachen und Übersetzer
|
|
- Gretel Brahms
- vor 7 Jahren
- Abrufe
Transkript
1 Programmiersprachen und Übersetzer Sommersemester April 2009
2 Vorteile bei der Verwendung höherer Programmiersprachen
3 Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation für komplizierte Ausdrücke.
4 Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation für komplizierte Ausdrücke. 2. Viele primitive Datentypen, Möglichkeiten, komplexere Datentypen selbst zu definieren.
5 Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation für komplizierte Ausdrücke. 2. Viele primitive Datentypen, Möglichkeiten, komplexere Datentypen selbst zu definieren. 3. Viele dazu passende, teilweise selbst definierbare Operationen auf den verschiedenen Datentypen.
6 Vorteile bei der Verwendung höherer Programmiersprachen 1. Einfache Notation für komplizierte Ausdrücke. 2. Viele primitive Datentypen, Möglichkeiten, komplexere Datentypen selbst zu definieren. 3. Viele dazu passende, teilweise selbst definierbare Operationen auf den verschiedenen Datentypen. 4. Einfach Steuerstrukturen, genormte Parameterübergabe.
7 Vorteile bei der Verwendung höherer Programmiersprachen
8 Vorteile bei der Verwendung höherer Programmiersprachen 5. Blockstruktur, rekursive Aufrufe sowie ein Klassen-, Moduloder Paket-Konzept, um Implementationsdetails dem Benutzer zu verbergen (Information Hiding)
9 Vorteile bei der Verwendung höherer Programmiersprachen 5. Blockstruktur, rekursive Aufrufe sowie ein Klassen-, Moduloder Paket-Konzept, um Implementationsdetails dem Benutzer zu verbergen (Information Hiding) 6. Portabilität und Modularisierbarkeit um Programmieren im Team zu ermöglichen.
10 Vorteile bei der Verwendung höherer Programmiersprachen 5. Blockstruktur, rekursive Aufrufe sowie ein Klassen-, Moduloder Paket-Konzept, um Implementationsdetails dem Benutzer zu verbergen (Information Hiding) 6. Portabilität und Modularisierbarkeit um Programmieren im Team zu ermöglichen. 7. Wiederverwendbarkeit und Erweiterbarkeit einzelner Softwarekomponenten.
11 Nachteile bei Verwendung höherer Programmiersprachen
12 Nachteile bei Verwendung höherer Programmiersprachen 1. Man benötigt einen Compiler oder Interpreter für die verwendete höhere Programmiersprache.
13 Nachteile bei Verwendung höherer Programmiersprachen 1. Man benötigt einen Compiler oder Interpreter für die verwendete höhere Programmiersprache. 2. Das von einem Compiler gelieferte Programm ist i. a. größer (ca %) und langsamer (2 4facher Zeitbedarf) als ein von Hand geschriebenes äquivalentes Assemblerprogramm bzw. Maschinenprogramm.
14 Nachteile bei Verwendung höherer Programmiersprachen 1. Man benötigt einen Compiler oder Interpreter für die verwendete höhere Programmiersprache. 2. Das von einem Compiler gelieferte Programm ist i. a. größer (ca %) und langsamer (2 4facher Zeitbedarf) als ein von Hand geschriebenes äquivalentes Assemblerprogramm bzw. Maschinenprogramm. 3. Gewisse maschinennahe Programme sind nur schwer oder gar nicht zu erstellen.
15 Compiler und Interpreter Programm in einer Programmiersprache P Compiler für P äquivalentes Maschinenprogramm
16 Compiler und Interpreter Programm in einer Programmiersprache P Compiler für P äquivalentes Maschinenprogramm Daten Programm in einer Programmiersprache P Interpreter für P Ergebnisse
17 Im allgemeinen gilt:
18 Im allgemeinen gilt: - Compiler liefern nach der Übersetzung Programme, deren Ausführung schneller abläuft als die Abarbeitung des Ausgangsprogramms durch einen Interpreter.
19 Im allgemeinen gilt: - Compiler liefern nach der Übersetzung Programme, deren Ausführung schneller abläuft als die Abarbeitung des Ausgangsprogramms durch einen Interpreter. - Eine Änderung des Ausgangsprogramms führt bei der Verwendung eines Compilers zu größerem Aufwand (neues Übersetzen, Binden usw.) als bei Verwendung eines Interpreters.
20 Prinzipieller Aufbau eines Compilers Quellenprogramm Symboltabellen- Management lexikale Analyse syntaktische Analyse semantische Analyse Zwischencode- Erzeugung Codeoptimierung Maschinencode- Erzeugung Objektprogramm Fehlerbehandlung
21 Aufgabe der lexikalen Analyse zeichenweises Lesen der Eingabe Zusammenfassen der Zeichen zu größeren Einheiten (Lexeme). Im Compiler wird eine derartige Einheit durch ein Token dargestellt. Überlesen von Leerzeichen und Kommentaren
22 Aufgabe der lexikalen Analyse zeichenweises Lesen der Eingabe Zusammenfassen der Zeichen zu größeren Einheiten (Lexeme). Im Compiler wird eine derartige Einheit durch ein Token dargestellt. Überlesen von Leerzeichen und Kommentaren Token repräsentieren eine Folge von Eingabezeichen, die als logische Einheit zu betrachten sind. Ein Token besteht aus zwei Komponenten, nämlich der Tokenklasse und dem Tokenwert.
23 Aufgabe der lexikalen Analyse zeichenweises Lesen der Eingabe Zusammenfassen der Zeichen zu größeren Einheiten (Lexeme). Im Compiler wird eine derartige Einheit durch ein Token dargestellt. Überlesen von Leerzeichen und Kommentaren Token repräsentieren eine Folge von Eingabezeichen, die als logische Einheit zu betrachten sind. Ein Token besteht aus zwei Komponenten, nämlich der Tokenklasse und dem Tokenwert. Diese Komponente des Compilers, wird auch Lexical Scanner oder einfach Scanner genannt.
24 Beispiel: Die Eingabezeile position := initial + rate * 60 könnte die folgende Tokenfolge liefern: Tokenklasse: Tokenwert: Identifier position Wertzuweisungszeichen - Identifier initial Pluszeichen - Identifier rate Multiplikationszeichen - Zahl 60
25 Aufgabe der syntaktischen Analyse Prüfung, ob die von der lexikalen Analyse gelieferten Token in einer Reihenfolge auftreten, die der (syntaktischen) Beschreibung der Programmiersprache entspricht. Gruppieren der Token zu größeren syntaktischen Strukturen, etwa in Form eines Ableitungsbaumes oder eines Syntaxbaumes.
26 Aufgabe der syntaktischen Analyse Prüfung, ob die von der lexikalen Analyse gelieferten Token in einer Reihenfolge auftreten, die der (syntaktischen) Beschreibung der Programmiersprache entspricht. Gruppieren der Token zu größeren syntaktischen Strukturen, etwa in Form eines Ableitungsbaumes oder eines Syntaxbaumes. Diese Komponente des Compilers wird auch als Parser bezeichnet.
27 Beispiel: Die Token könnten z. B. in der folgenden Form zu einem Syntaxbaum einer Wertzuweisung zusammengefaßt werden: := position + initial * rate 60
28 Aufgabe der semantischen Analyse Überprüfung der Typen von Konstanten und Variablen bzgl. der auf sie angewendeten Operationen und eine eventuelle automatische Typanpassung. Weiterhin muß in der semantischen Analyse überprüft werden, ob verwendete Identifier auch im Deklarationsteil des Programms definiert worden sind.
29 Beispiel: Unter der Annahme, daß alle Identifier vom Typ real sind, ergibt sich die Änderung: := position + initial * rate inttoreal 60
30 Aufgabe der Zwischencode-Erzeugung Übersetzung in einen Zwischencode, d. h. in die Maschinensprache einer abstrakten Maschine, die möglichst einfache Struktur hat.
31 Aufgabe der Zwischencode-Erzeugung Übersetzung in einen Zwischencode, d. h. in die Maschinensprache einer abstrakten Maschine, die möglichst einfache Struktur hat. Eine Möglichkeit eines Zwischencodes sind 3-Adreß-Befehle der Form A := B op C, wobei A, B und C Operanden sind und op ein Operator ist.
32 Aufgabe der Zwischencode-Erzeugung Übersetzung in einen Zwischencode, d. h. in die Maschinensprache einer abstrakten Maschine, die möglichst einfache Struktur hat. Eine Möglichkeit eines Zwischencodes sind 3-Adreß-Befehle der Form A := B op C, wobei A, B und C Operanden sind und op ein Operator ist. Eine andere Möglichkeit sind erweiterte Syntaxbäume oder Graphen.
33 Beispiel: Das Beispiel könnte etwa folgende Übersetzung in 3-Adreß-Befehle liefern: t1 := inttoreal 60 t2 := rate * t1 t3 := initial + t2 position := t3 Dabei sind t1, t2 und t3 neue, vom Zwischencode-Erzeuger generierte Namen.
34 Aufgabe der Codeoptimierung Verbesserung des Zwischencodes in Hinblick auf Speicherplatzbedarf und Laufzeitverhalten. Dazu benötigt man Algorithmen zum Entfernen überflüssiger Berechnungen,
35 Aufgabe der Codeoptimierung Verbesserung des Zwischencodes in Hinblick auf Speicherplatzbedarf und Laufzeitverhalten. Dazu benötigt man Algorithmen zum Entfernen überflüssiger Berechnungen, Ersetzung von Berechnungen zur Laufzeit durch Berechnungen zur Übersetzungszeit
36 Aufgabe der Codeoptimierung Verbesserung des Zwischencodes in Hinblick auf Speicherplatzbedarf und Laufzeitverhalten. Dazu benötigt man Algorithmen zum Entfernen überflüssiger Berechnungen, Ersetzung von Berechnungen zur Laufzeit durch Berechnungen zur Übersetzungszeit Erkennen von schleifeninvarianten Berechnungen und Verschieben dieser Teile vor den Schleifenbeginn
37 Aufgabe der Codeoptimierung Verbesserung des Zwischencodes in Hinblick auf Speicherplatzbedarf und Laufzeitverhalten. Dazu benötigt man Algorithmen zum Entfernen überflüssiger Berechnungen, Ersetzung von Berechnungen zur Laufzeit durch Berechnungen zur Übersetzungszeit Erkennen von schleifeninvarianten Berechnungen und Verschieben dieser Teile vor den Schleifenbeginn viele weitere, zum Teil von der Zielmaschine abhängige Optimierungen.
38 Beispiel: Nach der Codeoptimierung ergibt sich für unser bisheriges Beispiel folgender Zwischencode: t1 := rate * 60.0 position := initial + t1
39 Aufgabe der Code-Erzeugung Erzeugung von verschiebbarem Maschinencode (d. h. eines Objektprogramms) bzw. von Assemblercode. Die größte Schwierigkeit besteht dabei darin, die Zuordnung der Hardware-Register so zu wählen, daß möglichst wenig Speicherzugriffe nötig sind. (Speziell wichtig und kompliziert bei modernen RISC-CPUs oder Parallelrechnern.)
40 Beispiel: Es wird angenommen, daß die beiden Floating-Point-Register R1 und R2 momentan frei sind. MOVF MULF MOVF ADDF MOVF rate, R2 #60.0, R2 initial, R1 R2, R1 R1, position
Compilerbau 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,
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
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
MehrGrundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes
Grundlagen der Informatik III Wintersemester 2010/2011 20. Vorlesung Dr.-Ing. Wolfgang Heenes int main() { printf("hello, world!"); return 0; } msg: main:.data.asciiz "Hello, world!".text.globl main la
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
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
MehrInformatik II SS Der Kompilationsprozess (-phasen) Schreiben des Programms. Die Organisation eines typischen Compilers
Der Kompilationsprozess (-phasen) Informatik II SS 2004 Teil 6: Sprachen, Compiler und Theorie 7 Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Scanner
Mehr2.1 Rechnersichten 2.2 Rechnerorganisation: Aufbau und Funktionsweise
Teil 1 Kapitel 2 Rechner im Überblick 2.1 Rechnersichten 2.2 Rechnerorganisation: Aufbau und Funktionsweise Frank Schmiedle Technische Informatik I 2.1 Rechnersichten Modellierung eines Rechners Zusammenspiel
MehrEinführung in die Systemprogrammierung
Einführung in die Systemprogrammierung Sprachen und Übersetzer Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 4. Juni 2015 Sprachen vs. Übersetzer Sprache C11 Übersetzer GNU C
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,
MehrCompilerbau + Virtuelle Maschinen
Helmut Seidl Compilerbau + Virtuelle Maschinen München Sommersemester 2009 1 Organisatorisches Der erste Abschnitt Die Übersetzung von C ist den Vorlesungen Compilerbau und Virtuelle Maschinen gemeinsam
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
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
MehrCompiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers
ompiler; Übersetzungsprogramme Grundlagen der Programmierung 3 A ompiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Ein Übersetzer (ompiler) ist ein Programm, das ein Wort
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Lehrstuhl Prof. Plödereder Eduard Wiebe Institut für Softwaretechnologie Abteilung Programmiersprachen und Übersetzerbau Sommersemester 2007 Programm-Ausführung Programmiersprachen
MehrGrundlagen der Programmierung 2 (Comp-A)
Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 16. Juni 2011 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein
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
Mehr7 Einführung in den Compilerbau
7 Einführung in den Compilerbau 7. 1 Allgemeines 7. 2 Übersetzung 7.1 Allgemeines 7.1.1 Definitionen Wichtige Begriffe bei Programmiersprachen: (1) Menge der erlaubten Zeichen Groß-, Kleinbuchstaben, Sonderzeichen
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
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
MehrZwischencode-Erzeugung. 2. Juni 2009
Zwischencode-Erzeugung im Rahmen des Seminars "Übersetzung von künstlichen Sprachen" Sebastian Hanneken 2. Juni 2009 1 / 32 1 Einleitung Einordnung Funktion von Zwischencode 3-Adresscode (3AC) 2 Erzeugung
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
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
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
Mehr1 ÜBERSETZER. Compilerbau 1
1 ÜBERSETZER 1 A.V.Aho, J.D.Ullmann: Principles of Compiler Design, Addison Wesley (1977) J.Amsterdam: Building a computer in Software, BYTE (Okt. 1985) Programming Project: A SIMPL Compiler, BYTE (Dez.
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
MehrFachseminar WS 2008/09
Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der
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...................................
MehrRechnerstrukturen. 7. Assembler. Inhalt. Vorlesung Rechnerstrukturen. Assemblerprogrammierung SML-CPU. SML-Assembler. Binden
Rechnerstrukturen 7. Assembler Assemblerprogrammierung SML-CPU Inhalt SML-Assembler Adressierungsarten Instruktionssatz Assembler-Direktiven Binden 7.2 1 Maschinensprache Instruktion = Bitkombination Für
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
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
Mehr3. Methodik der Programmerstellung
3. Methodik der Programmerstellung 3.1 Vorgehen 3.2 Programmerstellung 3.2.1 Konventionen 3.2.2 Schlüsselwörter und Bezeichner 3.2.3 Fehlertypen 3.2.4 Programmierstil 3.3 Formaler Aufbau eines Pascal-Programms
MehrInterdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko
Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht
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
Mehr9.4 Grundlagen des Compilerbaus
Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum
MehrCompiler und Codegenerierung. Hw-Sw-Co-Design
Compiler und Codegenerierung Hw-Sw-Co-Design Wo sind wir? System Verhalten Modul Architektur Block SW HW Logik Struktur Compiler und Codegenerierung Compiler - Aufbau Codegenerierung Codeoptimierung Codegenerierung
MehrEinführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen
Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.
MehrMethoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.
Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition
MehrEin Translator ist kein Compiler: Unterschiede zwischen Compilierung und Sprachkonvertierung am Beispiel von TAL
Ein Translator ist kein Compiler: Unterschiede zwischen Compilierung und Sprachkonvertierung am Beispiel von TAL Uwe Erdmenger Innovative Informatikanwendungen GmbH 1 Gründung 1994, z.z. 11 Mitarbeiter,
MehrBeispiel einer Übersetzung
Beispiel einer Übersetzung Ausdruck in C aktuelle_zeit = Startzeit + vergangene_minuten*60 + vergangene_sekunden; Ausdruck im Instruktionssatz des R10000 LW r1,minuten LW r1,sekunden ADDI r2,r0,60 ADD
MehrTURBO PASCAL VERSION 5.5
Jörg Lange TURBO PASCAL VERSION 5.5 / Hüthig Buch Verlag Heidelberg 7 Inhaltsverzeichnis 1. DasTURBO-Pascal-System 13 1.1 Starten des TURBO-Pascal-Systems 13 1.2 DasTURBO-Pascal-Menue-System 17 1.3 DasF)ILE-Menue
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
MehrInstitut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme
Institut für Computational Science Prof. Dr. H. Hinterberger Praxismodul 1 Einführung in die Programmierung Erste Programme Einführung in die Programmierung 2 Institut für Computational Science, ETH Zürich,
MehrObjektorientierte Programmierung mit C++ (WS 2016/2017)
Institut für Numerische Mathematik Dr. Andreas F. Borchert und Dr. Michael C. Lehn 26. Januar 2017 Blatt 12 Objektorientierte Programmierung mit C++ (WS 2016/2017) Abgabe bis zum 2. Februar 2017, 16:00
MehrKapitel 5: Syntaxdiagramme und Grammatikregeln
5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrEin kleiner Blick auf die generische Programmierung
TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen
MehrÜbersetzerbau Cluj-Napoca, Rumänien 2007
Übersetzerbau Cluj-Napoca, Rumänien 2007 Markus Löberbauer Institut für Systemsoftware Johannes Kepler Universität, 4040 Linz, Österreich Loeberbauer@ssw.jku.at 2007-02-01 Zusammenfassung In dieser Übung
MehrProgrammierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen
Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)
MehrProgrammierkurs II. Prof. Dr. Wolfgang Effelsberg. Universität Mannheim. Sommersemester Wolfgang Effelsberg Programmiersprachen
Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2005 1-1 Inhalt (1) Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke 4. Ablaufsteuerung (Kontrollstrukturen)
MehrSyntax von Programmiersprachen
Syntax von Programmiersprachen SEP 209 Programmiersprachen Sprache = Menge von Wörtern, typischerweise unendlich Programmiersprache: Wörter repräsentieren Programme Programm kann auf einem Computer evtl.
MehrStackmaschine; Speicheradressierung
Stackmaschine; Speicheradressierung Erweiterung um globalen Speicher (Heap, Halde) pro Speicherplatz eine Zahl. Notation ist als Array SP [0..]. Zugriff mittels Adresse (Index): eine Zahl i.a.: Zahlen
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)
MehrAbschnitt 7: Komplexität von imperativen Programmen
Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen
MehrZuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte
Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung
MehrGrundlagen der Programmierung 2
Grundlagen der Programmierung 2 Kode-Erzeugung (Compiler 5G) Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Codeerzeugung Quelltext (String) Syntaxbaum Zwischencode Lexikalische Analyse Syntaktische
MehrAlgorithmus: Kochrezept
Algorithmus: Kochrezept Ziel: Menü mit drei Gängen für 4 Personen Grundlegende Spezifikation: 1. Vorspeise: Badische Flädlesuppe 2. Hauptgericht: Überbackene Schinkenröllchen mit Spargel 3. Dessert: Vanilleeis
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
MehrVon der Programmiersprache WHILE zum ersten Einstieg in Java
Von der Programmiersprache WHILE zum ersten Einstieg in Java Die Programmiersprache WHILE bildet den Kern jeder imperativen Programmiersprache. Man geht davon aus, dass die Ein- Ausgabe primitiv organisiert
MehrProgrammierkurs II. C und Assembler
Programmierkurs II C und Assembler Prof. Dr. Wolfgang Effelsberg Universität Mannheim Sommersemester 2003 1-1 Inhalt Teil I: Die Programmiersprache C 2. Datentypen und Deklarationen 3. Operatoren und Ausdrücke
MehrWas ist ein Compiler?
Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?
MehrGrundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de
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.
MehrInhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2
iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...
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,
Mehr1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17
1 Maschinenunabhängige Optimierungen Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17 Optimierungen Automatische Optimierungen sind nötig, weil unoptimierter Code meist besser lesbar ist.
Mehr68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.
WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren. Ein Programm liegt der CPU in binärer Form vor und wird durch den Assembler in einer primitiven
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
MehrLR-Parser, Shift-Reduce-Verfahren
LR-Parser, Shift-Reduce-Verfahren Bottom-Up-Syntaxanalyse LR-Parser L: Eingabe von links nach rechts; R: Rechtsherleitung Shift-Reduce-Verfahren Beachte: Kein Backtracking nicht auf jede Grammatik anwendbar
MehrAusdrücke (1) Grundlegende Eigenschaften
Ausdrücke () Grundlegende Eigenschaften bestehen aus Literalen, Konstanten, Variablen und Operatoren einfachster Ausdruck ist das Semikolon, es bewirkt nichts. Ausdrücke werden mit einem Semikolon abgeschlossen.
MehrKapitel 4: Syntaxdiagramme und Grammatikregeln
4. Syntaxdiagramme und Grammatikregeln 4-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 4: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische
MehrLPalin-Bin & GPalin-Bin
LPalin-Bin & GPalin-Bin G Palin-Bin = (V,S,S,P) mit - V = {S} Variablen - S = S bin Terminalsymbole - Startsymbol S - P = { S -> e, (1) S -> 0, (2) S -> 1, (3) S -> 0S0, (4) S -> 1S1, (5) } L Palin-Bin
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)
MehrEinführung in die Informatik I (autip)
Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis
MehrEntwurfsmuster (Design Patterns)
Entwurfsmuster (Design Patterns) SEP 303 Entwurfsmuster (Design Patterns) In der alltäglichen Programmierarbeit tauchen viele Probleme auf, die man schon einmal gelöst hat und die man in der Zukunft wieder
MehrInhalt. 4.9 Typen, Variable und Konstante
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
MehrInformatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. August 2009 1/17 Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz
MehrGrundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
MehrDefinition von LR(k)-Grammatiken
Definition von LR(k)-Grammatiken Ziel: Ein Lookahead von k soll ausreichen um entscheiden zu können, welche Regel angewendet werden muss. Definition: FIRST k (w 1 w n ):= w 1 w k, falls n k, w 1 w n, sonst.
MehrVorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
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
MehrMasterarbeit von Filipp Andjelo
Fachgebiet für Programmiersprachen und Übersetzer Leibniz Universität Hannover Masterarbeit von Filipp Andjelo Thema: Entwicklung eines Lern- und Experimentiercompilers 1. Prüfer: Prof. Dr. Rainer Parchmann
MehrProgrammieren lernen mit Perl
Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete
MehrObjektorientierte Programmierung (OOP)
orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,
MehrVorwort zur zweiten Auflage 1. Vorwort zur ersten Auflage 2
Vorwort zur zweiten Auflage 1 Vorwort zur ersten Auflage 2 1 Über dieses Buch 3 1.1 WarumdiesesBuch?... 3 1.2 Voraussetzungen...... 4 1.3 Systematik... 4 1.4 WieliestmandiesesBuch?... 6 1.5 ZugriffaufdieQuellenzudenBeispielen...
MehrDefinition von domänenspezifischen Sprachen mit Xtext: Einführung
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 28. November 2012 Taentzer Modellgetriebene Softwareentwicklung 246 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen
MehrKapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 05 Datentypen Inhalt des 5. Kapitels Datentypen 5.1 Einleitung 5.2 Eingebaute Datentypen Übersicht Die Datentypen char, float und double Standardwerte Operatoren Konversion / Type-Cast Datentyp
MehrInhaltsverzeichnis. 4.9 Aufgaben... 63
Inhaltsverzeichnis 1 Einleitung 1 1.1 Programmierung... 1 1.2 Objektorientierte Programmierung... 2 1.3 Voraussetzungen und Ziele dieses Buches... 3 1.4 Aufbau dieses Buches... 4 2 Das imperative Hamster-Modell
Mehr. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:
Laufzeit von Quicksort im Mittel. Wir wollen die erwartete Effizienz von Quicksort ermitteln. Wir nehmen an, die Wahrscheinlichkeit, dass das gewählte Pivot-Element a j das k-t kleinste Element der Folge
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
MehrGrundlagen der Rechnerarchitektur. MIPS Assembler
Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32
MehrFunktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I µ-rekursive Funktionen WS 2012/2013 Primitiv-rekursive Funktionen Jede primitiv-rekursive Funktion ist Loop-berechenbar. Das bedeutet, dass jede PR-Funktion in der Loop-Programmiersprache formuliert
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
MehrInterpreter - Gliederung
Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache
MehrFunktionen in Matlab. Nutzerdefinierte Funktionen können in.m-datei gespeichert werden
Funktionen in Matlab Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung
MehrProgrammierpraktikum
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 04 (17.11.2016) Stefan Berktold s.berktold@tum.de PRÄSENZAUFGABEN Heutige Übersicht
MehrInhalt. Einführung in die Strukturierte Programmierung 15
Inhalt Einführung in die Strukturierte Programmierung 15 1.1 Was bedeutet Programmieren? 17 1.2 Was bedeutet Strukturierte Programmierung? 18 1.3 Was ist Pascal? 19 1.4 Was ist PS/k? 20 1.5 Warum wird
MehrÜbersetzergenerierung mit lex und yacc
Übersetzergenerierung mit lex und yacc 0. Überblick und Organisatorisches Jan Bredereke SoSe 2004, Universität Bremen otivation Übersetzer: Grundlegende Werkzeuge welche Fehler kann er finden? Konstrukt
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C
Mehr