Grundlagen der Programmierung 3 A
|
|
- Helene Schäfer
- vor 5 Jahren
- Abrufe
Transkript
1 Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018
2 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein Programm, das ein Wort einer formalen Sprache S 1 (den Quelltext) in ein Wort einer anderen formalen Sprache S 2 (den Zieltext) umwandelt, wobei die Semantik erhalten bleibt. (Semantik meist separat erklärt) Beispiele: Programme in Haskell, Java, Python, oder PASCAL, werden in Maschinenkode, C, Assembler, oder Bytecode übersetzt. LaTex-Eingaben werden in eine PDF-Datei (bzw. ps-datei) übersetzt Grundlagen der Programmierung 2 (Compiler-A) 2/21
3 Compiler für Programmiersprachen Ein Compiler ist ein Programm, das ein S 1 -Programm (das Quellprogramm) in ein S 2 -Programm (das Zielprogramm) umwandelt, wobei die (operationale) Semantik erhalten bleibt Grundlagen der Programmierung 2 (Compiler-A) 3/21
4 Phasen eines Compilers Lexikalische Analyse (Scanning): Text des Programms wird in Tokenstrom umgewandelt Syntaxanalyse (Parsing): Tokenstrom wird entsprechend der Grammatik in einen Syntaxbaum transformiert Semantische Analyse: Typcheck, Scope von Variablen,... Zwischencode-Erzeugung: Generierung von Code für eine abstrakte Maschine Codeoptimierung: Verbesserung des Zwischencodes Code-Erzeugung: Erzeugung des Ausgabe-Programms (z.b. in C, Assembler) Grundlagen der Programmierung 2 (Compiler-A) 4/21
5 Phasen eines Compilers: Diagramm Quelltext (String) Syntaxbaum Zwischencode Lexikalische Analyse Syntaktische Analyse Semantische Analyse Zwischencodeerzeugung Codeoptimierung Codegenerierung Tokenstrom Syntaxbaum (annotiert) Zwischencode (optimiert) maschinennaher Code Grundlagen der Programmierung 2 (Compiler-A) 5/21
6 Beispiele zu den Phasen Lexikalische Analyse Z.B. IF 13 == X1 THEN A wird zu: IF, 13, ==, X1, THEN, A Grundlagen der Programmierung 2 (Compiler-A) 6/21
7 Beispiele zu den Phasen Lexikalische Analyse Z.B. IF 13 == X1 THEN A wird zu: IF, 13, ==, X1, THEN, A Syntaxanalyse (Parsing): Programmtext anhand Grammatik strukturieren. Erstellen Herleitungsbaum, dann Syntaxbaum: Z.B. ( IF, 13, ==, X1, THEN, A ) wird zu: IFTHEN IF THEN A == A 13 == X1 13 X1 Grundlagen der Programmierung 2 (Compiler-A) 6/21
8 Beispiele zu den Phasen Lexikalische Analyse Z.B. IF 13 == X1 THEN A wird zu: IF, 13, ==, X1, THEN, A Syntaxanalyse (Parsing): Programmtext anhand Grammatik strukturieren. Erstellen Herleitungsbaum, dann Syntaxbaum: Z.B. ( IF, 13, ==, X1, THEN, A ) wird zu: IFTHEN IF THEN A == A 13 == X1 13 X1 Semantische Analyse Typüberprüfungen: Z.B. 1 + a wird zurückgewiesen. Scopeprüfungen: Sind Variablen/Funktionen/... definiert? Sind sie an der richtigen Stelle deklariert? Grundlagen der Programmierung 2 (Compiler-A) 6/21
9 Weitere Komponenten Symboltabelle speichert wesentliche Attribute (Typ, Gültigkeitsbereich, etc.) der Bezeichner des Quellprogramms. Fehlerbehandlung Analyse der Fehler, Lokalisierung im Quellprogramm, Meldung an den Benutzer. Evtl. automatische Behebung des Fehlers und Fortsetzung der Übersetzung Grundlagen der Programmierung 2 (Compiler-A) 7/21
10 Weitere mögliche Phasen Einleseroutine; Zeichenbehandlung abhängig vom Prozessor bzw. Betriebssystem I.a. Standard-Routinen (Einlesen, Zeichenkodierung) Präprozessor Vorverarbeitung des Quellprogramms (i.a. Makro-Expansion) Assembler Objektcode. übersetzt das Assemblerprogramm in Binder/Lader Umsetzung in ausführbaren Maschinenkode plus Hinzunahme von anderem Objektcode z.b. aus Bibliothek Grundlagen der Programmierung 2 (Compiler-A) 8/21
11 Front-End und Back-End Aufteilung des Compilers: Front-End: maschinenunabhängiger Teil (z.b. Syntaxanalyse, lexikalische Analyse, Typüberprüfung, Zwischencode-Erzeugung, Zwischencode-Optimierung). Back-End: maschinenspezifischer Teil (z. B. I/O, Codegenerierung) Grundlagen der Programmierung 2 (Compiler-A) 9/21
12 Worte, Zeichenketten, formale Sprachen Gegeben: ein Alphabet Σ Definitionen: Eine Zeichenkette (String) ist endliche Folge von Σ-Symbolen ε bezeichnet den leeren String Σ : die Menge aller Worte über Σ formale Sprache über Σ: ist definiert als eine Teilmenge von Σ Beispiele Σ = {a, b, c}, ac, cbaaaabcc sind Strings über Σ. Grundlagen der Programmierung 2 (Compiler-A) 10/21
13 Beispiele Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}: Die Ziffernrepräsentationen aller natürlichen Zahlen ist eine formale Sprache über Σ. Z.B. 111, 7, ,... Σ = {A,..., Z, a,..., z, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ), (,...}. Alle möglichen Haskell-Programme (als Strings) sind eine formale Sprache über Σ. Z.B. die Zeichenfolge: main = map quadrat [] Grundlagen der Programmierung 2 (Compiler-A) 11/21
14 Reguläre formale Sprachen: Formalismen Beschreibungsmöglichkeiten für reguläre formale Sprachen: reguläre Ausdrücke (rechts- bzw. links-)reguläre Grammatik (nur ein Nichtterminal am rechten bzw. linken Ende von rechten Seiten von Produktionen erlaubt) DEA (deterministischer endlicher Automat): akzeptierte Sprache NEA (nicht-deterministischer endlicher Automat): akzeptierte Sprache Diese sind alle äquivalent in folgendem Sinn: die gleichen formalen Sprachen sind damit definierbar Grundlagen der Programmierung 2 (Compiler-A) 12/21
15 Reguläre Ausdrücke: Beispiele 0+( )( ) positive ganze Zahlen (als Text) Grundlagen der Programmierung 2 (Compiler-A) 13/21
16 Reguläre Ausdrücke: Beispiele 0+( )( ) positive ganze Zahlen (als Text) (A Z)(A Z + a z) Worte, die mit Großbuchstaben beginnen Grundlagen der Programmierung 2 (Compiler-A) 13/21
17 Reguläre Ausdrücke: Beispiele 0+( )( ) positive ganze Zahlen (als Text) (A Z)(A Z + a z) Worte, die mit Großbuchstaben beginnen (A Z)(A Z + a z)(a Z + a z) Worte aus drei Buchstaben, die mit Großbuchstaben beginnen Nicht regulär: alle geklammerten Ausdrücke wie (1 + ((2 + 3) + 9) Grundlagen der Programmierung 2 (Compiler-A) 13/21
18 Lexikalische Analyse (Tokenizer, Scanner) Aufgaben-Aufteilung des Compilers: Zuerst Scanner Zeichen und Symbol-Analyse für reguläre formale Sprache Dann Parser Syntax-Analyse für kontextfreie formale Sprache Aufgaben des Scanners: Erkennung von: Zahlen, Bezeichner, Namen, Schlüsselworte, Strings Aufbau der Symboltabelle Zeichenstrom Tokenstrom und Weitergabe an den Parser Es gibt Scanner-Generatoren (Z.B. lex). Allerdings ist es oft einfacher, einen Scanner selbst zu schreiben. Z.B. unter Benutzung endlicher Automaten. Grundlagen der Programmierung 2 (Compiler-A) 14/21
19 Scanner: Etwas genauer Einlesen des Programmtexts als lineare Zeichenkette Beseitigung von Kommentaren, Leer- und Tabulatorzeichen. Zusammenfassen von Teilstrings (Schlüsselworte, Bezeichner, Zahlenwerte, u ä) Ergebnis: Strom von Token Ein Token kann bestehen aus: Markierung: Art des Tokens (Schlüsselwort, Name, Zahl,... ) Attribute: wie String, Zahlwert, Position im Eingabefile. Üblich: Eigenes Ende-Token für Eingabestrom. Grundlagen der Programmierung 2 (Compiler-A) 15/21
20 Beispiel für Tokens Eingabe Tokenmarkierung Attribut Position in der Eingabe if Keyword if Num x1 Id x Mult Code( ) 2000 <= Relop Code(<=) (501,30) Grundlagen der Programmierung 2 (Compiler-A) 16/21
21 Grammatik-Zerlegung: Scanner Parser Zahl ::= Ziffer Ziffer Zahl Ziffer ::= Bezeichner ::= Char Char RestBez RestBez ::= Alphanum RestBez Alphanum Alphanum ::= Ziffer Char E ::= E + T T T ::= T F F F ::= (E) Zahl Bezeichner Parseralphabet = {Tokenmarkierungen} Parseralphabet im Beispiel: {+,*,Zahl, Bezeichner,),( } Der Parser behandelt alle Bezeichner als ein einziges Terminal Grundlagen der Programmierung 2 (Compiler-A) 17/21
22 Compiler-Phasen: Struktur und Typen Typen der Funktionen, in Haskell-Notation: Scanner: deterministischer Teil-Parser: Teil-Parser mit Backtracking Gesamt-Parser: String -> [Token] [Token] -> ([Token], Syntaxbaum) Tokenliste -> (Rest der Tokenliste, Syntaxbaum der konsumierten Tokenliste) [Token] -> [([Token], Syntaxbaum)] Tokenliste -> Liste der Möglichkeiten [Token] -> Syntaxbaum Grundlagen der Programmierung 2 (Compiler-A) 18/21
23 Fehlererkennung des Scanners falsche Zahlen Z.B. 123.a falsche Escape-Folgen in Strings, ein fehlendes String-Endezeichen, oder evtl. Längenüberschreitungen. Bezeichner, die nicht der Konvention entsprechen Ungültige Symbole in bestimmten Kontexten Nicht erkennbar für den Scanner: Klammerfehler, Klammerfehler bzgl. (tief) geschachtelter Kommentare falsche Schlüsselworte. Grundlagen der Programmierung 2 (Compiler-A) 19/21
24 Scannen von Kommentaren und Strings String im Eingabestrom: = Unterstring mit linkem und rechtem Begrenzungssymbol. Bekannte Problematik: String im String? Beachte: trennt, erzeugt aber keine Klammerstruktur sinnvolle Lösungsalternativen: Escape-symbol \ als Kommando: \ im String \\ im String \ Verdopplung: im String Nachteil: Exponentiell große Strings könnten in der Eingabe erforderlich sein abhängig von der Tiefe bzw. der Anzahl Scanner-Durchgänge. Der Scanner darf keine Leerzeichen in Strings entfernen Grundlagen der Programmierung 2 (Compiler-A) 20/21
25 Scannen von Kommentaren: Zeilenkommentare geklammerte Kommentare Anfangssymbol z.b. * oder ; oder % oder oder //. Kommentar-Begrenzer: Z.B. Anfang: /, Ende: /. Aktuelle Programmiersprachen: nur eine Klammerebene; Echte Kommentar-Schachtelung muss vom Parser erkannt werden. Beachte Zeilenkommentar im String sind Stringzeichen. Grundlagen der Programmierung 2 (Compiler-A) 21/21
Grundlagen 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
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
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,
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
MehrLexikalische Analyse, Tokenizer, Scanner
Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,
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,
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
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
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
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
MehrLexikalische Programmanalyse der Scanner
Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung
MehrVarianten endlicher Automaten
Varianten endlicher Automaten Varianten endlicher Automaten 2 Endliche Automaten mit λ-übergängen können aktuellen Zustand wechseln, ohne ein Zeichen zu lesen; sind praktisch (vereinfachen oft die Modellierung
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 2, SoSe 19
Grundlagen der Programmierung 2, SoSe 19 Prof. Dr. Manfred Schmidt-Schauß Fachbereich Informatik Johann Wolfgang Goethe-Universität Postfach 11 19 32 D-60054 Frankfurt E-mail:schauss@ki.informatik.uni-frankfurt.de
MehrGrundlagen der Programmierung 2, SoSe 18
Grundlagen der Programmierung 2, SoSe 18 Prof. Dr. Manfred Schmidt-Schauß Fachbereich Informatik Johann Wolfgang Goethe-Universität Postfach 11 19 32 D-60054 Frankfurt E-mail:schauss@ki.informatik.uni-frankfurt.de
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
MehrInhalt Kapitel 11: Formale Syntax und Semantik
Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte
MehrCompiler, Übersetzer. Allgemeine Erklärung / Definition
Compiler, Übersetzer Allgemeine Erklärung / Definition Ein Übersetzer ist ein Programm, das ein S 1 -Wort den Quelltext in ein S 2 -Wort umwandelt den Zieltext wobei die Semantik erhalten bleibt. Frage:
MehrAnwenundg regulärer Sprachen und endlicher Automaten
Proseminar Theoretische Informatik Dozent: Prof. Helmut Alt Anwenundg regulärer Sprachen und endlicher Automaten Madlen Thaleiser 30. Oktober 2012 Reguläre Sprachen Regulärer Ausdruck definiert über einem
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
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
MehrCompiler: Grundlagen
Kapitel 7 Compiler: Grundlagen 7.1 Compiler, Übersetzer Eine etwas vereinfachte Definition ist: Ein Übersetzer (Compiler) ist ein Programm, das ein Wort einer formalen Sprache S 1 (den Quelltext) in ein
MehrEin Compiler ist ein Programm, das ein Programm einer Programmiersprache
Kapitel 5 Compiler: Grundlagen Unterlagen zu Programmierung 2 im Sommersemester 2012 5.1 Compiler, Übersetzer Eine etwas vereinfachte Definition ist: Ein Übersetzer (Compiler) ist ein Programm, das ein
MehrCompiler: Grundlagen
Kapitel 5 Compiler: Grundlagen Unterlagen zu Programmierung 2 im Sommersemester 2010 5.1 Compiler, Übersetzer Eine etwas vereinfachte Definition ist: Ein Übersetzer (Compiler) ist ein Programm, das ein
MehrOperationen auf Grammatiken
Operationen auf Grammatiken Ziel: Normalisierungen, Vereinfachungen, Elimination bestimmter Konstrukte Erzeugen eines Parsers Transformation G 1 G 2 mit L(G 1 ) = L(G 2 ) I.a. Parsebaum 1 (w) Parsebaum
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. (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
MehrGrundlagen der Programmierung 2 (Comp-D)
Grundlagen der Programmierung 2 (Comp-D) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 31. Mai 2007 Operationen auf Grammatiken Ziel: Normalisierungen, Vereinfachungen
MehrEinführung in die Programmiertechnik
Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher
Mehr6 Kontextfreie Grammatiken
6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen,
Mehr1 Formale Sprachen, reguläre und kontextfreie Grammatiken
Praktische Informatik 1, WS 2001/02, reguläre Ausdrücke und kontextfreie Grammatiken 1 1 Formale Sprachen, reguläre und kontextfreie Grammatiken Ein Alphabet A ist eine endliche Menge von Zeichen. Die
MehrPumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo
1 Endliche Automaten Modellierungskonzept mit vielen brauchbaren Eigenschaften schnelle Spracherkennung graphisch-visuelle Beschreibung automatische Korrektheitsbeweise gute Kompositionalitätseigenschaften
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
MehrFormale Sprachen, reguläre und kontextfreie Grammatiken
Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache
MehrDeterministischer Kellerautomat (DPDA)
Deterministische Kellerautomaten Deterministischer Kellerautomat (DPDA) Definition Ein Septupel M = (Σ,Γ, Z,δ, z 0,#, F) heißt deterministischer Kellerautomat (kurz DPDA), falls gilt: 1 M = (Σ,Γ, Z,δ,
MehrPhasen eines Compilers. Grundlagen der Programmierung 2. Programm für heute. LR-Parser, Shift-Reduce-Verfahren. Schiebe-Reduziere-Parser
Phasen eines Compilers Grundlagen der Programmierung 2 Schiebe-Reduziere-Parser Prof Dr. Manfred Schmidt-Schauß (unter Mithilfe von PD Dr. David Sabel) Quelltext (String) Syntaxbaum Lexikalische Analyse
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
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...................................
MehrAutomaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2011 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Wir beschäftigen uns ab
Mehr9 Theoretische Informatik und Compilerbau
9 Theoretische Informatik und Compilerbau Theoretische Informatik und Mathematik schaffen die Basis für viele der technischen Entwicklungen, die wir in diesem Buch besprechen. Die boolesche Algebra (S.
MehrLiteratur Reguläre Ausdrücke
Literatur Reguläre Ausdrücke [2-1] https://de.wikipedia.org/wiki/regul%c3%a4rer_ausdruck [2-2] http://openbook.rheinwerk-verlag.de/linux/linux_kap08_001.html http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_013_0
MehrKapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9
Kapitel 4 Einführung in den Scannergenerator Flex Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9 Generatoren für die lexikalische Analyse Scannergeneratoren werden eingesetzt um die
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
Mehr4. Die lexikalische Analyse
zerlegt Folge von Zeichen in Eingabedatei in Folge von Symbolen (Token) Scanner-Sieber-Modul Token: Typ und Inhalt übliche Token-Typen: reservierte Wörter (if, while, for, ) Bezeichner (x, dauer, name,..)
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
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
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.
MehrAutomaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Einschub: Kellerautomaten
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,
Mehr3 Syntax von Programmiersprachen
3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Grammatik G ist ein Quadrupel
MehrPraktikum Softwareanalyse und -transformation
Praktikum Softwareanalyse und -transformation Thilo Mende Universität Bremen Fachbereich 3 Mathematik und Informatik Arbeitsgruppe Softwaretechnik http://www.informatik.uni-bremen/st Sommersemester 2009
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
MehrInhalt Kapitel 5: Syntax
Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des
MehrEinführung in die Informatik. Programming Languages
Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens
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
MehrCompilerbau. Übung 2. Prof. Johann-Christoph Freytag Dr. Klaus Ahrens Jörg Bachmann Fabian Fier Dorian Weber. 18. Mai 2016
2 Prof. Johann-Christoph Freytag Dr. Klaus Ahrens Jörg Bachmann Fabian Fier Dorian Weber 18. Mai 2016 Inhalt Wiederholung Compilertechnologie Lexer Flex 2 / 24 Wiederholung Compilertechnologie Architekturschema
MehrReguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,
Reguläre Sprachen Reguläre Sprachen (Typ-3-Sprachen) haben große Bedeutung in Textverarbeitung und Programmierung (z.b. lexikalische Analyse) besitzen für viele Entscheidungsprobleme effiziente Algorithmen
MehrFormale Sprachen und Automaten
Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten
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
MehrSprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri
Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS
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
MehrEinführung in die Programmierung mit Java
Einführung in die Programmierung mit Java Teil 5: Syntax Martin Hofmann Steffen Jost LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 10. November 2015 Martin
MehrFormale Grundlagen der Wirtschaftsinformatik
Formale Grundlagen der Wirtschaftsinformatik Nikolaj Popov Research Institute for Symbolic Computation popov@risc.uni-linz.ac.at Sprachen und Grammatiken Teil II Sprache Definition: Ein Alphabet Σ ist
Mehr9 Compilerbau-Werkzeuge
9.1 Überblick In der Praxis des Compilerbaus werden heute vielfach Werkzeuge eingesetzt, die Routineaufgaben erleichtern sollen. In erster Linie ist dabei an die Punkte Generierung eines Scanners Generierung
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
MehrKontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48
Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 48 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs rekursiv definierten baumartigen
MehrSoftware Entwicklung 2. Übersetzerbau 1
Software Entwicklung 2 Übersetzerbau 1 Übersetzerbau I Inhalt Aufgaben von Übersetzern Weitere Anwendungen von Übersetzern Arten von Übersetzern Grundlagen: Sprachdefinition Grammatik: BNF, EBNF, Syntaxdiagramme
Mehr2.1 Allgemeines. Was ist eine Sprache? Beispiele:
Was ist eine Sprache? Beispiele: (a) Deutsch, Japanisch, Latein, Esperanto,...: Natürliche Sprachen (b) Pascal, C, Java, Aussagenlogik,...: Formale Sprachen Wie beschreibt man eine Sprache? (i) Syntax
MehrKontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45
Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 45 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs beliebig tief geschachtelten
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
Mehr3. Nur die mit diesen Regeln erzeugten Ausdrücke sind reguläre Ausdrücke über Σ.
H O C H S C H U L E University of Applied Sciences ZITTAU/GÖRLITZ Fachbereich Informatik Prof. Dr. Christian Wagenknecht Formale Sprachen und Automaten Übung: Reguläre Ausdrücke Zur Erinnerung: Reguläre
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
MehrAlphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
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
MehrEinführung in den Compilerbau
Einführung in den Compilerbau Lexikalische Analyse I Dr. Armin Wolf 2. Vorlesung SoSe 2010, Universität Potsdam 1 Organisatorisches Schriftliche Prüfung (Klausur) wie wäre es mit Mo. 26. Juli 2010? - Andere
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)
MehrObjektorientierte Programmierung. Kapitel 3: Syntaxdiagramme
Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/
MehrKontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
MehrVorname:... Matrikel-Nr.:... Unterschrift:...
Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Diplom (RGS 9) Compilerbau Sommersemester 2005 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise:
MehrWS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven
WS06/07 Referentin: Katharina Blinova Formale Sprachen Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven 1. Allgemeines 2. Formale Sprachen 3. Formale Grammatiken 4. Chomsky-Hierarchie 5.
MehrWerkzeuge zur Programmentwicklung
Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul
MehrDer Übersetzungsvorgang
Parser und Compiler Sie wissen, wie ein Compiler und Parser funktioniert Sie können eine Übergangstabelle entwickeln Sie können einen endlichen Automaten zur Überprüfung eines Satzes erstellen Der Übersetzungsvorgang
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
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
MehrEin Fragment von Pascal
Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und
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)
MehrTheoretische Informatik I
Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Verarbeitung von Programmiersprachen Was ist das einfachste
MehrProseminar: Fortgeschrittene Programmierung 1
Proseminar: Fortgeschrittene Programmierung 1 Parsen and Backtracking WS 2007 2008 Christian Wawrzinek Übersicht 2 1.Grammatiken 2. Parser 3.Backtracking 4.Kombinatoren Übersicht 3 1.Grammatiken 2. Parser
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
Mehr