Praktikum Softwareanalyse und -transformation

Größe: px
Ab Seite anzeigen:

Download "Praktikum Softwareanalyse und -transformation"

Transkript

1 Praktikum Softwareanalyse und -transformation Thilo Mende Universität Bremen Fachbereich 3 Mathematik und Informatik Arbeitsgruppe Softwaretechnik Sommersemester 2009

2 Syntaktische Analyse und Generierung des ASTs 1 Einführung 2 Analyse I 3 Refactoring I 4 Analyse II 5 Refactoring II T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 3 / 23

3 Syntaktische Analyse und Generierung des ASTs 2 Analyse I Syntaktische Analyse und Überführung in AST ANTLR Ein Beispiel: Addition+Multiplikation Unsere Programmiersprache Namensbindung Unparse T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 4 / 23

4 Einordnung Programmtext Programmtext mit Makros Präprozessor Tokenstrom Lexer Parser abstrakter Syntaxbaum semantische Analyse annotierter abstrakter Syntaxbaum Front-End Middle- Zwischensprachengenerator Zwischendarstellung Analysen Transformationen annotierte Zwischendarstellung End Unparse Code Back-End Wissensbasis T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 5 / 23

5 Einordnung Programmtext Programmtext mit Makros Präprozessor Tokenstrom Lexer Parser abstrakter Syntaxbaum semantische Analyse annotierter abstrakter Syntaxbaum Front-End Middle- Zwischensprachengenerator Zwischendarstellung Analysen Transformationen annotierte Zwischendarstellung End Unparse Code Back-End Wissensbasis T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 5 / 23

6 ANTLR Im Allgemeinen: ANother Tool for Language Recognition aka Parser Generator Top-Down-Parser LL(*): L Von Links lesen L Das linkeste nicht-terminal wird zuerst ersetzt * Beliebiger Lookahead Unterstützt Java, C, Python... ANTLRWorks als Grammatik-IDE T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 6 / 23

7 ANTLR Im Allgemeinen: ANother Tool for Language Recognition aka Parser Generator Top-Down-Parser LL(*): L Von Links lesen L Das linkeste nicht-terminal wird zuerst ersetzt * Beliebiger Lookahead Unterstützt Java, C, Python... ANTLRWorks als Grammatik-IDE Und wie wir es nutzen: Lexer und Parser in einer Grammatik Java/Ant Beispiel-Projekt unter ~tmende/sat/satparser-v.0.1.tar.gz T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 6 / 23

8 Eingabe: Addition+Multiplikation Eingabe: (1+2) 5 T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 7 / 23

9 Eingabe: Addition+Multiplikation Eingabe: (1+2) 5 Aufgabe: Transformation in einen Abstrakten Syntaxbaum T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 7 / 23

10 Gerüst grammar SAT ; // Name g l e i c h Dateiname o p t i o n s { l a n g u a g e = Java ; // Ausgabesprache output = AST ; // Ausgabe : Tree ASTLabelType=CommonTree ; // K l a s s e d e r Knoten b a c k t r a c k = t r u e ; // A u t o m a t i s c h e s B a c k t r a c k i n g an // macht i f / e l s e s p ä t e r e i n f a c h e r } t o k e n s { // D e f i n i t i o n d e r Token, kann man auch i n l i n e machen PLUS = + ; TIMES = ; PAR L = ( ; PAR R = ) ; { package a g s t. s a t ; } // Wird i n d i e g e n e r i e r t e l e x e r : : h e a d e r { package a g s t. s a t ; } // K l a s s e n g e s c h r i e b e n T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 8 / 23

11 Lexer prog : ; // Dummy, e r s t m a l i g n o r i e r e n // Fragment : w i r d n i c h t a l s Token b e n u t z t fragment SPACE : \ t ; fragment DIGIT : ; // Token werden groß g e s c h r i e b e n NEWLINE : ( \ r? \n )+ { $ c h a n n e l = HIDDEN ; } ; // HIDDEN : P a r s e r s i e h t d i e n i c h t WHITESPACE : SPACE+ { $ c h a n n e l = HIDDEN ; } ; INTEGER : DIGIT+; // Zahlen : Ein oder mehr d i g i t s T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 9 / 23

12 Test des Lexers... Reader r e a d e r = new F i l e R e a d e r ( a r g s [ 0 ] ) ; SATLexer l e x e r = new SATLexer ( new ANTLRReaderStream ( r e a d e r ) ) ; r e a d e r. c l o s e ( ) ; CommonTokenStream tokenstream = new CommonTokenStream ( l e x e r ) ; f o r ( Object o b j : tokenstream. gettokens ( ) ) { CommonToken token = ( CommonToken ) o b j ; i f ( token. g e t C h a n n e l ( )!= CommonToken. HIDDEN CHANNEL){ System. out. p r i n t f ( %s :% s \n, token. gettext ( ), SATParser. tokennames [ token. gettype ( ) ] ) ; }... } T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 10 / 23

13 Test des Lexers (2) cd Project-Dir && ant T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 11 / 23

14 Test des Lexers (2) cd Project-Dir && ant java -cp build/sat.jar agst.sat.lexertest example.math T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 11 / 23

15 Test des Lexers (2) cd Project-Dir && ant java -cp build/sat.jar agst.sat.lexertest example.math 2 : INTEGER +:PLUS 3 : INTEGER : TIMES 4 : INTEGER ( : PAR L 1 : INTEGER +:PLUS 2 : INTEGER ) : PAR R : TIMES 5 : INTEGER (1+2) 5 T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 11 / 23

16 Parser // Ein Programm : n u l l oder mehr e x p r prog : ( e x p r ) ; e x p r : // M i t t e l s Mexpr w i r d d i e Operator R e i h e n f o l g e g e s t e u e r t mexpr ( PLUS mexpr ) ; // PR oder V e r k e t t u n g von mexpr : pr (TIMES pr ) ; pr : INTEGER PAR L e x p r PAR R ;... T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 12 / 23

17 Parse-Tree mit ANTLRWorks T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 13 / 23

18 Transformation in AST... // ˆ : n e u e r Knoten im AST e x p r : mexpr ( PLUSˆ mexpr ) ; mexpr : / Das h i e r i s t d e r k o m p l i z i e r t e Weg Operatoren mit Rewrite R u l e s zu b e s c h r e i b e n. D e u t l i c h k ü r z e r geht e s mit pr (TIMESˆ pr ) ; Dafür s i e h t man auch nochmal w i r man l a b e l s b e n u t z t um Tokens g l e i c h e n Typs u n t e r s c h i e d l i c h zu behandeln : i d e n t i f i e r =r e g e l und dann mit $ i d e n t i f i e r r e f e r e n z i e r e n. / ( pr > pr ) (TIMES r=pr > ˆ(TIMES $mexpr $r ) ) ; //! : N i c h t f ü r den AST bestimmt pr : INTEGER PAR L! e x p r PAR R! ; T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 14 / 23

19 AST mit ANTLRWorks T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 15 / 23

20 Test des Parsers... SATParser p a r s e r = new SATParser ( tokenstream ) ; SATParser. p r o g r e t u r n r = p a r s e r. prog ( ) ; CommonTree c t = ( CommonTree ) r. g e t T r e e ( ) ; System. out. p r i n t l n ( c t. t o S t r i n g T r e e ( ) ) ;... T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 16 / 23

21 Test des Parsers... SATParser p a r s e r = new SATParser ( tokenstream ) ; SATParser. p r o g r e t u r n r = p a r s e r. prog ( ) ; CommonTree c t = ( CommonTree ) r. g e t T r e e ( ) ; System. out. p r i n t l n ( c t. t o S t r i n g T r e e ( ) ) ;... ant java -cp build/sat.jar agst.sat.processor example.math T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 16 / 23

22 Test des Parsers... SATParser p a r s e r = new SATParser ( tokenstream ) ; SATParser. p r o g r e t u r n r = p a r s e r. prog ( ) ; CommonTree c t = ( CommonTree ) r. g e t T r e e ( ) ; System. out. p r i n t l n ( c t. t o S t r i n g T r e e ( ) ) ;... ant java -cp build/sat.jar agst.sat.processor example.math Ausgabe: (+ 2 (* 3 4)) (* (+ 1 2) 5) T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 16 / 23

23 Programmiersprache Allgemeine Anforderungen: so einfach wie möglich so ausdrucksstark wie nötig für die Refactorings Teilmenge von C++ Erleichtert Überprüfung von Transformationen T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 17 / 23

24 Programmiersprache Allgemeine Anforderungen: so einfach wie möglich so ausdrucksstark wie nötig für die Refactorings Teilmenge von C++ Erleichtert Überprüfung von Transformationen Konkrete Teilmenge: Klassen mit Methoden und Attributen einfachste Anweisungen, z.b. + einfache weitere Datentypen, z.b. int einfachste Kontrollstrukturen, z.b. if und while einfache Ausgabeanweisungen (für den Test) Parametermodi: Wert und Referenz kein Overloading, einfache Namensbindung T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 17 / 23

25 BNF-Syntax ::= t r e n n t l i n k e und r e c h t e R e g e l s e i t e. beendet Regel t r e n n t A l t e r n a t i v e n {X} b e s c h r e i b t b e l i e b i g v i e l e Wiederholung von X ( auch 0) [X] b e s c h r e i b t o p t i o n a l e s X t s t e h t f ü r Token t ( { i s t a l s o e i n Token d e r Sprache ) A l l e Symbole, d i e n i c h t a u f d e r l i n k e n S e i t e a u f t r e t e n, s i n d T e r minale <e p s i l o n > i s t d i e l e e r e r e c h t e S e i t e T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 18 / 23

26 Unsere Grammatik (1) P ::= { C D }. // Prog. b e s t e h t aus K l a s s e n+d e k l a r a t i o n e n C ::= c l a s s i d [ : i d ] { p u b l i c : {D} } ; // Klassen D e k l a r a t i o n // ( p u b l i c nur wg. K o m p a t i b i l t ä t ) D ::= T i d ; M. // D e k l a r a t i o n ( V a r i a b l e oder Methode ) T ::= v o i d i n t i d. // Typen : B u i l t i n und s e l b e r d e f i n i e r t e M ::= T i d ( PL ) B. // Methoden D e f i n i t i o n PL ::= <e p s i l o n > Pa {, Pa }. // Parameter L i s t e Pa ::= T [&] i d. // Parameter Argument B ::= { { D } { S } }. // Block N ::= i d i d. i d. // Name T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 19 / 23

27 Unsere Grammatik (2) E ::= E < Te // E x p r e s s i o n E = Te Te. Te ::= Te + Pr // Terminal E x p r e s s i o n (wg. Operator Präzedenz ) Te Pr Pr. Pr ::= N number ( E ) t h i s > i d N (AL). // P r i m i t i v e AL ::= <e p s i l o n > E {, E }. // Argument L i s t e S ::= N = E ; // Statement N ( AL ) ; r e t u r n E ; i f ( E ) S [ e l s e S ] B p r i n t f ( %d\n, E ) ; w h i l e ( E ) S. T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 20 / 23

28 Beispiel-Programm i n t g l o b a l ; c l a s s C { p u b l i c : i n t a ; i n t b ; v o i d f o o ( i n t& x ) { a = x ; x = (1 + 2 ) ; } } ;... c l a s s B : C { p u b l i c : i n t c ; C d ; i n t bar ( i n t x, i n t y ) { w h i l e ( x<y ) { x = x + 2 ; i f ( y > 5) { i n t x ; x = y + 5 ; f o o ( x ) ; r e t u r n x ; } } c = x ; r e t u r n 0 ; } } ; T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 21 / 23

29 Und so geht es weiter Zum nächsten Termin: Grammatik in ANTLR umsetzen T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 22 / 23

30 Und so geht es weiter Zum nächsten Termin: Grammatik in ANTLR umsetzen Beim nächsten Termin: Zwischenergebnis besprechen Die Woche danach: Semantische Analyse T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 22 / 23

31 Und so geht es weiter Zum nächsten Termin: Grammatik in ANTLR umsetzen Beim nächsten Termin: Zwischenergebnis besprechen Die Woche danach: Semantische Analyse Fragen? T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 22 / 23

32 T.Mende (Uni Bremen) Softwareanalyse und -transformation SS09 23 / 23

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2011/12 Überblick I Statische Programmanalyse

Mehr

Quelltextähnlichkeit

Quelltextähnlichkeit Quelltextähnlichkeit Tobias Jamin Universität Bremen Fachbereich 3 Mathematik und Informatik tjamin@tzi.de Abstrakt Programm-Transformationen ändern den Quelltext eines Programms. Bei den Transformationen

Mehr

30. Parser-Generatoren

30. 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,

Mehr

Ergänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1].

Ergänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1]. Themen Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1]. [1] Aho, Alfred V. ; Lam, Monica S. ; Sethi, Ravi: Compiler. Prinzipien, Techniken und Tools. Pearson, 2008. ISBN 3827370973

Mehr

Compilerbau (1 KU) SS 2011

Compilerbau (1 KU) SS 2011 Compilerbau (1 KU) 716.077 SS 2011 Univ.-Prof. Dr. Franz Wotawa, Birgit Hofer Institut für Softwaretechnologie 1 Übungsmodus Aufgabenblätter Inhalt dieser LV-Einheit it Programmieraufgabe Vorstellung Programmieraufgabe

Mehr

Grundlagen der Programmierung 3 A

Grundlagen 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

Mehr

Praktikum Compilerbau Sitzung 4 Abstrakter Syntaxbaum

Praktikum Compilerbau Sitzung 4 Abstrakter Syntaxbaum Praktikum Compilerbau Sitzung 4 Abstrakter Syntaxbaum Prof. Dr.-Ing. Gregor Sneltg Andreas Zwkau IPD Sneltg, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg und nationales

Mehr

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

Programmierung 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

Mehr

Grundlagen der Programmierung 3 A

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

Mehr

Grammatiken und ANTLR

Grammatiken 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

Mehr

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Compiler; Ü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

Mehr

3 Syntax von Programmiersprachen

3 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

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. 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

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. 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

Mehr

3 Syntax von Programmiersprachen

3 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

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2011/12 Überblick I Refactoring Code-Transformationen:

Mehr

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 23. Mai 2007 Compiler; Übersetzungprogramme Ein Übersetzer (Compiler) ist ein Programm,

Mehr

So schreiben Sie ein Parser-Programm

So schreiben Sie ein Parser-Programm Universität des Saarlandes Fachrichtung Informatik Programming Systems Lab Prof. Gert Smolka Proseminar Programmiersysteme WS 03/04 Höhere Funktionale Programmierung: Parser-Kombinatoren Matthias Berg

Mehr

Compilerbau für die Common Language Run-Time

Compilerbau für die Common Language Run-Time Compilerbau für die Common Language Run-Time Syntax und Semantik von Programmiersprachen 2 Compilerbau Sprachbeschreibung vs. Implementierung Beschreibung: formale oder informale (engl.) Lexik, Syntax,

Mehr

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich 06.07.2006 Gliederung 1 2 3 4 . Autor und Name Features Autor Autor und Name Features Autor: Étienne Gagnon : Teil seiner Masterarbeit an der McGill-Universität Montreal vom März 1998 Name Autor und Name

Mehr

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

Mehr

Compilerbau. Einführung in Bison

Compilerbau. Einführung in Bison Compilerbau Einführung in Bison Überblick 1. Bison a) Eingabespezifikation 1. Prolog 2. Definitionsteil 3. Regelteil 4. Epilog b) Bison-Bezeichner und -Funktionen c) Konflikte und Mehrdeutigkeiten d) Debug-Funktionalität

Mehr

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

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 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

Mehr

Parsing SystemVerilog 2012

Parsing SystemVerilog 2012 Parsing Julian Nagel Lehrstuhl für Rechnerarchitektur Universität Heidelberg 06.07.2016 1 2 3 Inhaltsverzeichnis 4 5 6 Viele Ideen dazu wie effektiv Hardware entwickelt werden kann, aber keine IDE welche

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre

Mehr

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Stratego/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

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder

Mehr

Aktueller Stand Entwicklung eines Parser- und Instrumentierungssystems für den strukturorientierten Programmtest

Aktueller Stand Entwicklung eines Parser- und Instrumentierungssystems für den strukturorientierten Programmtest Aktueller Stand Entwicklung eines Parser- und Instrumentierungssystems für den strukturorientierten Programmtest Ronny Treyße HU Berlin Aktueller Stand p.1/22 Gliederung Überblick über das Projekt Die

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

9.4 Grundlagen des Compilerbaus

9.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

Mehr

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Ü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

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische 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,

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Definition von domänenspezifischen Sprachen mit Xtext: Einführung Definition von domänenspezifischen Sprachen mit Xtext: Einführung 28. November 2012 Taentzer Modellgetriebene Softwareentwicklung 246 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen

Mehr

1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28

1 Attributierte Grammatiken. 2 Zyklische AG. 3 Codeerzeugung mit AGs. Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28 1 Attributierte Grammatiken 2 Zyklische AG 3 Codeerzeugung mit AGs Zusatzfolien Semantische Analyse Wintersemester 2008/09 1 / 28 Beispiel: Taschenrechner mit Attributierter Grammatik Produktion Semantische

Mehr

Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung

Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung Praktikum Compilerbau Sitzung 4 Semantik und Typprüfung Lehrstuhl für Programmierparadigmen Universität Karlsruhe (TH) 13. Mai 2009 (IPD Snelting) Sitzung 4 Semantik 13. Mai 2009 1 / 13 1 Letzte Woche

Mehr

Von der Grammatik zum AST

Von der Grammatik zum AST Von der Grammatik zum AST Welche Eigenschaften soll ein Parser haben? Wann ist eine Grammatik eindeutig? Wie sollte eine Grammatik aussehen? Theoretischer Hin tergrund: FIRST, FOLLOW Einschränkungen von

Mehr

3.1 Reservierte Wörter

3.1 Reservierte Wörter 3.1 Reservierte Wörter int Bezeichner für Basis-Typen; if, else, while Schlüsselwörter aus Programm-Konstrukten; (,), ",, {,},,,; Sonderzeichen. 62 3.2 Was ist ein erlaubter Name? Schritt 1: Angabe der

Mehr

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Die Klasse MiniJava ist in der Datei MiniJava.java definiert: Die Klasse MiniJava ist in der Datei MiniJava.java definiert: import javax.swing.joptionpane; import javax.swing.jframe; public class MiniJava { public static int read () { JFrame f = new JFrame (); String

Mehr

Grundlagen der Informatik III Wintersemester 2010/ Vorlesung Dr.-Ing. Wolfgang Heenes

Grundlagen 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

Mehr

Übersetzerbau Cluj-Napoca, Rumänien 2007

Ü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

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

Definition Compiler. Bekannte Compiler

Definition 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

Mehr

Softwareparadigmen EXP-Compiler Dokumentation v1.1 ( )

Softwareparadigmen EXP-Compiler Dokumentation v1.1 ( ) Softwareparadigmen EXP-Compiler Dokumentation v1.1 (8.5.2016) Stephan Frühwirt Inhaltsverzeichnis 1 Aufbau, Tools und Ausführung 2 1.1 Ausführung....................................... 2 2 Sprachdefinition

Mehr

Syntax von Programmiersprachen

Syntax 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.

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt 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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 14 Parsen, Suchen und Sortieren 19./26.01.2015 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Quelltextähnlichkeit

Quelltextähnlichkeit Quelltextähnlichkeit String autor = Tobias Jamin ; String projekt = Arte-Fakt ; String seminar = Transformationen ; Date termin = new Date(3, // Tag 2, // Monat 2006); Presentation praesentation = new

Mehr

Compilerbau für die Common Language Run-Time

Compilerbau für die Common Language Run-Time Compilerbau für die Common Language Run-Time Syntaxanalyse 2 Grammatikgetriebener Compilerbau Grammatik Teil der Sprachdefinition Grammatik liefert Liste der Tokenklassen Grammatik hilft bei Strukturierung

Mehr

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

Inhalt.  DiaGen Historie und Beschreibung.  Architektur eines DiaGen-Editors.  Hypergraphen.  DiaGen-Editoren Komponenten DIAGEN Sven Goeckels Seminar : Visuelle Sprachen Universität Bremen FB Informatik WS 2001/2002 Inhalt " DiaGen Historie und Beschreibung " " Hypergraphen " DiaGen-Editoren Komponenten? Modeler? Reducer?

Mehr

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Methoden 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

Mehr

Einführung in die Programmiertechnik

Einfü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

Mehr

Syntaxanalyse Ausgangspunkt und Ziel

Syntaxanalyse 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

Mehr

Guile Die Erweiterungssprache des GNU-Projekts

Guile Die Erweiterungssprache des GNU-Projekts Guile Die Erweiterungssprache des GNU-Projekts Matthias Köppe Otto-von-Guericke-Universität Magdeburg Magdeburger Linux User Group e. V. 19. Mai 2001 Überblick Guile als Erweiterungssprache Guile als Scheme-Implementierung

Mehr

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster

Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster 16:02:16 2017-01-17 1 [30] Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom 10.01.2017: Monaden als Berechnungsmuster Christoph Lüth Universität Bremen Wintersemester 2016/17 Frohes

Mehr

Das erste C++ Programm

Das erste C++ Programm Das erste C++ Programm // Program: power8.c // Raise a number to the eighth power. #include int main() { // input std::cout > a; // computation int

Mehr

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

Definition von LR(k)-Grammatiken

Definition von LR(k)-Grammatiken Definition von LR(k)-Grammatiken Ziel: Ein Lookahead von k soll ausreichen um entscheiden zu können, welche Regel angewendet werden muss. Definition: FIRST k (w 1 w n ):= w 1 w k, falls n k, w 1 w n, sonst.

Mehr

Zwischencode-Erzeugung. 2. Juni 2009

Zwischencode-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

Mehr

Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen (WS 05/06)

Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen (WS 05/06) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. M. Gawkowski Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Lösungsvorschläge zum Übungsblatt 11: Übersetzung von Programmiersprachen

Mehr

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. August 2009 1/17 Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe Prof. G. Kemnitz

Mehr

FACHHOCHSCHULE MANNHEIM

FACHHOCHSCHULE 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

Mehr

Vorlesung Programmieren

Vorlesung 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),

Mehr

Interpreter - Gliederung

Interpreter - 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

Mehr

Der Parsergenerator BTRACC2

Der Parsergenerator BTRACC2 Der Parsergenerator BTRACC2 Uwe Erdmenger pro et con Innovative Informatikanwendungen GmbH 11. Workshop Software-Reengineering 04.-06. 06. Mai 2009, Bad Honnef Eigenschaften von Legacy-Quellcode Sprachen

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Kontextfreie 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

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine WWW

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine WWW Adressen Adressen, Termine Studienleistung Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Büro und Email Raum 216, Robert-Mayer-Str. 11-15 sabel@ki.informatik.uni-frankfurt.de

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Midtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,

Mehr

Praktikum Funktionale Programmierung Organisation und Überblick

Praktikum Funktionale Programmierung Organisation und Überblick Praktikum Funktionale Programmierung Organisation und Überblick Dr. David Sabel Sommersemester 2013 Stand der Folien: SoSe 2013 Adressen Organisatorisches Software Projekt Adressen, Termine Studienleistung

Mehr

2.2 Syntax, Semantik und Simulation

2.2 Syntax, Semantik und Simulation 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?

Mehr

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Es 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

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45

Kontextfreie 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

Mehr

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur

Mehr

1 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 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

Mehr

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse 5. Syntaxanalyse und der Parser-Generator yacc 5.1 Einleitung 5.2 Kontextfreie Grammatiken 5.3 Grundlagen von yacc 5.4 Absteigende Analyse Übersetzergenerierung Syntaxanalyse und yacc (2) Jan Bredereke,

Mehr

ANTLR und Eclipse-Xtext zwei ll Kumpane

ANTLR und Eclipse-Xtext zwei ll Kumpane ANTLR und Eclipse-Xtext zwei ll Kumpane Roman Weissgärber email: r.w @ c.a r: roman w: weissgaerber c: chello a: at Abstract: Die Eclipse IDE erfreut sich nicht nur unter Java Entwicklern einer wachsenden

Mehr

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

Compilerbau 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

Mehr

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden

Mehr

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2008/09 Überblick I 1 1 Compiler versus Reengineering-Werkzeug

Mehr

Software-Notationen. K. Bürtlmair. Masterstudiengang ITS //2010/11 Fachhochschule Salzburg. 3. Oktober 2013

Software-Notationen. K. Bürtlmair. Masterstudiengang ITS //2010/11 Fachhochschule Salzburg. 3. Oktober 2013 Software-Notationen K. Bürtlmair Masterstudiengang ITS //2010/11 Fachhochschule Salzburg 3. Oktober 2013 K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 1/27 Textuelle

Mehr

Zwischencodeerzeugung Compiler II

Zwischencodeerzeugung Compiler II Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.

Mehr

Einführung in die Informatik. Programming Languages

Einfü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

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 11/12 Einführung in die Informatik I Probe-Klausur Prof. Dr. Helmut Seidl, M. Schwarz, A. Herz,

Mehr

3.2 Datentypen und Methoden

3.2 Datentypen und Methoden Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte

Mehr

Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I µ-rekursive Funktionen WS 2012/2013 Primitiv-rekursive Funktionen Jede primitiv-rekursive Funktion ist Loop-berechenbar. Das bedeutet, dass jede PR-Funktion in der Loop-Programmiersprache formuliert

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

Programmierpraktikum

Programmierpraktikum TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 02 (03.11.2017) Leo Glavinić (leo.glavinic@tum.de) Cyprian Manthey (cyprian.manthey@tum.de)

Mehr

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Hüllklassen. Gerd Bohlender. 25. Juni Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 25. Juni 2007 G. Bohlender (IANM UNI Karlsruhe) Hüllklassen 25. Juni 2007 1 / 5 Grunddatentypen

Mehr

LR-Parser, Shift-Reduce-Verfahren

LR-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

Syntax von Softwaresprachen

Syntax von Softwaresprachen http://en.wikipedia.org/wiki/file:brueghel-tower-of-babel.jpg Syntax von Softwaresprachen OOPM, Ralf Lämmel Software Languages Team University of Koblenz-Landau 2 Quiz zur Motivation Sind dies gültige

Mehr

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Februar 2017 Hinweise: Klausurtermine: Programmieren I Übungsklausur Programmieren I: 13. März

Mehr

Wo sind wir? Übersicht lexikale Struktur von Java

Wo 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,

Mehr