Grundlagen der Programmierung 2 (Comp-A)
|
|
- Frieder Weber
- vor 5 Jahren
- Abrufe
Transkript
1 Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 23. Mai 2007
2 Compiler; Übersetzungprogramme 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. Beispiele: Programme in Haskell, Java, Python, oder PASCAL, werden in Maschinencode, C, Assembler, oder Bytecode übersetzt. LaTex-Eingaben werden in eine PDF-Datei (bzw. ps-datei) übersetzt Grundlagen der Programmierung 2 (Comp-A) - 1 -
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 (Comp-A) - 2 -
4 T-Diagramme nach N. Wirth S1 S2 S1 S2 S3 S3 S3 Intp Übersetzung von S 1 nach S 2 geschrieben in S 3 Im rechten Diagramm: ein Interpreter für S 3 gegeben. kann ausgeführt werden Grundlagen der Programmierung 2 (Comp-A) - 3 -
5 Zusammensetzen von Compilern: S1 S2 S2 S3 S4 S5 S4 Intp S5 Intp Hintereinanderausführung: übersetzt S 1 S 3, falls S 4, S 5 -Interpreter gegeben sind. Grundlagen der Programmierung 2 (Comp-A) - 4 -
6 Zusammensetzen von Compilern: S1 S2 S1 S2 S4 S4 S5 S5 S6 S5 Intp S6 Intp das rechteste T-Diagramm steht für den resultierenden Compiler Konstruierbar: lauffähiger Übersetzer von S 1 nach S 2 der nur einen S 5 -Interpreter benötigt Grundlagen der Programmierung 2 (Comp-A) - 5 -
7 T-Diagramme; Anwendung: Bootstrapping Konstruktion eines Compilers für P neu möglichst viel bereits in P neu geschrieben P neu,cor -Compiler für einen kleinen Ausschnitt P neu,l -Übersetzer nach P neu,cor, geschrieben in P neu,cor 3. P neu,l - Compiler zusammensetzen P L P COR PL P COR P COR C P COR P COR C C C C C Intp C Intp C Intp Resultat P L C C C Intp Grundlagen der Programmierung 2 (Comp-A) - 6 -
8 Anwendung der T-Diagramme: Bootstrapping Darauf aufbauend, kann man weiter konstruieren: P XXL P L P XXL P L P L C P L P L C C C C C Intp C Intp C Intp Resultat: Ein Compiler, der die volle Sprache P XXL übersetzt. und weitgehend in P L geschrieben ist. Grundlagen der Programmierung 2 (Comp-A) - 7 -
9 Phasen eines Compilers Lexikalische Analyse (Scanning): Text des Programms wird in Tokenstrom umgewandelt Syntaxanalyse (Parsing): Tokenstrom wird entsprechend der Grammatik in eine 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 (Comp-A) - 8 -
10 Beispiele zu den Phasen Lexikalische Analyse Z.B. IF 13 == X1 THEN A wird zu: ( IF, 13, ==, X1, THEN, A ) Syntaxanalyse (Parsing): Test, ob das Programm der Grammatik entspricht. Umwandlung in Syntaxbaum: Z.B. ( IF, 13, ==, X1, THEN, A ) wird zu: IF 13 == X1 THEN A Semantische Analyse Typüberprüfungen : 1 + a wird zurückgewiesen. Sind Variablen / Funktionen / Klassen an der richtigen Stelle deklariert? Grundlagen der Programmierung 2 (Comp-A) - 9 -
11 Weitere Komponenten Symboltabelle speichert wesentlichen Attribute (Typ, Gültigkeitsbereich, etc.) der Bezeichner des Quellprogramms Fehlerbehandlung Analyse der Fehler, Lokalisierung, Meldung an den Benutzer Evtl. automatische Behebung des Fehlers und Fortsetzung der Übersetzung Grundlagen der Programmierung 2 (Comp-A)
12 Weitere mögliche Phasen Einleseroutine; Zeichenbehandlung abhängig vom Prozessor bzw. Betriebssystem I.a. Standard-Routinen (Einlesen, Zeichenkodierung) Präprozessor Vorverarbeitung des Quellprogramm (i.a. Makro-Expansion) Assembler übersetzt das Assemblerprogramm in Objektcode. Binder/Lader Umsetzung in ausführbaren Maschinenkode plus Hinzunahme von anderem Objektcode z.b. aus Bibliothek Grundlagen der Programmierung 2 (Comp-A)
13 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 (Comp-A)
14 Worte, Zeichenketten, formale Sprachen Gegeben: ein Alphabet Σ Eine Zeichenkette (String) ist endliche Folge Σ-Symbolen ε leerer String Σ : die Menge aller Worte über Σ formale Sprache über Σ: Teilmenge von Σ Beispiele Σ = {a, b, c}, ac, aaaabcc sind Strings über Σ. Grundlagen der Programmierung 2 (Comp-A)
15 Beispiele Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}: Die Ziffernrepräsentationen aller natürlichen Zahlen ist eine Sprache über Σ. 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 Σ. Grundlagen der Programmierung 2 (Comp-A)
16 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, Namen, Schlüsselworte, Strings d.h. reguläre Ausdrücke 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 (Comp-A)
17 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: Attribute: Art des Tokens wie String, Zahlwert, Position im Eingabefile. Üblich: Eigenes Endeztoken für Eingabestrom; Tokenstrom, Stack Grundlagen der Programmierung 2 (Comp-A)
18 Beispiel für Tokens Eingabe Tokenmarkierung Attribut Position in der Eingabe if Keyword if Num x1 Id x Mult Code( ) 2000 <= Relop Code(<=) 5000 Grundlagen der Programmierung 2 (Comp-A)
19 Grammatik-Zerlegung: Parser Tokenizer E ::= E + T T T ::= T F F F ::= (E) Zahl Bezeichner Zahl ::= Ziffer ZifferZahl Ziffer ::= Bezeichner ::= Char Char Alphanum Alphanum ::= Ziffer Char Parseralphabet = {Tokenmarkierungen} Parser behandelt alle Bezeichner als ein Terminal Z.B. tatsächliches Parseralphabet im Beispiel: {+,*,Z, B,),( } Grundlagen der Programmierung 2 (Comp-A)
20 Phasen: Struktur und Typen Typen, in Haskell-Notation: Scanner: det. Teil-Parser: Teil-Parser mit Backtracking Gesamt-Parser: String -> [Token] [Token] -> ([Token], Syntaxbaum) [Token] -> [([Token], Syntaxbaum)] [Token] -> Syntaxbaum Grundlagen der Programmierung 2 (Comp-A)
21 Fehlererkennung des Scanners falsche Zahlen Z.B. 123.a falsche Escape-Folgen in Strings ein fehlendes Stringendezeichen, 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 (Comp-A)
22 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. Scanner darf keine Leerzeichen in Strings entfernen Grundlagen der Programmierung 2 (Comp-A)
23 Scannen von Kommentaren: Zeilenkommentare geklammerte Kommentare Anfangssymbol z.b. * oder ; oder % oder oder //. Kommentar-Begrenzer: Z.B. Anfang: /, Ende: /. Aktuelle Programmiersprachen: nur eine Klammerebene; Schachtelung wird vom Editor per Zeilenkommentar unterstützt; Echte Kommentar-Schachtelung muss vom Parser erkannt werden. Beachte Zeilenkommentar im String sind Stringzeichen. Grundlagen der Programmierung 2 (Comp-A)
24 Reguläre formale Sprachen: Formalismen Äquivalente Beschreibungsmöglichkeiten für reguläre formale Sprachen: reguläre Ausdrücke (rechts- bzw. links-)reguläre Grammatik DEA (deterministischer endlicher Automat): akzeptierte Sprache NEA (nicht-deterministischer endlicher Automat): akzeptierte Sprache Grundlagen der Programmierung 2 (Comp-A)
25 Reguläre Ausdrücke Σ sei das Alphabet. R ::= a für a Σ (R) ε Leeres Wort RR Konkatinierte Ausdrücke R + R Auswahl bzw. Vereinigung R beliebige Anzahl Konkatinierungen Grundlagen der Programmierung 2 (Comp-A)
26 Reguläre Ausdrücke: Beispiele 0( ) positive ganze Zahlen (A Z)(A Z + a z) Worte, die mit Großbuchstaben beginnen (A Z)(A Z + a z)(a Z + a z) Worte mit drei Buchstaben, die mit Großbuchstaben beginnen Grundlagen der Programmierung 2 (Comp-A)
Grundlagen 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
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 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
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,
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
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:
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
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
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
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
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
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
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
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
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
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
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
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...................................
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
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
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
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
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,δ,
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
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
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
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
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
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
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.
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
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
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,..)
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
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
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
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
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
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
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,
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
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
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
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
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,
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
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
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
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.
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
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
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen
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
MehrTheoretische Informatik I
Theoretische Informatik I Rückblick Theoretische Informatik I 1. Mathematische Methoden 2. Reguläre Sprachen 3. Kontextfreie Sprachen Themen der Theoretischen Informatik I & II Mathematische Methodik in
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
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
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
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
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
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
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
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)
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
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
MehrInduktive Definition
Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9}
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
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
MehrCompilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse
Compilerbau Syntaxanalyse 68 LR(1)-Syntaxanalyse Bei der LL(1)-Syntaxanalyse wird allein aufgrund des nächsten Tokens die zu verwendende Produktion ermittelt. Bei der LR(1)-Syntaxanalyse braucht diese
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
MehrAutomaten und formale Sprachen Klausurvorbereitung
Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen
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
MehrAutomaten und formale Sprachen. Lösungen zu den Übungsblättern
Automaten und formale Sprachen zu den Übungsblättern Übungsblatt Aufgabe. (Sipser, exercise.3) M = ({q, q2, q3, q4, q5}, {u, d}, δ, q3, {q3}) δ: u d q q q 2 q 2 q q 3 q 3 q 2 q 4 q 4 q 3 q 5 q 5 q 4 q
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
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)
MehrFachseminar. Semantische Analyse
Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist
MehrPraktikum Funktionale Programmierung Teil 5: Codeerzeugung, Compiler, Interpreter und VM
Praktikum Funktionale Programmierung Teil 5: Codeerzeugung, Compiler, Interpreter und VM Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Zeitplan Teil 5 Meilenstein 1 Teil
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
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
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
MehrWo sind wir? Übersicht lexikale Struktur von Java
Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,
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
MehrEinführung in die Computerlinguistik Einführung in Perl (1)
Einführung in die Computerlinguistik Einführung in Perl (1) Dozentin: Wiebke Petersen 26.11.2009 Wiebke Petersen Einführung CL (WiSe 09/10) 1 Compiler Ein Compiler (auch Übersetzer oder Kompilierer genannt)
Mehr(Prüfungs-)Aufgaben zu formale Sprachen
(Prüfungs-)Aufgaben zu formale Sprachen (siehe auch bei den Aufgaben zu endlichen Automaten) 1) Eine Grammatik G sei gegeben durch: N = {S, A}, T = {a, b, c, d}, P = { (S, Sa), (S, ba), (A, ba), (A, c),
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
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
Mehr