1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28
|
|
- Berndt Diefenbach
- vor 6 Jahren
- Abrufe
Transkript
1 1 Attributierte Grammatiken 2 Zyklische AG 3 Codeerzeugung mit AGs Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28
2 Beispiel: Taschenrechner mit Attributierter Grammatik Produktion Semantische Regeln 1) L En L.val = E.val 2) E E 1 + T E.val = E 1.val + T.val 3) E T E.val = T.val 4) T T 1 F T.val = T 1.val F.val 5) T F T.val = F.val 6) F (E) F.val = E.val 7) F digit F.val = digit.lexval Zusatzfolien Semantische Analyse Wintersemester 2008/09 2 / 28
3 Zirkuläre Abhängigkeit Produktion A B Semantische Regeln A.s = B.i B.i = A.s A A.s B B.i Zusatzfolien Semantische Analyse Wintersemester 2008/09 3 / 28
4 Attributierter Parsebaum für 3 * 5 + 4n L.val = 19 E.val = 19 n E.val = 15 + T.val = 4 T.val = 15 F.val = 4 T.val = 3 + F.val = 5 digit.lexval = 4 F.val = 3 digit.lexval = 3 digit.lexval = 3 Zusatzfolien Semantische Analyse Wintersemester 2008/09 4 / 28
5 Grammatik mit Attributierung Produktion Semantische Regeln 1) T FT T.inh = F.val T.val = T.syn 2) T FT 1 T 1.inh = T.inh F.val T.syn = T 1.syn 3) T ɛ T.syn = T.inh 4) F digit F.val = digit.lexval Zusatzfolien Semantische Analyse Wintersemester 2008/09 5 / 28
6 Abhängigkeitsgraph für attributierten Parsebaum T 9 val F 3 val inh 5 T 8 syn digit 1 lexval F 4 val inh 6 T 7 syn digit 2 lexval ɛ Parse-Baum für digit * digit. Zusatzfolien Semantische Analyse Wintersemester 2008/09 6 / 28
7 Grammatik mit Attributierung für Typdeklarationen Produktion Semantische Regeln 1) D T L L.inh = T.type 2) T int T.type = integer 3) T float T.type = float 4) L L 1, id L 1.inh = L.inh; addtype(id.entry, L.inh) 5) L id addtype(id.entry, L.inh) Zusatzfolien Semantische Analyse Wintersemester 2008/09 7 / 28
8 Abhängigkeitsgraph für attributierten Parsebaum D T 4 type inh 5 T 6 entry float inh 7 L 8 entry, id 3 3 entry inh 9 L 10 entry, id 2 2 entry id 1 1 entry Parse-Baum für float id 1, id 2, id 3. Zusatzfolien Semantische Analyse Wintersemester 2008/09 8 / 28
9 AST-Aufbau mit AGs Produktion Semantische Regeln 1) E E 1 + T E.node = new Node(+, E 1.node, T.node) 2) E E 1 T E.node = new Node(, E 1.node, T.node) 3) E T E.node = T.node 4) T (E) T.node = E.node 5) T id T.node = new Leaf(id, id.entry) 6) T num T.node = new Leaf(num, num.val) Zusatzfolien Semantische Analyse Wintersemester 2008/09 9 / 28
10 Beispiel AST-Aufbau E.node E.node + T.node E.node T.node id T.node num id + id id num 4 Definition von c Definition von a Zusatzfolien Semantische Analyse Wintersemester 2008/09 10 / 28
11 Beispiel AST-Aufbau E.node E.node + T.node E.node T.node id T.node num id + id id num 4 Definition von c Definition von a Zusatzfolien Semantische Analyse Wintersemester 2008/09 10 / 28
12 Attributierte Grammatik für Arraytypen Produktion T B C B int B float C [ num ] C 1 C ɛ Semantische Regeln T.t = C.t C.b = B.t B.t = integer B.t = float C.t = array(num.val, C 1.t) C 1.b = C.b C.t = C.b Zusatzfolien Semantische Analyse Wintersemester 2008/09 11 / 28
13 Taschenrechner Implementierung L E n { print(e.val); } E E 1 + T { E.val = E 1.val + T.val; } E T { E.val = T.val; } T T 1 F { T.val = T 1.val F.val; } T F { T.val = F.val; } F (E) { F.val = E.val; } F digit { F.val = digit.lexval; } Zusatzfolien Semantische Analyse Wintersemester 2008/09 12 / 28
14 Parserstack mit synthetisierten Attributen... X Y Z Zustand/Grammatiksymbol... X.x Y.y Z.z Synthetisierte Attribute Stack-Spitze Zusatzfolien Semantische Analyse Wintersemester 2008/09 13 / 28
15 Beispiel Schriftsatz Zusatzfolien Semantische Analyse Wintersemester 2008/09 14 / 28
16 Attributierte Grammatik für den Schriftsatz Produktion Semantische Regeln 1) S B B.ps = 10 2) B B 1 B 2 B 1.ps = B.ps B 2.ps = B.ps B.ht = max B 1.ht, B 2.ht B.dp = max B 1.dp, B 2.dp 3) B B 1 sub B 2 B 1.ps = B.ps B 2.ps = 0.7 B.ps B.ht = max(b 1.ht, B 2.ht 0.25 B.ps) B.dp = max(b 1.dp, B 2.dp B.ps) 4) B ( B 1 ) B 1.ps = B.ps B.ht = B 1.ht B.dp = B 1.dp 5) B text B.ht = getht(b.ps, text.lexval) B.dp = getdp(b.ps, text.lexval) Zusatzfolien Semantische Analyse Wintersemester 2008/09 15 / 28
17 1 Attributierte Grammatiken 2 Zyklische AG 3 Codeerzeugung mit AGs Zusatzfolien Semantische Analyse Wintersemester 2008/09 16 / 28
18 Erläuterung zur AG Blockschachtelung siehe Folien Semantik Seite 12 umg Block umg aus Deklarationen umg ein umg Anweisungen umg aus Deklarationen umg ein umg aus Deklaration umg ein. bezeichner symbol typ deftab variable symbol Zusatzfolien Semantische Analyse Wintersemester 2008/09 17 / 28
19 Reparieren der zirkulären Abhängigkeit rule block ::= deklarationen ; anweisungen. attribution anweisungen.umg := deklarationen.umg aus; deklarationen.umg aus := append(block.umg,deklarationen.umg ein) rule deklarationen ::= deklarationen ; deklaration. attribution deklarationen[1].umg ein := append(deklarationen[2].umg ein, deklaration.umg ein); deklarationen[2].umg aus := deklarationen[1].umg aus; deklaration.umg aus := deklarationen[1].umg aus rule deklaration ::= bezeichner : typ := variable ;. attribution typ.deftab := deklaration.umg aus.search(typ.symbol); variable.deftab:= deklaration.umg aus.search(variable.symbol); deklaration.umg ein := new Umg(bezeichner.symbol,typ.deftab,...); Zusatzfolien Semantische Analyse Wintersemester 2008/09 18 / 28
20 Reparieren der zirkulären Abhängigkeit rule block ::= deklarationen ; anweisungen. attribution anweisungen.umg := append(block.umg, declarationen.umg ein) deklarationen.umg aus := block.umg rule deklarationen ::= deklarationen ; deklaration. attribution deklarationen[1].umg ein := append(deklarationen[2].umg ein, deklaration.umg ein); deklarationen[2].umg aus := deklarationen[1].umg aus; deklaration.umg aus := deklarationen[1].umg aus rule deklaration ::= bezeichner : typ := variable ;. attribution typ.deftab := deklaration.umg aus.search(typ.symbol); variable.deftab:= deklaration.umg aus.search(variable.symbol); deklaration.umg ein := new Umg(bezeichner.symbol,typ.deftab,...); Zusatzfolien Semantische Analyse Wintersemester 2008/09 18 / 28
21 Reparierte AG umg Block umg aus Deklarationen umg ein umg Anweisungen umg aus Deklarationen umg ein umg aus Deklaration umg ein. bezeichner symbol typ deftab variable symbol Zusatzfolien Semantische Analyse Wintersemester 2008/09 19 / 28
22 1 Attributierte Grammatiken 2 Zyklische AG 3 Codeerzeugung mit AGs Zusatzfolien Semantische Analyse Wintersemester 2008/09 20 / 28
23 LAG(1)-Attributierte Grammatiken Eine Attributierte Grammatik gehört zur Klasse der LAG(1) wenn jedes Attribut entweder: synthetisiert ist ererbt ist, mit folgenden Einschränkungen: Sei A X 1 X 2... X n die Produktion mit dem ererbten Attribut X i.a. Die Berechnungsregeln für X i dürfen nur folgende Attribute verwenden: Attribute des Kopfes A der Produktion Attribute der Symbole X 1, X 2,..., X i 1 Attribute von X i, aber nur so, dass im Abhängigkeitsgraphen der Attribute von X i keine Zyklen entstehen. Zusatzfolien Semantische Analyse Wintersemester 2008/09 21 / 28
24 rekursiver Abstieg mit direkter Codeerzeugung void parse statement(label next) { label l1, l2; if (token == T while) { next token(); if (token == ( ) next token(); else error(...); l1 = new(); l2 = new(); print( label, l1); parse condition(next, l2); if (token == ) ) next token(); else error(...); print( label, l2); parse statement(l1); } else { / other statements / } } Zusatzfolien Semantische Analyse Wintersemester 2008/09 22 / 28
25 Attributierte Grammatik für while-anweisungen S while ( C ) S 1 L 1 = new(); L 2 = new(); S 1.next = L 1 ; C.false = S.next; C.true = L 2 ; S.code = label L 1 C.code label L 2 S.code Zusatzfolien Semantische Analyse Wintersemester 2008/09 23 / 28
26 Expandierung von S entsprechend der while-produktion Stack-Spitze while ( Action C ) Action S 1 snext = x false =? al1 =? next =? L1 true =? al2 =? L1 = new(); L2 = new(); stack[top 1].false = snext; stack[top 1].true = L2; stack[top 3].al1 = L1; stack[top 3].al2 = L2; print( label, L1); L2 stack[top 1] = al1; print( label, al2); Zusatzfolien Semantische Analyse Wintersemester 2008/09 24 / 28
27 Konstruieren der synthetisierten Attribute Stack-Spitze while ( Action C Syn.C.code ) S 1 Syn.S 1.code Syn.S.code L1 =? false =? code =? next =? code =? code =? L2 =? true =? Ccode =? data L1 = new(); L2 = new(); stack[top 1].true = L2; stack[top 4].next = L1; stack[top 5].l1 = L1; stack[top 5].l2 = L2; stack[top 3].Ccode = code; l1 =? l2 =? stack[top 1].code = label l1 Ccode label l2 code; actions Zusatzfolien Semantische Analyse Wintersemester 2008/09 25 / 28
28 Erweiterte Produktionen mit Dummy-Nonterminals zur Attributberechnung S while ( M C ) B S 1 M ɛ N ɛ Zusatzfolien Semantische Analyse Wintersemester 2008/09 26 / 28
29 LR-Parserstack nach der Reduktion von ɛ zu M Stack-Spitze Code, der während der Reduktion von ɛ zu M ausgeführt wird:? S.next while ( M C.true C.false L1 L2 L = new(); L = new(); C.true = L 2 ; C.false = stack[top 3].next Zusatzfolien Semantische Analyse Wintersemester 2008/09 27 / 28
30 LR-Parserstack mit Attributberechnung Stack-Spitze? while ( M C ) N S 1 S.next C.true C.code S 1.next S 1.code C.false L1 L2 Zusatzfolien Semantische Analyse Wintersemester 2008/09 28 / 28
31 Ausgeführte Aktionen tempcode = label stack[top 4].L1 stack[top 3].code label stack[top 4].L2 stack[top].code; top = top 5; stack[top].code = tempcode; Zusatzfolien Semantische Analyse Wintersemester 2008/09 29 / 28
Compilerbau II Skript
Universität Siegen Fachbereich 12, Angewandte Informatik und Elektrotechnik Dozent: Dr. Kurt Sieber; Compilerbau II Skript Christian Uhrhan 18. März 2011 Inhaltsverzeichnis 1 Syntaxgerichtete Übersetzung
MehrInhalte der Vorlesung. 6. Syntaxgesteuerte Übersetzung. 6. Syntaxgesteuerte Übersetzung. Attributierter Syntaxbaum
Inhalte der Vorlesung 6. Syntaxgesteuerte Übersetzung 1.Einführung 2.Lexikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc
Mehr1 Grammar Engineering. 2 Abstrakte Syntax als abstrakte Algebra. 3 LL(1)-Parser. 4 LR Parser. 5 Fehlerbehandlung. 6 Earley Parser
1 Grammar Engineering 2 Abstrakte Syntax als abstrakte Algebra 3 LL(1)-Parser 4 LR Parser 5 Fehlerbehandlung 6 Earley Parser Zusatzfolien Syntaktische Analyse Wintersemester 2008/09 1 / 44 Grammar Engineering
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
MehrKompilerbau Semantische Aktionen & Abstrakte Syntax. Michael Leuschel
Kompilerbau Semantische Aktionen & Abstrakte Syntax Michael Leuschel An Analogy from Natural Language Characters: Source Program J i m s a w M a r y Source Program Lex Words (lexemes): Jim Tokens saw Mary
MehrÄquivalente Grammatiken / attributierte Grammatik
Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,
MehrKapitel 5: Syntax-Analyse
Kapitel 5: Syntax-Analyse Aufgabe Die Token-Folge wird strukturiert in Anweisungen, Ausdrücke etc., um die Semantische Analyse und Code-Erzeugung zu ermöglichen Themen Kontextfreie Grammatik Äquivalente
Mehrzu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Mehr1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)
Praktische Informatik (Software) Vorlesung Softwareentwicklung 1 Prof. Dr. A. Ferscha Hauptklausur am 01. 02. 2001 Zuname Vorname Matr. Nr. Stud. Kennz. Sitzplatz HS / / / Punkte Note korr. Fügen Sie fehlende
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
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
MehrSyntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrAdvanced Programming in C
Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer
MehrDer Grid-Occam-Compiler. Syntaxanalyse
Der Grid-Occam-Compiler Syntaxanalyse Grammatikgetriebener Compilerbau Grammatik Teil der Sprachdefinition Grammatik liefert Liste der Tokenklassen Grammatik hilft bei Strukturierung der abstrakten Syntax
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
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
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrGrundlagen der Programmierung in C Funktionen
Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrGrundlagen der Programmierung in C++ Kontrollstrukturen
Grundlagen der Programmierung in C++ Kontrollstrukturen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Block Keine Kontrollstruktur im eigentlichen Sinn Dient
MehrProgrammierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.
MehrCompiler. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse. Autor: Aho et al.
Folie: 1 Kapitel 4 Übersicht Übersicht Syntax: Definition 4 syn-tax: the way in which words are put together to form phrases, clauses, or sentences. Webster's Dictionary Die Syntax (griechisch σύνταξις
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
Mehr5 Semantische Analyse Symboltabelle
5 Semantische Analyse Symboltabelle Compiler Benutzerdialog Parser Scanner Symboltabelle Codegenerator Attribute Name Typ Platz Scope Range Adresse Variablen erhalten Attribute wie mit dem sie angesprochen
MehrSyntaxgerichtete Übersetzung und Typüberprüfung
Westfälische Wilhelms-Universität Münster Ausarbeitung Syntaxgerichtete Übersetzung und Typüberprüfung im Rahmen des Seminars: Übersetzung von künstlichen Sprachen Marco A. Castillo Themensteller: Prof.
MehrTheoretische Informatik. Reguläre Sprachen und Automaten
Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen
MehrJAVA - Methoden
Übungen Informatik I JAVA - http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 sind eine Zusammenfassung von Deklarationen und Anweisungen haben einen Namen und können
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrVorlesung Programmieren
Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),
MehrGrundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 3: Anweisungen, Blöcke und Programmfluss Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung
MehrCompilerbau im Sommersemester 2012
Compilerbau im Sommersemester 2012 Vorlesung und Konstruktionsübung Univ.Prof. Dipl.Ing. Dr. Franz Wotawa Institute for Software Technology Technische Universität Graz Inffeldgasse 16b/2, A-8010 Graz,
MehrÜbersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
Mehr2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.
2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int
MehrII.3.1 Rekursive Algorithmen - 1 -
1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.3.1 Rekursive Algorithmen -
MehrGeordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
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. Kapitel. Syntaktische Analyse. Kapitel 4. Folie: 1. Syntaktische Analyse: LL Parsing. Autor: Aho et al.
Folie: 1 Kapitel 4 : LL Parsing Was ist Parsing? 2 E num E CFG E+E G E (E) Token String s Parser s L(G) Fehlermeldung No Yes Parsebaum für S in G Beispiel S (S)S ε Was ist die generierte Sprache? Beweis?
MehrGraphic Coding. Klausur. 9. Februar 2007. Kurs A
Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
MehrCompilerbau. Wintersemester 2009 / 2010. Dr. Heiko Falk
Compilerbau Wintersemester 2009 / 2010 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung für Eingebettete Systeme Kapitel 4 Syntaktische Analyse (Parser) Folie
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
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
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrKapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
MehrAuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
MehrExcel VBA. Teil 11.8. Zusammenfassung! Was wir können sollten! V0.5 5.4.2013
Excel VBA Teil 11.8 Zusammenfassung! Was wir können sollten! V0.5 5.4.2013 1 von 17 Inhaltsverzeichnis Seite 3... Modul einfügen Seite 4... Prozeduren oder Funktionen Seite 5... Ein/Ausgaben Seite 6...
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrMakro Programmierung User Interface (Entwicklungs- Umgebung) Grafische Werkzeugbox. GUI Form erstellen (UserForm)
Makro Programmierung User Interface (Entwicklungs- Umgebung) Grafische Werkzeugbox GUI Form erstellen (UserForm) GUI definieren Aktivitäten programmieren Programmcode für das Zufügen von Zell Werten Struktogramm
Mehr1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen
1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden
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
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrKapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen
reguläre Grammatiken/prachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für wild cards in kriptsprachen (/* reguläre Ausdrücke */)?; [a-z]; * kontextfreie Grammatiken/prachen Beschreibung
MehrAlgorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrMusterlösungen zur Klausur Informatik 3
Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus
MehrOperatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
MehrKapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte
Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrC# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung
C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe
MehrÜbungen zu Programmierung I - Blatt 8
Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail
MehrCS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Einfache Programme: Programm-Argument, Bedingte Anweisungen, Switch, Enum Boolesche Werte und Ausdrücke Seite 1 Beispiel: Umrechnen
MehrBäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrKlausur Grundlagen der Informatik
Klausur Grundlagen der Informatik 11.03.2010 Hinweise: Bearbeitungszeit: 120 Minuten es sind keine Unterlagen (Bücher, Vorlesungsmitschriften, Übungen), Taschenrechner, Mobiltelefone (ausschalten und in
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
MehrTeil IX. Eine kleine Programmiersprache
Teil IX Eine kleine Programmiersprache 1 Teil IX.1 Syntaktische Beschreibungsmittel 2 Chomsky Grammatik Eine Chomsky Grammatik wird beschrieben mit einem Quadrupel G = (N, T, P, S). Dabei ist: N die Menge
MehrAllgemeine Informatik 2 im SS 2007 Programmierprojekt
v05 30.06.2007 Technische Universität Darmstadt Fachbereich Informatik Prof. Dr. Johannes Fürnkranz Allgemeine Informatik 2 im SS 2007 Programmierprojekt Bearbeitungszeit: 04.06. bis 13.07.2007 Die Formalitäten
MehrVererbung und Polymorphismus
Vererbung und Polymorphismus Benno List OO Get-Together 29.5.06 B. List 29.5.06 Vererbung und Polymorphismus Page 1 Klassen (Wiederholung) Klasse: Datenstruktur mit data members: Variablen: enthalten Informationen
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung
MehrSCHNELLEINSTIEG ZUM TOOL NODEBUILDER
Fakultät Informatik, Institut für Angewandte Informatik, Professur Technische Informationssysteme SCHNELLEINSTIEG ZUM TOOL NODEBUILDER Betreuer: Dipl.-Ing. A. Cemal Özlük Dipl.-Inf. Uwe Ryssel ALLGEMEINE
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrLR(1) Itemmengenkonstruktion
LR(1) Itemmengenkonstruktion Grammatik: S A$ xb A aab B B x Sprache: {xb} {anxbn n 0} nicht LL(1) x FIRST(B) x FIRST(A) also: FIRST/FIRST Konflikt bei S A$ xb nicht SLR(1) (Abb. 2.96) betrachte Item B
Mehr3. Anweisungen und Kontrollstrukturen
3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen
Mehr9 Türme von Hanoi Bewege Stapel von links nach rechts. In jedem Zug darf genau ein Ring bewegt werden. Es darf nie ein größerer auf einen kleine
9 Türme von Hanoi 1 2 3 Bewege Stapel von links nach rechts. In jedem Zug darf genau ein Ring bewegt werden. Es darf nie ein größerer auf einen kleineren Ring gelegt werden. 9 Türme von Hanoi 1 2 3 Bewege
MehrStatt (r s) schreiben wir in Zukunft meistens rs, gelegentlich auch (r; s).
14 2 REGULÄRE AUSDRÜCKE 2 Reguläre Ausdrücke Wir wollen (i.a. unendliche) Sprachen mit endlichen Mitteln darstellen, z.b. durch Grammatiken, nach denen die Sätze der Sprache gebildet werden dürfen. Es
MehrAusarbeitung des Interpreter Referats
Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache
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
Mehr1 Syntax von Programmiersprachen
1 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 Programmier-Sprache Festlegung, wie Programme
MehrFormale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009
Formale Spezialisierungstechniken am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Spezialisierungsarten (Typbeziehungen erster Art) X stellt Methoden und Eigenschaften
MehrEinfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at
Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache
MehrFunktionale Programmierung
Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrAlgorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.
Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 2. Oktober, 2014 Plan für heute 1. Fragen & Nachbesprechung Übung 2 2. Zusammenfassung der bisherigen Vorlesungsslides 3. Tipps zur Übung 3 Informatik 1 (D-BAUG) Giuseppe Accaputo 2 Nachbesprechung
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,
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrProcessing Info zu Variablen und Bedingungen
Processing Info zu Variablen und Bedingungen Dieses Dokument enthält - Variablen (Variablen, Datentypen, Deklaration, Geltungsbereich, Benennung) - Bedingungen (if, mousepressed, else) Variablen Eine Variable
MehrInhalte der Vorlesung. 4. Der Scanner-Generator lex. 4. Der Scanner-Generator lex. 4.1 lex: Grundlagen
Inhalte der Vorlesung 4. Der Scanner-Generator lex 1.Einführung 2.Lexikalische Analyse 3.Der Textstrom-Editor sed 4.Der Scanner-Generator lex (2 Termine) 5.Syntaxanalyse und der Parser-Generator yacc (3
MehrArbeiten mit JavaKara
Arbeiten mit JavaKara 1. Programmierumgebung Möchte man ein neues Programm erstellen, so wird einem ein Programmeditor zur Verfügung gestellt, der bereits eine vorgefertigte Schablone darstellt. In der
MehrJava für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel
Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 7. Vorlesung 18.05.2016 1 Konstanten Ganzzahlkonstante Dezimal: 42, 23, -2 Oktal (0 vorangestellt): 052 Hexadezimal (0x vorangestellt): 0x2A Gleitkommazahlen: 3.1415, 2.71,
Mehr2.4.3 Polymorphie (Wiederholung von Alp2)
2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie
MehrTechnische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015
Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse
Mehr