Einführung in den Compilerbau

Größe: px
Ab Seite anzeigen:

Download "Einführung in den Compilerbau"

Transkript

1 Einführung in den Compilerbau Überblick und Einleitung Dr. Armin Wolf 1. Vorlesung SoSe 2010, Universität Potsdam 1

2 Organisatorisches Ablage von Unterlagen (Folien,Literatur etc.) unter der URL Zugang: user: guest password: guest Übungen, sporadisch zur Vertiefung der Theorie (Beispiele) Schriftliche Ausarbeitung an der Tafel Praktische Programmierung mittels Java u./o. ANTLR Aktive Beteiligung Ihrerseits ausdrücklich erwünscht! Terminvorschlag für schriftliche Prüfung: erste Vorschläge? Meine -Adresse: Sonstiges... 2

3 Weiterführende Literatur A.V. Aho, R. Sethi, J.D. Ullmann: Compilerbau ( Drachenbuch ), Teil 1 (Teil 2), Addison-Wesley, ISBN: x, 1988 (z.b. 4. unveränderter Nachdruck 1995). Der Klassiker. A.V. Aho, M.S. Lam, R. Sethi, J.D. Ullmann: Compiler, Pearson Studium, ISBN: , 2008, 1252 Seiten, Neuauflage des Drachenbuchs. W.M. Waite, G. Goos: Compiler Construction, Texts and Monographs in Computer Science, Springer Verlag, ISBN , Online verfügbar, Link auf Website! N. Wirth: Compilerbau, Teubner Studienbücher Informatik, ISBN , 3. überarbeitete, erweiterte Aufl., A.W. Appel: Modern Compiler Implementation in Java.Cambridge University Press Umfassendes, leicht lesbares Buch R. Wilhelm, D. Maurer: Übersetzerbau, 2. Aufl. Springer Ausführlich, auch funkt. und logische Programmiersprachen. W.M. Waite, L.R. Carter: An Introduction to Compiler Construction,Harper- Collins Praktisch, leicht lesbar, Architektur von Compilern 3

4 Eingesetztes Compiler-Werkzeug Terence Parr: ANTLR, ANother Tool for Language Recognition, freier Download unter (hier: Zielsprache Java) Getting Started with ANTLR, online verfügbar unter (Installation, erster Test, Tutorials, weitere Hinweise) ANTLR Documentation, online verfügbar unter Scott Stanchfield: An ANTLR Tutorial, online verfügbar unter (allerdings für Version 2.0) Ashley J.S Mills: ANTLR, online verfügbar auch als PDF-Datei unter build/tutorials/antlr/antlrhome.html (Tutorial für Zielsprache Java) 4

5 I. Einleitung 5

6 Was ist ein Compiler? Ein Übersetzerprogramm, das (i. Allg.) ein Programm in einer Quellsprache liest und in ein äquivalentes Programm einer Zielsprache übersetzt. Zwei Schwerpunkte: Syntax und Semantik beider Sprachen Eine wichtige Teilaufgabe des Compilers: Fehlererkennung und -meldung an den Benutzer Syntaktische Fehler, z.b. vergessene Klammern summe += (factor * summand;... Semantische Fehler, z.b. nicht deklarierte Variable in Ausdruck summe += (factor * summand);... [erstes Auftreten von factor ] 6

7 Was leistet ein Compiler? Aufgabe eines Compilers (Übersetzers) Ein-Paß-Compiler Mehr-Paß-Compiler Compiler mit Testhilfen Quellprogramm Compiler Zielprogramm Fehlermeldungen Cobol, Fortran, Algol, Pascal, Oberon, C, C++, C#, Java, Prolog Spezialsprachen (z.b. CHR) Textformatierer mit Kommandos Log. Verknüpfung v. elektr. Bauteilen Log. Beschriebene DB-Anfrage Textformatierer Silicon-Compiler Anfrage-Interpreter Maschinenprogramm beliebige Programmiersprache C, C++, C#, Java, JVM, WAM Spezialsprachen (Java-CHR-Engine) Aufbereiteter Text Textformatierer mit Kommandos Log. Beschriebene DB-Anfrage 7

8 Analyse-Synthese-Modell der Übersetzung Zweitteilung der Compilierung: Analyse und Synthese Analyse: Zerlegung des Quellprogramms in seine Bestandteile Erzeugung einer Zwischendarstellung z.b. Syntaxbaum := position + initial * rate 60 Syntaxbaum der Zuweisung: position := initial +(rate*60) Synthese: Konstruktion des Zielprogramms aus der Zwischendarstellung Anspruchsvollerer Teil der Übersetzung (spezialisierte Techniken) 8

9 Analyse Softwarewerkzeuge (Beispiele) Strukureditoren (z.b. in Programmierumgebungen wie eclipse): Vervollständigung von Eingaben: wh_ while... do Hervorheben des öffenden begin zum schliessenden end Hervorheben der öffenden Klammer zur schliessenden Klammer Pretty Printer (z.b. in Programmierumgebungen): Verwendung spez. Schriftsätze/Farben für Schlüsselworte oder Wortgruppen (z.b. Scheifenkonstruktoren, Attribute in XML) Einrücken gemäß der hierarchischen Textstruktur (z.b. XML-Dokus) Statische Überprüfungen (z.b. in Programmierumgebungen): Erkennung toter Programmteile (z.b. nach return-anweisungen) Erkennung von nicht deklarierten/initialisierten Variablen Erkennung von Typ-Inkompatibilitäten von Parametern/Argumenten, z.b. real Argument verlangt String übergeben. 9

10 Einsatz von Compilerbau-Techniken Textformatierer: z.b. TeX / LaTeX Satz / Layout von Dokumenten, insb. von mathematischen Formeln: $$\sum_{i=1}^n i = \frac{n \cdot (n-1)}{2} $$ Silicon-Compiler: Transformation von logischen Verknüpfungen in einer Progammiersprache in Schaltkreis-Entwürfe Anfrage-Interpreter: Übersetzung von relationalen und logischen Prädikaten für Datenbank-Anfragen in Kommandofolgen zur Suche von Datensätzen Beispiele: SQL für relationale Datenbanken: select... where... XQuery für XML-Datenbanken: for, let, where, order by, return". Verarbeitung sogenannter Domain Specific Languages (DSL); meist mit graphischer Syntax 10

11 Umgebung eines Compilers Präprozessor: Expandierung von Makros (z.b. in C) Inputs/Includes von Modulen oder Programmpaketen Post-Processing (Assembler, Lader/Binder) Übersetzung eines Assembler-Programms in verschiebbaren Maschinencode (hat symbolische Speicheradressen) Hinzubinden erforderlicher Bibliotheksroutinen zum Maschinencode und Auflösung der symbolischen Adressen aufführbarer Maschinencode (meist logische Speicheradressen statt realer; dieses übernimmt in aller Regel das Betriebssystem) Abstrakte Maschine (Abstraktionsgrad der Zielmaschine ) Abgrenzung Hardware/Laufzeitsystem (z.b. dyn. Range-Checking) Anbindung an das Betriebssystem (ggf. über Laufzeitsystem) 11

12 Analyse des Quellprogramms Lineare Analyse: Zeichenstrom wird von links nach rechts (linear) gelesen und in Symbole ( tokens ) aufgeteilt. Symbol = Folge von Zeichen mit bestimmter Bedeutung, z.b repräsentiert eine Gleitpunktzahl; 4711 eine Ganzzahl Hierarchische Analyse: Symbolstrom wird hierarchisch zu Gruppen zusammengefasst: Zuweisung Bezeichner := Ausdruck Bezeichner sum, Ausdruck Ausdruck + Ausdruck Ausdruck Bezeichner sum, Ausdruck Zahl 17 Semantische Analyse: Ausdruck0 Ausdruck1 + Ausdruck2 Ausdruck0.otype = coercion(ausdruck1.otype, Ausdruck2.otype); iscompatible(ausdruck0.itype, Ausdruck0.otype) 12

13 Trennung lexikalische/syntaktische Analyse erscheint etwas willkürlich Beispiele: Ganzzahl ( + - )? Ziffer+; (lexikalisch) Zuweisung Bezeichner = Ausdruck; (syntaktisch) Trennung, z.b. wenn Konstrukt von seiner Struktur her rekursiv: Ausdruck Ausdruck + Ausdruck; Konstrukt semantischer (Kontext-)Analyse bedarf, die nicht aus den Zeichen direkt ableitbar ist: Ganzzahl: Wert und Typ direkt aus syntaktischer Struktur; Semantik unabhängig vom Kontext bestimmbar: -123 Semantik abhängig vom Kontext: Typ des Bezeichners ist durch Kontext bestimmt ; Typ des Ausdrucks ergibt sich aus dessen Struktur und folglich der Typ der Zuweisung aus beiden. Lexikalische Analyse verdichtet Zeichen aufgrund regulärer Ausdrücke Kontextfreie Grammatiken jedoch für alle syntaktische Strukturen möglich 13

14 Trennung lexikalische/syntaktische Analyse Durchschnittliche Komplexität einer Anweisung (Knuth und andere): var := var + const; const { -1, 0, 1 } 6 Symbole, aber ca Zeichen, viele (10-40) Leerzeichen pro Zeile wg. Einrückungen/Kommentaren Informationskompression größer als in allen anderen Phasen der Übersetzung deshalb Abtrennung Beobachtung zeigt, daß bei modernen Programmiersprachen endliche Automaten (für reguläre Ausdrücke) ausreichen Umfangreiche Eingabe, daher effiziente Hilfsmittel endlicher Automat schneller als Kellerautomat Jedoch: Sich selbst erfüllende Prophezeiung: Weil endliche Automaten ausreichen, sind moderne Programmiersprachen so formuliert, dass endliche Automaten ausreichen. keine geschachtelten Kommentare in Java /*... */ 14

15 Einschub: Sprachdefinition mit EBNF EBNF in EBNF: Grammar ::= { Rule } ; // 0-n Regeln Rule ::= NT `::= Expr `; ; // alternativ auch `: oder statt `::= Expr ::= Seq Opt Alt Rep `( Expr `) NT T ; Seq ::= Expr Expr ; Opt ::= `[ Expr `] ; // alternativ: Expr `? Alt ::= Expr ` Expr ; Rep ::= `{ Expr `} ; // alternativ: Expr `* Expr `+ ; // (0-n)- / (1-n)-mal NT ::= Symbol; // Menge vordefinierte Nicht-Terminale T ::= `String ; // Menge vordefinierte Terminale 15

16 Semantische Analyse Überprüfung des Quellprogramms auf semantische Fehler Verwendung einer nichtdeklarierten Variablen Indizierung eines Arrays mit einem reellwertigen, negativen Index reicht das aus? Sammeln von Typinformation für Codegenerierung z.b. Umwandlung und Anpassung von Typen type cohersion Umwandlung eines ganzzahligen Operanden in einer arithmetischen Operation mit int/real-operanden in einen reellwertigen und Folgerung, dass Ergebnis wiederum reellwertig ist. Rundung eines reellwertigen Operanden in einer ganzzahligen Operation (z.b. Ganzzahldivision) 16

17 Phasen eines Compilers Front-End Quellprogramm Lexikalische Analyse Syntaxanalyse Analyse Symboltabellenverwaltung Semantische Analyse Fehlerbehandlung Zwischencode Erzeugung Back-End Code Optimierung Code Erzeugung Synthese Zielprogramm 17

18 Symboltabellenverwaltung Gemeinsame Nutzung der Symboltabelle in vielen Phasen der Übersetzung Aufgaben: Speichern der Symbole Abbilden auf eindeutige Bezeichner Sammeln von Informationen zu Eigenschaften (Attribute) Speicherplatzbedarf Typinformation Gültigkeitsbereich Parameterzahl und Typen der Argumente bei Prozeduren, Methoden, Funktionen; ggf. Typ des Rückgabewerts Methode der Argumentübergabe (Wert- oder Adresse?) 18

19 Symboltabelle Datenstruktur, die für jedes Symbol ein Objekt (oder Record) für dessen Attribute ( Eigenschaftswerte ) speichert. Bezeichner (Id) mit Name: (z.b. num ) und Index: (z.b. 347) Wichtige Eigenschaften: Schnelles, effizientes Speichern der Attributinformation Schnelles Auffinden von Attributinformation eines Symbols Schrittweise Vervollständigung der Attributinformation (z.b. Typinformation zu einem Bezeichner, z.b. (String, int) int) Implementierung meist auf Basis von Hashtabellen 19

20 Fehlerbehandlung Erkennung, Melden und Behandeln von Fehlern Grundprinzip: Fehler im Quellprogramm dürfen zu keinem Absturz führen egal bei welcher Eingabe (egal wie unsinnig sie sei). Wiederaufsetzen nach Fehlern ( error recovery ), um weitere Fehler zu entdecken und zu melden. Lexikalische Analyse: Entdeckung unzulässiger Zeichenfolgen Syntaktische Analyse: Entdeckung unzulässiger Strukturen Semantische Analyse: Entdeckung von Unvollständigkeiten oder von un- oder widersinnigen Ausdrücken: Verwendung einer nicht deklarierten Variablen Addition eines Arrays und einer Prozedur Aufruf einer unbekannten Methode oder mit falschen Argumenten (Anzahl und/oder Typ) 20

21 1-Pass-Compiler Quellsprache: Zeichenstrom lexikalische Analyse (Scanner) Symbolstrom syntaktische Analyse (Parser) Syntaxbaum/Strukturbaum semantische Analyse attributierter Syntaxbaum (AST) Code-Erzeugung Zwischen- oder Zielsprache Mehrpass-Compiler wiederholen Teile dieses Ablaufes, wobei erzeugte Datenstrukturen erweitert / ergänzt / vervollständigt werden: Beispiel: (La)TeX (auch ein Compiler!) Verweis auf eine Marke - \ref{tag} -, die erst später im Dokument definiert wird - \label{tag}. 2-Pass-Compilierung kann durch Backpatching vermieden werden. 21

22 Funktionsweise des Backpatching Anw. Anw. goto Beim Vorwärtssprung ist die Zieladresse noch nicht bekannt. Der dazwischen liegende Code muss erst gelesen und Zwischencode für ihn erzeugt werden. Aber: Fehlende Information kann durch einen leeren Eintrag gekennzeichnet und durch eine Nachbesserungstechnik ( backpatching ) nachgetragen werden. Quelltext Zwischenspeicher Zwischencode Sprungmarke Adresse GOTO ziel ziel Adr1 Adr.1: goto??? ziel: MOV x, R1 Adr.n: MOV x. R1. 22

23 Analyse Symboltabelle 1 BEQ 2 PLS 3 MUL 4 Id1 (position) t=real 5 Id2 (initial) t=real Zeichenstrom (Quellprogramm) position := initial + rate * 60 (25 Zeichen ohne Zwischenräume) nach lexikalischer Analyse: Id1 BEQ Id2 PLS Id3 MUL Num1 Symbolstrom mit 7 Symbolen 6 Id3 (rate) t=real 7 Num1 (60) t=int, val=60 23

24 Syntaktische Analyse Eingabe: Symbolstrom; meist als Ganzzahl-Konstanten-Strom kodiert Ausgabe: Syntaxbaum, dessen Knoten ggf. für semantische Prüfungen/Berechnungen vorbereitet oder entspr. erweiterbar. Datenstruktur: Baumstrukturen mit entspr. Knoten und Verweisen Symbolstrom (token stream): Id1 BEQ Id2 PLS Id3 MUL Num1 Syntaktische Analyse := Id1 + Id2 * Id3 Num1 Syntaxbaum (enthält Verweise auf Symboltabelle) 24

25 Semantische Analyse Eingabe: Syntaxbaum Ausgabe: attributierter Syntaxbaum (AST) Datenstruktur: attributierter Baum (mit Attributen dekoriert ). Prüfung, ob alle Variablen deklariert Prüfung, ob alle Operationen für alle Operandentypen zulässig Prüfung, ob Typanpassung erforderlich := Id1 + Id2 * Id3 N1 Semantische Analyse :=.t=real Id1.t= +.t=real real Id2.t= *. t=real real Id3.t= N1.t= real int Berechnung der Attribute und deren Ergänzung durch Traversierung des Syntaxbaums 25

26 Zwischencode-Erzeugung + Code-Optimierung Eingabe: attributierter Syntaxbaum Ausgabe: Zwischencode z.b. Drei-Adress-Code (Resultat unäre/binärer Operation) Zwischencodeerzeugung mittels Attributberechnung möglich! Code-Optimierung mittels Datenflussanalyse Einsetzen von Konstanten: 60 Vorab-Berechnungen: 60.0 Kompression von Zuweisungsketten... Attributierter Syntaxbaum (s.o.) Zwischencode-Erzeugung Temp1 := int2real(60): Temp2 := multreal(id3, Temp1) Temp3 := plusreal(id2, Temp2) Id3 := Temp3 Code-Optimierung (min. Temps) Temp1 := multreal(id3, 60.0) Id3 := plusreal(id2, Temp1) opt. Ausnutzung der meist wenigen CPU-Register 26

27 Ziel-Code-Erzeugung Eingabe: (optimierter) Zwischencode Ausgabe: verschiebbarer Zielcode (mit symbolischen Adressen) Leistungsumfang: Wahl der Maschinenbefehle Registerallokation (ggf. optimiert) Temp1 := multreal(id3, 60.0) Id3 := plusreal(id2, Temp1) Ziel-Code-Generierung: MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 27

28 Inhalte der Vorlesung I. Einleitung Überblick über die Phasen eines Compilers (erledigt) Lexikalische Analyse Syntaxanalyse Parse-Baum Syntax-Baum Syntaxgesteuerte Übersetzung Attributierter Parsebaum Syntaxgesteuerte Definition Übersetzungsschemata 28

29 Inhalte der Vorlesung II. Lexikalische Analyse (in Abhängigkeit von Vorkenntnissen) Reguläre Ausdrücke Reguläre Definitionen Übergangsdiagramme Endliche Automaten (Def.) Def.: Nichtdeterministische endliche Automaten (NEA) Def.: Deterministische endliche Automaten (DEA) NEA -> DEA Regulärer Ausdruck -> NEA nach Thompsonscher Konstruktion Regulärer Ausdruck -> DEA nach Followpos-Konstruktion Followpos-Graph -> NEA Minimierung von DEA 29

30 Inhalte der Vorlesung III. Syntaxanalyse Kontextfreie Grammatiken statt regulärer Ausdrücke Kellerautomaten statt endlicher Automaten Herleitung Mehrdeutigkeiten Arten der Syntaxanalyse Prädikative (rekursive) Parser rekursiver Abstieg Nicht-rekursive prädikative Parser (Kellerautomaten) Top-down / Bottum-up Syntaxanalyse 30

31 Inhalte der Vorlesung IV. Semantische Analyse Attributierte Grammatiken als Grundlage der semantischen Analyse Klassifikation von Attributen vollständige / wohldefinierte / lokal azyklische AGs Zerlegung von AGs LAG(1)-Definition und Bedingung (Traversierung des Parsebaums) syntaxgesteuerte Übersetzung mittels AGs anhand von Beispielen Konstruktion von (abstrakten) Syntaxbäumen mittels AGs als interne Zwischenrepräsentation (ggf. DAGs statt Bäume) Entfernen von Linksrekursionen in LAG(1) (für top-down Parser) Konstruktion eines prädiktiven Übersetzers mit LAG(1) 31

32 Inhalte der Vorlesung V. Codeerzeugung und Laufzeitumgebung Syntaxgesteuerte Übersetzung Laufzeitumgebung (Parameterübergabe, Speicherverwaltung)... mal sehen wie weit wir kommen... 32

33 Vielen Dank für Ihr Interesse! Dr. Armin Wolf 33

Was ist ein Compiler?

Was ist ein Compiler? Was ist ein Compiler? Was ist ein Compiler und worum geht es? Wie ist ein Compiler aufgebaut? Warum beschäftigen wir uns mit Compilerbau? Wie ist die Veranstaltung organisiert? Was interessiert Sie besonders?

Mehr

Übersetzergenerierung mit lex und yacc

Übersetzergenerierung mit lex und yacc Übersetzergenerierung mit lex und yacc 0. Überblick und Organisatorisches Jan Bredereke SoSe 2004, Universität Bremen otivation Übersetzer: Grundlegende Werkzeuge welche Fehler kann er finden? Konstrukt

Mehr

1 ÜBERSETZER. Compilerbau 1

1 ÜBERSETZER. Compilerbau 1 1 ÜBERSETZER 1 A.V.Aho, J.D.Ullmann: Principles of Compiler Design, Addison Wesley (1977) J.Amsterdam: Building a computer in Software, BYTE (Okt. 1985) Programming Project: A SIMPL Compiler, BYTE (Dez.

Mehr

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische Informatik I Einheit 2.4 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibungsformen für Sprachen Mathematische Mengennotation Prädikate beschreiben Eigenschaften

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

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

Mehr

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Äquivalente Grammatiken / attributierte Grammatik

Äquivalente Grammatiken / attributierte Grammatik Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,

Mehr

2.11 Kontextfreie Grammatiken und Parsebäume

2.11 Kontextfreie Grammatiken und Parsebäume 2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle

Mehr

den Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden

den Einsatz von generierenden Werkzeugen und Theorien und von Software-Engineering-Methoden U- Übersetzer Vorlesung WS /8 Uwe Kastens Ziele: grundlegende Verfahren der Sprachimplementierung erlernen den Einsatz von generierenden Werkzeugen und von Standardverfahren kennen und schätzen lernen

Mehr

Compiler, Übersetzer. Allgemeine Erklärung / Definition

Compiler, Ü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:

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Sprachen und Übersetzer Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 4. Juni 2015 Sprachen vs. Übersetzer Sprache C11 Übersetzer GNU C

Mehr

Fachseminar WS 2008/09

Fachseminar 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

Mehr

Mathematische Grundlagen der Informatik 2

Mathematische Grundlagen der Informatik 2 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Emanuel Duss emanuel.duss@gmail.com 12. April 2013 1 Zusammenfassung Math2I Mathematische Grundlagen der Informatik 2 Dieses Dokument basiert

Mehr

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik Grundlagen der Informatik II Teil I: Formale Modelle der Informatik 1 Einführung GdInfoII 1-2 Ziele/Fragestellungen der Theoretischen Informatik 1. Einführung abstrakter Modelle für informationsverarbeitende

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Praktikum Compilerbau

Praktikum Compilerbau Implementation eines s 20. April 2005 Vorlesungen Vorlesungen, die nützliche für das Praktikum liefern: Automaten, Formale Sprachen und Berechenbarkeit bau Abstrakte Maschinen Programm-Optimierung Fertigkeiten

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Grammatiken in Prolog

Grammatiken in Prolog 12. Grammatiken in Prolog 12-1 Grammatiken in Prolog Allgemeines: Gedacht zur Verarbeitung natürlicher Sprache. Dort braucht man kompliziertere Grammatiken als etwa im Compilerbau, andererseits sind die

Mehr

Beispiel einer Übersetzung

Beispiel 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

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Compiler und Codegenerierung. Hw-Sw-Co-Design

Compiler und Codegenerierung. Hw-Sw-Co-Design Compiler und Codegenerierung Hw-Sw-Co-Design Wo sind wir? System Verhalten Modul Architektur Block SW HW Logik Struktur Compiler und Codegenerierung Compiler - Aufbau Codegenerierung Codeoptimierung Codegenerierung

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Übungsblatt 3: Algorithmen in Java & Grammatiken

Übungsblatt 3: Algorithmen in Java & Grammatiken Humboldt-Universität zu Berlin Grundlagen der Programmierung (Vorlesung von Prof. Bothe) Institut für Informatik WS 15/16 Übungsblatt 3: Algorithmen in Java & Grammatiken Abgabe: bis 9:00 Uhr am 30.11.2015

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Theoretische Informatik I

Theoretische Informatik I Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4. Agenda für heute, 4. Mai, 2006 Programmierparadigmen Imperative Programmiersprachen In Prozeduren zusammengefasste, sequentiell ausgeführte Anweisungen Die Prozeduren werden ausgeführt, wenn sie als Teil

Mehr

Vorlesung Theoretische Informatik

Vorlesung Theoretische Informatik Vorlesung Theoretische Informatik Automaten und Formale Sprachen Hochschule Reutlingen Fakultät für Informatik Masterstudiengang Wirtschaftsinformatik überarbeitet von F. Laux (Stand: 09.06.2010) Sommersemester

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Kapitel 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

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert

Mehr

Programmieren Formulierung eines Algorithmus in einer Programmiersprache

Programmieren Formulierung eines Algorithmus in einer Programmiersprache Zum Titel der Vorlesung: Programmieren Formulierung eines in einer Programmiersprache Beschreibung einer Vorgehensweise, wie man zu jedem aus einer Klasse gleichartiger Probleme eine Lösung findet Beispiel:

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Algorithmen mit Python

Algorithmen mit Python Algorithmen mit Python Vorbesprechung zum Proseminar im Sommersemester 2009 http://www.python.org 1 Sie lernen in DAP Java und C/C++: 80% Syntax, 20% Algorithmen-Design Idee Schon ein einfaches Hello World

Mehr

Thüringer Kultusministerium. Abiturprüfung 2000

Thüringer Kultusministerium. Abiturprüfung 2000 Thüringer Kultusministerium Arbeitszeit: Hilfsmittel: Abiturprüfung 2000 270 Minuten Leistungsfach Informatik (Haupttermin) Formeln und Tabellen für die Sekundarstufen I und II/ Paetec, Gesellschaft für

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

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

Mehr

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Prüfung Computation, Programming

Prüfung Computation, Programming Prüfung Computation, Programming 1. Computation: Reguläre Ausdrücke [5 Punkte] Zusammenfassung reguläre Ausdrücke a Das Zeichen a. Ein beliebiges Zeichen [abc] Ein beliebiges Zeichen aus der Menge {a,

Mehr

Einführung in Eclipse und Java

Einführung in Eclipse und Java Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Grundlagen: Anweisungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Anweisungen (Statements)

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

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen. Algorithmik II SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) Email: stoyan@informatik.uni-erlangen.de Homepage der Vorlesung Vorbemerkungen I http://www8.informatik.uni-erlangen.de/immd8

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 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

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h> Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include main() { printf( hello world\n ); } Peter Sobe 1 Die Großfamilie der C-Sprachen

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr. Institut für Telematik Universität zu Lübeck Programmieren Kapitel 0: Organisatorisches Wintersemester 2008/2009 Prof. Dr. Christian Werner 1-2 Überblick Ziele Inhaltsüberblick Ablauf der Veranstaltung

Mehr

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19 Inhalt 1 inführung 2 Automatentheorie und ormale prachen Grammatiken Reguläre prachen und endliche Automaten Kontextfreie prachen und Kellerautomaten Kontextsensitive und yp 0-prachen 3 Berechenbarkeitstheorie

Mehr

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 27 29..24 FAKULTÄT FÜR INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Definition

Mehr

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller

Proseminar: Website-Managment-System. NetObjects Fusion. von Christoph Feller Proseminar: Website-Managment-System NetObjects Fusion von Christoph Feller Netobjects Fusion - Übersicht Übersicht Einleitung Die Komponenten Übersicht über die Komponenten Beschreibung der einzelnen

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen Grundlagen der Programmierung Prof. H. Mössenböck 3. Verzweigungen If-Anweisung n > 0? j n if (n > 0) x = x / n; ohne else-zweig x x / n j max x x > y? n max y if (x > y) max = x; else max = y; mit else-zweig

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Anforderung Durch die Bearbeitung einer XML-Datei können Sie Ihre eigenen Dokumentationen (z.b. PDF-Dateien, Microsoft Word Dokumente

Mehr

Text-Zahlen-Formatieren

Text-Zahlen-Formatieren Text-Zahlen-Formatieren Beobachtung: Bei der Formatierung einer Zahl in eine Textzahl und umgekehrt zeigt Excel ein merkwürdiges Verhalten, welches nachfolgend skizziert werden soll: Wir öffnen eine neue

Mehr

Informatik I. Übung 01. Olga Diamanti

Informatik I. Übung 01. Olga Diamanti Informatik I Übung 01 Olga Diamanti 1 Über mich PhD Studentin in D-INFK Aus Griechenland Habe Elektrotechnik studiert Email: olga.diamanti@inf.ethz.ch http://www.inf.ethz.ch/ personal/dolga/ Mein Büro:

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (WS 2015/2016) Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:

Mehr

Compilerbau mit Phoenix

Compilerbau mit Phoenix Übersicht 2 Was ist ein Compiler? Frontend Analyse Backend Synthese Compiler-Pässe 3 Was ist ein Compiler? Frontend (Eingabesprache) Analyse Backend (Ausgabesprache) Synthese 4 Was ist ein Compiler? Frontend

Mehr

Ihr CMS für die eigene Facebook Page - 1

Ihr CMS für die eigene Facebook Page - 1 Ihr CMS für die eigene Facebook Page Installation und Einrichten eines CMS für die Betreuung einer oder mehrer zusätzlichen Seiten auf Ihrer Facebook Page. Anpassen der "index.php" Installieren Sie das

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Tutorium 4 26..25 INSTITUT FÜR THEORETISCHE INFORMATIK KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

WhiteStarUML Tutorial

WhiteStarUML Tutorial WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/

Mehr