Programmieren in Java
|
|
|
- Brit Hartmann
- vor 8 Jahren
- Abrufe
Transkript
1 Programmieren in Java Vorlesung 07: Parsen Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 32
2 Inhalt Vorlesungsüberblick Erinnerung: Ausdrücke Parsen Lexeme und Scanner BNF Eindeutigkeit Recursive Descent Parser Linksrekursion Lookahead Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 2 / 32
3 Vorlesungsüberblick Vorlesungsüberblick Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 3 / 32
4 Erinnerung: Ausdrücke Erinnerung Ein arithmetischer Ausdruck hat eine der folgenden Formen: eine Variable Beispiele: x, index eine Konstante (eine ganze Zahl) Beispiele: 0, 51, 42 eine Summe von zwei arithmetischen Ausdrücken Beispiele: 3+4, 17+4, 17+ (2+2) ein Produkt von zwei arithmetischen Ausdrücken Beispiele: 3 4, 2 (17+4), (2 3) 4 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 4 / 32
5 Erinnerung: Ausdrücke Erstellen von Ausdrücken Mit Hilfe von Konstruktoren eine Variable Beispiele: new Var( x ), new Var( index ) eine Konstante (eine ganze Zahl) Beispiele: new Const(0), new Const(51), new Const( 42) eine Summe von zwei arithmetischen Ausdrücken Beispiele: new Add(new Const(3), new Const(4)), new Add(new Const(17), new Add(new Const(2), new Const(2)) ein Produkt von zwei arithmetischen Ausdrücken Beispiele: new Product(new Const(3), new Const(4)), new Product(new Product(new Const(2), new Const(3)), new Const(4)) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 5 / 32
6 Erinnerung: Ausdrücke Erstellen von Ausdrücken Mit Hilfe von statischen Factory Methoden eine Variable Beispiele: var( x ), var( index ) eine Konstante (eine ganze Zahl) Beispiele: cnst(0), cnst(51), cnst( 42) eine Summe von zwei arithmetischen Ausdrücken Beispiele: add(cnst(3), cnst(4)), add(cnst(17), add(cnst(2), cnst(2)) ein Produkt von zwei arithmetischen Ausdrücken Beispiele: product(cnst(3), cnst(4)), product(product(cnst(2), cnst(3)), cnst(4)) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 6 / 32
7 Heute: Erstellen von Ausdrücken durch Parsen D.h. Einlesen von einem String oder aus einer Datei eine Variable Beispiele: parse( x ), parse( index ) eine Konstante (eine ganze Zahl) Beispiele: parse( 0 ), parse( 51 ), cnst( 42) eine Summe von zwei arithmetischen Ausdrücken Beispiele: parse( 3+4 ), parse( 17+(2+2) ) ein Produkt von zwei arithmetischen Ausdrücken Beispiele: parse( 3 4 ), parse( ) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 7 / 32
8 Aufgabenstellung Parsen Gesucht Statische Methode 1 IExpr parse(string input); so dass folgendes gilt: 1. Falls input einen korrekt geformten Ausdruck enthält, so liefert parse (input) ein Objekt von Type IExp, das der Eingabe entspricht. 2. Falls input keinen korrekt geformten Ausdruck enthält, so liefert parse (input) eine Exception als Fehlermeldung. 3. Für alle Objekte e0 ungleich null von Typ IExpr soll gelten, dass e0.equals(parse (e0.tostring())) == true ist. Insbesondere wird keine Exception ausgeloest. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 8 / 32
9 Definition von tostring() 1 class Var implements IExpr { 2 public String tostring() { 3 return name; 4 } 5 } 6 class Const implements IExpr { 7 public String tostring() { 8 return value + ; 9 } 10 } 11 class Add implements IExpr { 12 public String tostring() { 13 return ( + left.tostring() right.tostring() + ) ; 14 } 15 } 16 class Product implements IExpr { 17 public String tostring() { 18 return ( + left.tostring() + + right.tostring() + ) ; 19 } 20 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 9 / 32
10 Beispiele für tostring() 1 public void test() { 2 checktostring( x, var( x )); 3 checktostring( 45, cnst(45)); 4 checktostring( (3 + 4), add(cnst(3), cnst(4))); 5 checktostring( (3 4), product(cnst(3), cnst(4))); 6 checktostring( ((2 3) + 4), add(product(cnst(2),cnst(3)), cnst(4))); 7 } 8 9 private void checktostring(string x, IExpr e) { 10 String r = e.tostring(); 11 System.out.println( + r + ); 12 assertequals(x, r); 13 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 10 / 32
11 Beispiele für parse() Umkehrung von tostring() 1 public void testparse() { 2 checkparse( x, var( x )); 3 checkparse( 45, cnst(45)); 4 checkparse( (3 + 4), add(cnst(3), cnst(4))); 5 checkparse( (3 4), product(cnst(3), cnst(4))); 6 checkparse( ((2 3) + 4), add(product(cnst(2),cnst(3)), cnst(4))); 7 } 8 9 private void checkparse(string input, IExpr expected) { 10 IExpr result = parse(input); 11 assertequals(expected, result); 12 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 11 / 32
12 Lexeme und Scanner Lexeme: Bestandteile eines Ausdrucks 1. Variable: String bestehend aus mehr als einem Buchstaben [A Za z]+ 2. Konstante: String bestehend aus mehr als einer Ziffer \\d+ 3. Klammer auf \\( 4. Klammer zu \\) 5. Pluszeichen \\+ 6. Multiplikationszeichen \\ 7. Trennsymbole: Leerzeichen, Tabulatoren, etc (whitespace) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 12 / 32
13 Lexeme und Scanner Lexeme: Bestandteile eines Ausdrucks 1. Variable: String bestehend aus mehr als einem Buchstaben [A Za z]+ 2. Konstante: String bestehend aus mehr als einer Ziffer \\d+ 3. Klammer auf 4. Klammer zu 5. Pluszeichen 6. Multiplikationszeichen 7. Trennsymbole: Leerzeichen, Tabulatoren, etc (whitespace) \\( \\) \\+ Lexeme Die Zeichenfolgen nach 1-6 heißen Lexeme. Zwischen zwei Lexemen dürfen beliebig viele Trennsymbole eingefügt werden. Traditionell werden Lexeme durch reguläre Ausdrücke definiert (rechte Spalte). \\ Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 12 / 32
14 Lexeme und Scanner Scanner: Zerlegen eines Ausdrucks in Lexeme 1 public interface IScanner { 2 / 3 Test if next lexeme in input is matched by regex. regex a regular expression true if input starts with regex. 6 / 7 boolean lookingat(string regex); 8 / 9 If scanner is looking at regex, return string matched by regex and 10 advance to next lexeme skipping over whitespace. regex a regular expression matched string if input starts with regex. Otherwise return null. 13 / 14 String getlexeme(string regex); 15 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 13 / 32
15 Lexeme und Scanner StringScanner: Scanner mit Eingabestring Definiere Klasse StringScanner mit Feld String input. 1 public boolean lookingat(string regex) { 2 Matcher m = Pattern.compile(regex).matcher(input); 3 return m.lookingat(); 4 } Pattern java.util.regex.pattern.compile(string regex) Compiles the given regular expression into a pattern. Parameters: regex The expression to be compiled Returns: the given regular expression compiled into a pattern Throws: PatternSyntaxException - If the expression s syntax is invalid Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 14 / 32
16 Lexeme und Scanner Pattern und Matcher Matcher java.util.regex.pattern.matcher(string input) Creates a matcher that will match the given input against this pattern. Parameters: input The character sequence to be matched Returns: A new matcher for this pattern boolean java.util.regex.matcher.lookingat() Attempts to match the input sequence, starting at the beginning of the region, against the pattern. This method always starts at the beginning of the region. It does not require that the entire region be matched. If the match succeeds then more information can be obtained via the start, end, and group methods. Returns: true if, and only if, a prefix of the input sequence matches this matcher s pattern Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 15 / 32
17 Lexeme und Scanner StringScanner.getLexeme() 1 public String getlexeme(string regexp) { 2 Matcher m = Pattern.compile(regexp).matcher(input); 3 String r = null; 4 if (m.lookingat()) { 5 r = input.substring(0, m.end()); 6 input = input.substring(m.end()).trim(); 7 } 8 return r; 9 } substring(begin, end) liefert den Substring ab begin bis (exklusive) end end() liefert den Index direkt hinter dem Match trim() entfernt Leerzeichen etc zu Beginn eines Strings Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 16 / 32
18 Lexeme und Scanner Zwischenstand Scanner Liefert Zerlegung der Eingabe in Folge von Lexemen und entfernt whitespace. Klassifiziert die Lexeme in Token. Beispiele: 42* * NUM * NUM + NUM (index - 1) * span ( index - 1 ) * span ( VAR - NUM ) * VAR Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 17 / 32
19 Lexeme und Scanner Zwischenstand Scanner Liefert Zerlegung der Eingabe in Folge von Lexemen und entfernt whitespace. Klassifiziert die Lexeme in Token. Beispiele: 42* * NUM * NUM + NUM (index - 1) * span ( index - 1 ) * span ( VAR - NUM ) * VAR Parser Rekonstruiert aus einer Tokenfolge einen Ausdruck, falls möglich. Das heisst, der Parser erkennt die Sprache der Ausdrücke. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 17 / 32
20 BNF Spezifikation einer Sprache durch BNF Ein arithmetischer Ausdruck hat eine der folgenden Formen: eine Variable eine Konstante (eine ganze Zahl) eine Summe von zwei arithmetischen Ausdrücken ein Produkt von zwei arithmetischen Ausdrücken Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 18 / 32
21 BNF Spezifikation einer Sprache durch BNF Ein arithmetischer Ausdruck hat eine der folgenden Formen: eine Variable eine Konstante (eine ganze Zahl) eine Summe von zwei arithmetischen Ausdrücken ein Produkt von zwei arithmetischen Ausdrücken Sprachdefinition durch BNF Analog zur Spezifikation von arithmetischen Ausdrücken Expr ::= VAR Variable NUM Konstante Expr + Expr Summe Expr * Expr Produkt ( Expr ) Klammern (neu) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 18 / 32
22 BNF BNF (Backus-Normalform) BNF Bestandteile Expr ::= VAR Variable NUM Konstante Expr + Expr Summe Expr * Expr Produkt ( Expr ) Klammern (neu) Variable (Nichtterminalsymbole): Expr, VAR, NUM stehen jeweils für (eine Menge von) Strings VAR und NUM stehen für die entsprechenden Lexeme Terminalsymbole: +, *, (, ) stehen jeweils für sich selbst Metasymbole ::= und definieren Ersetzungsregeln (Produktionen) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 19 / 32
23 BNF BNF Ersetzungsregeln Ersetzungsregeln Expr ::= VAR NUM ( Expr ) Expr + Expr Expr * Expr Links von ::= steht eine Variable Rechts von ::= stehen alternative Ersetzungen getrennt durch In jedem Schritt wird eine Variable durch eine ihrer rechten Seiten ersetzt (Ableitungsschritt ) oder durch ein passendes Lexem Beispiele Expr VAR index Expr Expr + Expr VAR + Expr x + Expr x + NUM x + 1 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 20 / 32
24 BNF Sprache einer BNF In jeder BNF ist eine Variable das Startsymbol Beispiel Ausdrücke: Expr Zur Sprache einer BNF gehört jeder String, der aus dem Startsymbol abgeleitet werden kann und vollständig aus Terminalsymbolen besteht. Beispiel Ausdrücke: 42, index, x+1, 2*x+1, 2*(x+1) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 21 / 32
25 BNF Problemstellung Parsen Gegeben BNF Eingabestring Gesucht Ableitung vom Startsymbol der BNF zum Eingabestring (falls existiert) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 22 / 32
26 Eindeutigkeit Darstellung der Ableitung = IExpr-Objekt Expr ::= VAR Variable var(v) NUM Konstante cnst(n) Expr + Expr Summe add(e 1, e 2 ) Expr * Expr Produkt product(e 1, e 2 ) ( Expr ) Klammern (neu) e Jede Produktion entspricht einem IExpr-Konstruktor (Ausnahme: Klammer) Jede vollständige Ableitung entspricht IExpr-Objekt Beispiel: Expr Expr + Expr add(e 1, e 2 ) VAR + Expr add(var(v), e 2 ) x + Expr add(var( x ), e 2 ) x + NUM add(var( x ), cnst(n)) x + 1 add(var( x ), cnst(1)) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 23 / 32
27 Eindeutigkeit Problem: Ausdrucks-BNF ist nicht eindeutig Betrachte 1+2*3 Expr Expr + Expr NUM + Expr 1 + Expr 1 + Expr Expr 1 + NUM Expr Expr NUM (2 * 3) add(cnst(1), prd(cnst(2), cnst(3))) Expr Expr Expr Expr + Expr Expr NUM + Expr Expr 1 + Expr Expr 1 + NUM Expr Expr NUM (1 + 2) * 3 prd(add(cnst(1), cnst(2)), cnst(3)) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 24 / 32
28 Eindeutigkeit Lösung: Eindeutige BNF für Ausdrücke Expr ::= Expr + Term Term Term ::= Term Factor Factor Factor ::= VAR NUM ( Expr ) Für diese BNF gibt es zu jedem String höchstens eine Ableitung Punktrechnung vor Strichrechnung ist eingebaut Die Ableitung Expr entspricht 1 + (2 * 3) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 25 / 32
29 Recursive Descent Parser BNF Recursive Descent Parser Idee des Parsers Jede Variable N wird durch eine Methode parsen repräsentiert. Die Methode zu Variable N liest aus der Eingabe einen String, der aus N abgeleitet werden kann. Die Definition der Methode ergibt sich aus den Produktionen für N. Anhand des vorliegenden Lexems (Tokens) wird eine Alternative der Produktion ausgewählt. Für die Symbole auf der rechten Seite wird von rechts nach links Code generiert. Für eine Variable N wird parsen aufgerufen. Für ein Terminalsymbol t wird getlexeme(t) aufgerufen. Bemerkung: die Methoden rufen sich gegenseitig rekursiv auf! Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 26 / 32
30 Recursive Descent Parser Beispiel: Methode für Factor Factor ::= VAR NUM ( Expr ) 1 public IExpr parsefactor() { 2 // <Factor> ::= <VAR> 3 String lexeme = getlexeme(regexp VAR); 4 if (lexeme) { return var(lexeme); } 5 // <Factor> ::= <NUM> 6 lexeme = getlexeme(regexp NUM); 7 if (lexeme) { return cnst(integer.parseint(lexeme)); } 8 // <Factor> ::= ( <Expr> ) 9 lexeme = getlexeme(regexp OPEN PAREN); 10 if (lexeme) { 11 IExpr e = parseexpr(); 12 if (e!= null) { 13 lexeme = getlexeme(regexp CLOSE PAREN); 14 if (lexeme!= null) { 15 return e; 16 } } } 17 throw new IllegalArgumentException( Cannot parse input ); 18 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 27 / 32
31 Recursive Descent Parser Linksrekursion Beispiel (Problem): Methode für Expr Verfahren funktioniert gut für Factor, weil jede Alternative mit einem anderen Lexem beginnt. Bei den anderen Variablen ist das nicht der Fall. Betrachte das Beispiel Expr Expr ::= Expr + Term Term 1 public IExpr parseexpr() { 2 // <Expr> ::= <Expr> + <Term> 3 // not clear how to check for the other production 4 // unfortunately, this production is left recursive: 5 IExpr left = parseexpr(); 6 // oops, this recursive call does not terminate! 7 //... 8 } Um dieses Problem zu vermeiden, muss die BNF ein letztes Mal umstrukturiert werden. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 28 / 32
32 Recursive Descent Parser Linksrekursion Elimination von Linksrekursion Die Produktionen für Expr und Term sind linksrekursiv, d.h., die gleiche Variable taucht direkt am Anfang der rechten Seite einer Regel auf. Expr ::= Expr + Term Term Term ::= Term Factor Factor Diese Produktionen können umgeformt werden, so dass sie nicht mehr linksrekursiv sind, aber dass die gleiche Sprache erkannt wird. Dabei steht ε für eine leere rechte Regelseite. Expr ::= Term Expr 1 Expr1 ::= ε + Term Expr1 Term ::= Factor Term1 Term1 ::= ε Factor Term1 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 29 / 32
33 Recursive Descent Parser Lookahead Unterscheiden der Alternativen durch Lookahead Expr ::= Term Expr 1 Expr1 ::= ε + Term Expr1 Term ::= Factor Term1 Term1 ::= ε Factor Term1 Factor ::= VAR NUM ( Expr ) Erkennen der Regel-Alternativen durch Lookahead Factor : ok Expr, Term : nur eine Alternative Expr 1 : durch Testen des folgenden Lexems (Lookahead) falls + in der Eingabe, dann zweite Regel falls * oder ) in der Eingabe, dann erste (leere) Regel Term1 : durch Testen des folgenden Lexems (Lookahead) falls * in der Eingabe, dann zweite Regel falls ) in der Eingabe, dann erste (leere) Regel Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 30 / 32
34 Recursive Descent Parser Lookahead Beispiel: Methode für Term1 1 public IExpr parseterm1(iexpr left) { 2 String lexeme = getlexeme (REGEXP STAR); 3 if (lexeme!= null) { 4 IExpr right = parsefactor(); 5 if (right!= null) { 6 return parseterm1 (product (left, right)); 7 } 8 throw new IllegalArgumentException ( cannot parse Term1 ); 9 } 10 // should test lookahead for nice error message 11 return left; 12 } parseterm1 erhält beim Aufruf den linken Faktor als Argument Dadurch wird * links-assoziativ parseexpr1 wird analog implementiert. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 31 / 32
35 Recursive Descent Parser Lookahead Alles zusammen... 1 public class Parser { 2 private IScanner scan; 3 public Parser(IScanner scan) { this.scan = scan; } 4 5 // delegate to scanner 6 private String getlexeme(string re) { return scan.getlexeme(re); } 7 private boolean lookingat(string re) { return scan.lookingat(re); } 8 9 public IExpr parseexpr() { 10 IExpr left = parseterm(); 11 if (left!= null) { return parseexpr1(left); } 12 throw new IllegalArgumentException ( cannot parse expression ); 13 } 14 // further parsen methods } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 32 / 32
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
Alphabet, formale Sprache
n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l
Einstieg 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
1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Programmentwicklung ohne BlueJ
Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie
Java I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
Äquivalente Grammatiken / attributierte Grammatik
Äquivalente Grammatiken / attributierte Grammatik Linksfaktorisierung Elimination von Linksrekursion Umwandlung von EBNF in BNF Attributierte Grammatik Semantikfunktionen und Übersetzungsschema Synthetisierte,
2.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
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Einführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
Kapitel 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
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1
Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen
Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0
Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben
368 4 Algorithmen und Datenstrukturen
Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist
Einführung in die Informatik Grammars & Parsers
Einführung in die Informatik Grammars & Parsers Grammatiken, Parsen von Texten Wolfram Burgard Cyrill Stachniss 12.1 Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme
Objektorientierte 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)
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
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
Exercise (Part II) Anastasia Mochalova, Lehrstuhl für ABWL und Wirtschaftsinformatik, Kath. Universität Eichstätt-Ingolstadt 1
Exercise (Part II) Notes: The exercise is based on Microsoft Dynamics CRM Online. For all screenshots: Copyright Microsoft Corporation. The sign ## is you personal number to be used in all exercises. All
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
Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba
Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung
Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester
1 Programmierung 2 Übersetzer: Das Frontend Sebastian Hack [email protected] Klaas Boesche [email protected] Sommersemester 2012 Vom Programm zur Maschine Was passiert eigentlich mit unseren
Allgemeine 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
Java 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.
public class SternchenRechteckGefuellt {
Java programmieren: Musterlösungen Konsolen-Aufgaben Aufgabe 1: Gefüllte Rechtecke zeichnen Schreiben Sie ein Programm, das ein durch Sternchen gefülltes Rechteck zeichnet. Der Benutzer soll Breite und
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
Vererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln
Stefan Brass: OOP (Java), 3. Syntaxdiagramme und Grammatikregeln 1/32 Objektorientierte Programmierung Kapitel 3: Syntaxdiagramme und Grammatikregeln Stefan Brass Martin-Luther-Universität Halle-Wittenberg
Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
Formale 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
1 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
Fachseminar Compilerbau
Fachseminar Compilerbau WS 08/09 Matthias Schiller Syntaktische Analyse 1. Prinzip der Top-Down-Analyse 2. LL(1)-Grammatiken Modell-Vorstellung Der Scanner liefert als Ergebnis der lexikalischen Analyse,
Kapitel 2. Methoden zur Beschreibung von Syntax
1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von
Höhere Programmierkonzepte Testklausur
Höhere Programmierkonzepte Testklausur Prof. Dr. Nikolaus Wulff Zum 15. Januar 2016 1 Ein Google-Map Algorithmus (5 Punkte) 1 2 typedef void X; 3 typedef void Y; 4 5 void map(unsigned int n / tuple length
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Programmieren I + II Regeln der Code-Formatierung
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden
7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
Große Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 [email protected] http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
Informatik II. /* c) Baumstruktur in einen String schreiben und zurueckgeben */ public String tostring() {
Universität Augsburg, Institut für Informatik Sommersemester 2006 Prof. Dr. Werner Kießling 08. Juni. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Cloneable Tree.java Informatik II
Begriffe (Wiederholung)
Begriffe (Wiederholung) Sprache Menge aller Sätze Alphabet terminales / nicht terminales terminales A. Zeichen aus denen die Sätze der Sprache bestehen nicht terminales A. Hilfszeichen zum Bilden von Regeln
Programmieren in Java
Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang
Javakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
6 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,
Java: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
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
Programmieren von Webinformationssystemen
Programmieren von Webinformationssystemen Wolfgang Gassler Databases and Information Systems (DBIS) Institute of Computer Science University of Innsbruck dbis-informatik.uibk.ac.at 1 HTML Hypertext Markup
Einführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
1. Zeilenendkommentare: //... 2. geklammerte Kommentare: /*... */ 3. Dokumentationskommentare: /**... */
1 Kommentare im Source-Code Kommentare werden im Source-Code überlesen und wirken wie "white Space" (Leerzeichen, Tabulator, Zeilenvorschub). Mit Ausnahme des @deprecated-tag in Dokumentationskommentaren
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel
Java für Anfänger Teil 2: Java-Syntax Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
Java Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
SWE1 / Übung 2 (19.10.2011)
SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn
Programmierung 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.
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
Einführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
Klassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
JAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
Javakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
Klassen mit Instanzmethoden
Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07
3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
Reguläre Ausdrücke. Felix Döring, Felix Wittwer 14. November Python-Kurs
Reguläre Ausdrücke Felix Döring, Felix Wittwer 14. November 2016 Python-Kurs Gliederung 1. Grundlagen 2. Matching Regeln Sonderzeichen Zusammengesetzte Regex Spezielle Sequenzen 3. Methoden 4. reqular
Methoden (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
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
Struktur des MicroJava- Compilers
Struktur des MicroJava- Compilers Compiler Parser.mj Scanner Code- Generator.obj Symboltabelle UE zu Übersetzerbau Lexikalische Analyse 1 Grammatik ohne Scanner Expr = Term { "+" Term }. Term = Factor
Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
Einführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
5 Grundlagen der Java-Syntax
5 Grundlagen der Java-Syntax Es sollen nun einige Grundregeln besprechen, die in jeder Java-Programmdatei berücksichtigt werden müssen. 5.1 Grundsätzliches zur Syntax von Java Programmen Zunächst sollten
Ü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
Probeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
9 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
Vererbung. 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
Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein ([email protected].
Java Crashkurs Kim-Manuel Klein ([email protected]) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
Programmieren I. Formale Sprachen. www.kit.edu. Institut für Angewandte Informatik
Programmieren I Formale Sprachen KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Formale Sprachen: Allgemeines Sprachen werden
188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
JAVA - 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
Effizientes Arbeiten mit dem Emacs. Suchen und Ersetzen.
Effizientes Arbeiten mit dem Emacs Suchen und Ersetzen Rainer Orth Alexander Sczyrba {ro,asczyrba}@techfak.uni-bielefeld.de Suchmethoden Simple Search Emacs springt an das nächste Vorkommen des angegebenen
MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am
MB-ALG, SS1 Seite 1 Hauptklausur, geschrieben am.07.01 Vorname Nachname Matrikel-Nr Diese Klausur ist mein letzter Prüfungsversuch (bitte ankreuzen): Ja Nein Ihre Lösung für Aufgabe 1 können Sie direkt
Inhalt Kapitel 5: Syntax
Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des
Hochschule Augsburg, Fakultät für Informatik Name:... Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6
Prüfung "Programmieren 1", IN1bac, WS 10/11 Seite 1 von 6 Datum, Uhrzeit: 24. 01. 2011, 10.30 Uhr Semester: IN1 Note:... Prüfer: Prof. Meixner Dauer: 60 Min. Hilfsmittel: keine Punkte:... Diese Prüfung
7. Formale Sprachen und Grammatiken
7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)
Interfaces und Vererbung
Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren
Java Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
Automaten und formale Sprachen. Lösungen zu den Übungsblättern
Automaten und formale Sprachen zu den Übungsblättern Übungsblatt Aufgabe. (Sipser, exercise.3) M = ({q, q2, q3, q4, q5}, {u, d}, δ, q3, {q3}) δ: u d q q q 2 q 2 q q 3 q 3 q 2 q 4 q 4 q 3 q 5 q 5 q 4 q
Algorithmen 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
Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode
p^db=`oj===pìééçêíáåñçêã~íáçå=
p^db=`oj===pìééçêíáåñçêã~íáçå= Error: "Could not connect to the SQL Server Instance" or "Failed to open a connection to the database." When you attempt to launch ACT! by Sage or ACT by Sage Premium for
Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
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?
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
Universität Karlsruhe (TH)
Universität Karlsruhe (TH) Lehrstuhl für Programmierparadigmen prachtechnologie und Compiler W 2008/2009 http://pp.info.uni-karlsruhe.de/ Dozent: Prof. Dr.-Ing. G. nelting [email protected]
