Syntaktische Analyse (Parsen)

Größe: px
Ab Seite anzeigen:

Download "Syntaktische Analyse (Parsen)"

Transkript

1 Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik G und ein String w. Fragen: Vorgehen: gehört w zu L(G)? Welche Bedeutung hat w? Konstruiere Herleitungsbaum zu w P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 1

2 Syntaktische Analyse eines Programms Gegeben: Frage: Aufgabe: Syntax einer Programmiersprache und der Quelltext eines Programms. ist dies ein syntaktisch korrektes Programm? Was soll dieses Programm bewirken? Ermittle Bedeutung des Programms, Konstruktionsverfahren für Herleitungsbäume (bzw. Syntaxbäume) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 2

3 Syntaktische Analyse bzgl einer CFG Für jede CFG gibt es einen Parse-Algorithmus mit worst case Laufzeit O(n 3 ) (n : Anzahl der Eingabesymbole) CYK: Cocke, Younger, Kasami, falls Grammatik in Chomsky-Normalform (Alle Regeln von der Form N W mit W 2 oder Earley-Algorithmus CYK benutzt dynamisches Programmieren. erzeugt ein Tabelle: pro Paar (N, w) von Nichtterminal N und Wort w ein Eintrag True wenn N G w, sonst False Beschränkung: w sind Unterstrings des Eingabewortes P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 3

4 Syntaktische Analyse bzgl einer CFG Praxis: Für jede Programmiersprache gibt es einen Parser, der effizient arbeitet, d.h. in O(n), oder in O(n log(n)) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 4

5 Parse-Methoden und Beschränkungen Beschränkung in dieser Vorlesung auf einfach implementierbare oder effiziente Nur für eingeschränkte CFGs Verarbeitung des Zeichenstroms bzw. des Eingabewortes von links nach rechts evtl. auch mit Vorausschau um einige Zeichen. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 5

6 Parse-Methoden: Vorgehensweisen: Top-Down: Es wird versucht eine Herleitung vorwärts, vom Startsymbol aus, zu bilden ( forward-chaining ) Bottom-Up: Es wird versucht eine Herleitung rückwärts, vom Wort aus, zu bilden. ( backward-chaining ). P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 6

7 Parse-Methoden: Vorgehensweisen: Weiteres Unterscheidungsmerkmal: R : Konstruktion einer Rechtsherleitung L : Konstruktion einer Linksherleitung Gängige Kombinationsmöglichkeiten: Top-Down-Verfahren zur Konstruktion einer Linksherleitung Bottom-Up-Verfahren zur Konstruktion einer Rechtsherleitung P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 7

8 Beispiel S ::= AB A ::= 0 1 B ::= 8 9 Frage: Kann 09 aus dieser Grammatik hergeleitet werden? P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 8

9 09-Beispiel: Top-down: Start mit Startsymbol S Rate die Produktionen; Nutze den zu parsenden String zur Steuerung Bilde Restproblem Ziel: Eingabestring bis zum Ende verarbeiten. Ziel ε NT-Wort S AB B Herleitung S AB 0B 09 Die erzeugte Herleitung ist eine Linksherleitung. Beachte 09 wird von links nach rechts bearbeitet Jedes Eingabezeichen bestimmt eindeutig die Produktion P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 9

10 09-Beispiel: Bottom-up: Vorgehen: Regeln rückwärts auf den gegebenen String anwenden das Startsymbol der Grammatik ist zu erreichen 09 A9 AB S Eine Rechtsherleitung wurde konstruiert Beachte: Manchmal sind mehrere Regeln anwendbar Manchmal muss man den Teilstring raten, auf den eine Produktion (rückwärts) angewendet werden soll Im Beispiel: Gleicher Herleitungsbaum P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 10

11 Beispiel: Suche nach der Herleitung S ::= A B A ::= 0A 1 B ::= 0B 2 Kann 002 hergeleitet werden? Ziel NT-Wort S A A A Herleitung S A 0A 00A? 002 kann nur aus B hergeleitet werden: Ziel NT-Wort S B B B Herleitung S B 0B 00B 002 P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 11

12 Beispiel: Bemerkungen Ein deterministischer Top-Down-Parser muss beim ersten Zeichen von 002 entscheiden, ob A, oder B. Diese Wahl kann falsch sein. Misslingt eine Herleitung, so muss der Parser zurücksetzen Backtracking P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 12

13 Rekursiv absteigende Parser Rekursiv absteigender Parser / Syntaxanalyse ist an der Form der Regeln der Grammatik orientiert Methode: Top-Down-Prüfung der Anwendbarkeit der Regeln P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 13

14 Struktur eines rekursiv absteigenden Parsers Top-Down bzgl. der Grammatik. Eingabewort von links nach rechts Backtracking, falls Sackgasse Konstruktion einer Linksherleitung P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 14

15 Struktur eines rekursiv absteigenden Parsers Pro Nichtterminal N existiert ein Parser P N der die formale Sprache zu N erkennt. Eingabe: String Ausgabe: Syntaxbaum zu Prefix der Eingabe; Reststring Parser zu G ist P σ zum Startsymbol σ Gegeben alle N-Regeln: N w 1... w n P N probiert für alle w i aus, ob diese zum Anfang des Eingabestrings passen Passt keine, dann Fehlschlag Prüfung, ob eine Regel ob N w 1 passt: w i = w i1 w i2... w im von links nach rechts durchgehen Jeweils Parser P wij aufrufen. I.a. rekursiver Aufruf, falls w ij Nichtterminal. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 15

16 Eigenschaften eines rekursiv-absteigenden Parsers I.a. exponentiell. Liefert alle Linksherleitungen für alle Präfixe Leicht implementierbar Leicht erweiterbar auf weitere Einschränkungen Terminiert nicht für bestimmte (linksrekursive) Grammatiken, obwohl eine Herleitung existiert: Beispiel A ::= A+A A-A Eingabe: 1+1 : Aber: nur die erste Regel wird (jeweils rekursiv) versucht: (A,1+1) (A+A,1+1) ((A+A)+A, 1+1)... P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 16

17 Rekursiv-absteigende Parser Anmerkung Programme von Programmiersprachen kann man i.a. in O(n) oder O(n log(n)) parsen, Effiziente rekursiv-absteigende Parser benötigen i.a.: Erweiterungen wie Vorausschau Umbau der Grammatik (Optimierung der Grammatik) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 17

18 Funktionale Kombinator-Parser Implementierung von rekursiv-absteigenden Parsern in Haskell Vorteile relativ leicht verständliche Programmierung 1-1-Übersetzung der Regeln in Programmcode Pro Nichtterminal N eine Funktion parsern:: String -> [(String, R)] Präfix der Eingabe (Rest der Eingabe, Resultat (z.b. Syntaxbaum) ) Um Backtracking zu implementieren: Liste von erfolgreichen Ergebnissen verzögerte Auswertung ergibt richtige Reihenfolge der Abarbeitung. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 18

19 Haskell-Implementierung der Parser-Kombinatoren Kombinator (kombiniert Parser) Z.B. Alternative, Sequenz, Resultat-Umbau module RekParsKomb where import Char infixr 6 <*>, <*, *> infixr 4 < >, <!> infixl 5 <@ type Parser a b = [a] -> [([a],b)] erkennt ein Zeichen: symbol :: Eq s => s -> Parser s s symbol a [] = [] symbol a (x:xs) a ==x = [(xs,x)] otherwise = [] P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 19

20 Haskell: Parser-Kombinatoren (2) erkennt einen String: token :: Eq s => [s] -> Parser s [s] -- token :: Eq s => [s] -> Parser s [s] token k xs k == (take n xs) = [(drop n xs, k)] otherwise = [] where n = length k testet ein Zeichen der Eingabe: satisfy :: (s -> Bool) -> Parser s s satisfy p [] = [] satisfy p (x:xs) = [(xs,x) p x] epsilon :: Parser s () epsilon xs = [(xs,())] P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 20

21 Haskell: Parser-Kombinatoren (3) immer erfolgreich: succeed :: r -> Parser s r succeed v xs = [(xs,v)] immer fehlschlagend: pfail :: Parser s r pfail xs = [] P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 21

22 Haskell: Parser-Kombinatoren (4) Sequenzkombinator : (<*>) :: Parser s a -> Parser s b -> Parser s (a,b) (p1 <*> p2) xs = [(xs2, (v1,v2)) (xs1,v1) <- p1 xs, (xs2,v2) <- p2 xs1] Alternativkombinator : (< >) :: Parser s a -> Parser s a -> Parser s a (p1 < > p2) xs = p1 xs ++ p2 xs Alternativkombinator-2: nur das erste Ergebnis: (<!>) :: Parser s a -> Parser s a -> Parser s a (p1 <!> p2) xs = take 1 (p1 xs ++ p2 xs) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 22

23 Haskell: Parser-Kombinatoren (5) ignoriert Blanks am Anfang: sp :: Parser Char a -> Parser Char a sp p = p. dropwhile isspace eliminiert alle Whitespaces: wsp :: Parser Char a -> Parser Char a wsp p = p. filter (\x -> not (isspace x)) testet, ob die ganze Eingabe konsumiert wurde : just :: Parser s a -> Parser s a just p = filter (null. fst). p P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 23

24 Haskell: Parser-Kombinatoren (6) Operation auf dem Ergebnis des Parse : (<@) :: Parser s a -> (a-> b) -> Parser s b (p <@ f) xs = [(ys, f v) (ys,v) <- p xs] ignoriert rechtes Ergebnis: (<*) :: Parser s a -> Parser s b -> Parser s a p <* q = p <*> q <@ fst ignoriert linkes Ergebnis: (*>) :: Parser s a -> Parser s b -> Parser s b p *> q = p <*> q <@ snd list (x,xs) = x:xs P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 24

25 Haskell: Parser-Kombinatoren (7) erkennt Folge. d.h. entspricht *: many :: Parser s a -> Parser s [a] many p = p <*> many p <@ list < > succeed [] many1 p = p <*> many p <@ list digit :: Parser Char Int digit = satisfy isdigit <@ f where f c = ord c - ord 0 erkennt Zahl: natural :: Parser Char Int natural = many1 digit <@ foldl f 0 where f a b = a*10 + b P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 25

26 Haskell: Parser-Kombinatoren (8) Nimmt nur die erste (maximale) Alternative des many: nur erlaubt, wenn die Grammatik diese Alternativen nicht benötigt manyex :: Parser s a -> Parser s [a] manyex p = p <*> many p <@ list <!> succeed [] many1ex p = p <*> manyex p <@ list option p = p <@ (\x->[x]) <!> epsilon <@ (\x-> []) Nimmt nur die erste (maximale) Alternative bei Zahlen: naturalex :: Parser Char Int naturalex = many1ex digit <@ foldl f 0 where f a b = a*10 + b P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 26

27 Haskell: Parser-Kombinatoren (9) Erkennt Klammerung und ignoriert den Wert der Klammern: pack:: Parser s a -> Parser s b -> Parser s c -> Parser s b pack s1 p s2 = s1 *> p <* s2 Erkennt Infix-Folge wie z.b. ( ): Liste der Argumente: opseqinf psymb parg = (parg <*> many (psymb *> parg)) <@ list paarf f = \(x,y) -> f x y P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 27

28 Beispiel arithmetische Ausdrücke Grammatik Ex ::= Plus Plus ::= SigZ SigZ Plusrest PlusRest ::= + SigZ PlusRest eps SigZ ::= B - B B ::= Z ( Ex ) Z ::= P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 28

29 Beispiel arithmetische Ausdrücke plusausdruecke = just pariex pariex :: Parser Char Integer pariex pariplus = (wsp pariplus) = (opseqinf (symbol + ) parisigz) <@ sum Die direkte Implementierung wäre: (parisigz <*> many ((symbol + ) *> parisigz)) <@ list parizsymbol = naturalex parisigz = parib < > (symbol - ) *> parib <@ (negate) parib = parizsymbol < > (pack (symbol ( ) pariex (symbol ) )) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 29

30 Rekursiv-prädiktive Parser Optimierte rekursiv absteigende Parser für eingeschränkte Grammatiken ( LL(1) ). Eigenschaft Die anzuwendende Produktion ist immer eindeutig festgelegt abhängig vom aktuellen Nichtterminal und dem nächsten Symbol der Resteingabe (Lookahead-Symbol) kein Zurücksetzen notwendig, deterministisch Abarbeitung der Eingabe von links nach rechts Aber: man kann nicht für jede kontextfreie Grammatik einen rekursiv-prädiktiven Parser konstruieren. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 30

31 Rekursiv-prädiktive Parser Eindeutige Zuordnung: (Lookahead-Symbol, aktuelles Nichtterminal) Regel Tabellengesteuerter rekursiv-prädiktiver Parser: Die obige Tabelle inklusive Fehlereinträge reicht aus zur Steuerung des Parsers P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 31

32 Rekursiv-prädiktive Parser Sind A w 1... w n die Regeln zu A und im Zustand A ist a das erste Symbol der Eingabe: nur eine Regel A w i darf anwendbar sein. Beispiel: A bcd aef cg H H dabc... P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 32

33 Rekursiv-prädiktive Parser Sonderrolle: Es gibt Regel A w i mit w i ε: Diese wird ausgewählt, wenn: keine passende rechte Seite für das Lookahead-Symbol und das Lookahead-Symbol kann auf A folgen und es gibt nur eine solche Regel für A P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 33

34 Rekursiv-prädiktive Parser, ε-fall Beispiel: S AB AC A bcd aef cg H H ε... B da C ea Im Zustand A und bei Eingabesymbol d: A H wird ausgewählt. Beachte: Gesamtzustand = gesamter Aufrufstack P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 34

35 FIRST- und FOLLOW-Mengen Definition Sei G eine CFG mit S als Startsymbol. Für w (T N) und A N: first(w) := {x T w xv für ein Wort v T } {ε} wenn w ε follow(a) := {x T S v 1 Axv 2 für Worte v 1, v 2 T } Diese Mengen kann man in allen rekursiv-absteigenden Parsern zur Vermeidung von Backtracking verwenden. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 35

36 Berechnung von first : Fixpunktiteration: f 0 (A i ) := für alle i f j+1 (A i ) := i f j (w i ) wenn A i ::= w 1... w k die Regeln zu A sind. Stopp, wenn sich nichts mehr ändert. Hierbei wird verwendet: f j (aw) := {a} für jedes Terminal a f j (Aw ) := f j (A) wenn ε f j (A) f j (Aw ) := (f j (A) \ {ε}) f j (w ) wenn ε f j (A) f j (ε) := {ε} P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 36

37 Berechnung von follow : g 0 (A i ) := für alle i g j+1 (A i ) := Vereinigung folgender Mengen: first(w ) T g j (A k ) für jede Regel A k wa i w für jede Regel A k wa i w mit ε first(w ) Stopp, wenn g j+1 (A) = g j (A) für alle Nichtterminale A. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 37

38 Beispiel für first: Fixpunktberechnung Ex ::= Plus Plus ::= SigZ SigZ Plusrest PlusRest ::= + SigZ PlusRest eps SigZ ::= B - B B ::= Z ( Ex ) Z ::= Ex Plus Plus SigZ B Z Rest +, ε - ( 0,...,9 - +, ε -,( 0,...,9, ( 0,...,9 - -,( +, ε 0,...,9, (,- 0,...,9, (,- 0,...,9 -,( 0,...,9, (,- +, ε 0,...,9, (,- 0,...,9, (,- 0,...,9 0,...,9, (,- 0,...,9, (,- +, ε 0,...,9, (,- 0,...,9, (,- 0,...,9 P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 38

39 Beispiel für follow : Ex ::= Plus Plus ::= SigZ SigZ Plusrest PlusRest ::= + SigZ PlusRest eps SigZ ::= B - B B ::= Z ( Ex ) Z ::= Ex Plus Plus SigZ B Z Rest ) + ) ) + + ) ) ) ) ) ) +,) + + ) ) ) +,) +,) + ) ) ) +,) +,) +,) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 39

40 Konstruktion eines rekursiv-prädiktiven Parsers Bedingungen für die Eindeutigkeit: Für jedes A mit A ::= w 1... w n falls ε first(w i ) für alle i: die Mengen first(w i ) müssen paarweise disjunkt sein. Für jedes A mit A ::= w 1... w n falls ε first(w j ) für ein j: die Mengen first(w i ), i = 1,..., n und follow(a) müssen paarweise disjunkt sein. Für jedes A mit A ::= w 1... w n gibt es maximal ein w i mit ε first(w i ) Parser benötigt Tabelle (A i, a) R j P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 40

41 Vorgehen des LL(1)-Parsers Gegeben a, das Symbol und das aktuelle Nichtterminal A: Ist a first(w i ) für eine Regel A ::= w i, dann nehme diese Regel. Ist a first(w i ) für alle Regeln A ::= w i, dann gibt es maximal eine Regel A ::= w mit first(w) = Falls a follow(a), dann diese Regel. Wenn auch dann keine passende Alternative existiert, wird mit Fehler abgebrochen. Vorteil: genaue und frühe Fehlererkennung P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 41

42 Beispiel: vereinfachte Grammatik für Ausdrücke Expr ::= Term Rest Rest ::= + Term Rest Term Rest ε Term ::= first(term Rest) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} first(+ Term Rest) = {+}, first( Term Rest) = { } first(expr ) = first(term ) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} first(rest) = {+,, ε} follow(expr) =. follow(rest) =. follow(term) = {+, }. Diese Grammatik hat somit die LL(1)-Eigenschaft. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 42

43 Beispielparser zur Grammatik E ::= T R R ::= + T R - T R ε T ::= Die Parsefunktionen haben als Wert: (Resteingabe, Pbaum) data Pbaum = Pblatt Int PExp Pbaum Pbaum PRest Char Pbaum Pbaum PLeer deriving (Show, Eq) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 43

44 Beispielparser zur Grammatik (2) parseterm [] = error "Ziffer erwartet; rest = nil" parseterm eingabe@(symbol:rest) = if not (symbol elem [ ] ) then error ("Ziffer erwartet; rest = " ++ eingabe) else (rest,pblatt (fst (head (reads [symbol])))) parserest [] = ([],PLeer) parserest eingabe@(operator: rest) = if not (operator elem [ +, - ] ) then error ("+ oder - erwartet; rest = " ++ eingabe) else let (rest1,resultat1) = parseterm rest (rest2,resultat2) = parserest rest1 in (rest2, PRest operator resultat1 resultat2) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 44

45 Beispielparser zur Grammatik (3) parseexp :: [Char] -> (String,Pbaum) parseexp [] = error ("Ziffer erwartet; rest = nil") parseexp (eingabe@(symbol: rest)) = if not (symbol elem [ ] ) then error ("Ziffer erwartet; rest = " ++ eingabe) else let (rest1,resultat1) = parseterm eingabe (rest2,resultat2) = parserest rest1 in (rest2, PExp resultat1 resultat2) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 45

46 Beispielparser zur Grammatik (4) Testbeispiele: test1::(string,pbaum) test1 = parseexp " " test2::(string,pbaum) test2 = parseexp "1+2-3" Main> test2 ("",PExp (Pblatt 1) (PRest + (Pblatt 2) (PRest - (Pblatt 3) PLeer))) :: (String,Pbaum) P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 46

47 Parsebaum: Beispielparser zur Grammatik (3) PExp 1 PRest + 2 PRest 3 PLeer Er entspricht der Grammatik, aber noch nicht der gewünschten Struktur des arithmetischen Ausdrucks. Man braucht eine Nachbearbeitung des Parsebaumes. P raktische Informatik 2, SS 2005, F olien Kap.4, 2, (15. Juni2005) Seite 47

Grundlagen der Programmierung 2 (Comp-C)

Grundlagen der Programmierung 2 (Comp-C) Grundlagen der Programmierung 2 (Comp-C) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 25. Juni 2008 Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik

Mehr

Grundlagen der Programmierung 2 (Comp-C)

Grundlagen der Programmierung 2 (Comp-C) Grundlagen der Programmierung 2 (Comp-C) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 25. Mai 2011 Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Compiler: Parser (5C) Prof. Dr Manfred Schmidt-Schauß Sommersemester 2014 Syntaktische Analyse (Parsen) Gegeben: eine kontextfreie Grammatik G und ein String w. Fragen: Vorgehen:

Mehr

Syntaktische Analyse (Parsen) Grundlagen der Programmierung. Syntaktische Analyse eines Programms. Syntaktische Analyse bzgl einer CFG

Syntaktische Analyse (Parsen) Grundlagen der Programmierung. Syntaktische Analyse eines Programms. Syntaktische Analyse bzgl einer CFG Syntaktische Analyse (Parsen) Grundlagen der Programmierung Compiler: Parser (5C) Gegeben: eine kontextfreie Grammatik G und ein String w. Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2015 Fragen: Vorgehen:

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

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

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel

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

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

Formale Sprachen, reguläre und kontextfreie Grammatiken

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

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

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten

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

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

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

Wortproblem für kontextfreie Grammatiken

Wortproblem für kontextfreie Grammatiken Wortproblem für kontextfreie Grammatiken G kontextfreie Grammatik. w Σ w L(G)? Wortproblem ist primitiv rekursiv entscheidbar. (schlechte obere Schranke!) Kellerautomat der L(G) akzeptiert Ist dieser effizient?

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

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

Mehr

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Typdeklarationen. Es gibt in Haskell bereits primitive Typen: Typdeklarationen Es gibt in bereits primitive Typen: Integer: ganze Zahlen, z.b. 1289736781236 Int: ganze Zahlen mit Computerarithmetik, z.b. 123 Double: Fließkommazahlen, z.b. 3.14159 String: Zeichenketten,

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Funktionale Programmierung

Funktionale Programmierung Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein

Mehr

Compiler: Grundlagen

Compiler: Grundlagen Kapitel 7 Compiler: Grundlagen 7.1 Compiler, Übersetzer Eine etwas vereinfachte Definition ist: Ein Übersetzer (Compiler) ist ein Programm, das ein Wort einer formalen Sprache S 1 (den Quelltext) in ein

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

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

Ä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

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

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

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Übungen für Woche 10

Übungen für Woche 10 Übungen für Woche 10 Martin Rubey 12. Januar 2011 Die folgenden Übungen sollen den Umgang mit Backtracking und kombinatorischen Spezies näherbringen. Genaue Hinweise gibt es erst auf Seite 5. Zur Erinnerung:

Mehr

Compiler: Grundlagen

Compiler: Grundlagen Kapitel 5 Compiler: Grundlagen Unterlagen zu Programmierung 2 im Sommersemester 2010 5.1 Compiler, Übersetzer Eine etwas vereinfachte Definition ist: Ein Übersetzer (Compiler) ist ein Programm, das ein

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

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

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))?

Fragen. f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Fragen f [ ] = [ ] f (x : y : ys) = x y : f ys f (x : xs) = f (x : x : xs) Wozu evaluiert f [1, 2, 3] (Abkürzung für f (1 : 2 : 3 : [ ]))? Wozu evaluiert [f [ ], f [ ]]? Weiteres Beispiel: f [ ] y = [

Mehr

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren: 4. AUSSAGENLOGIK: SYNTAX 4.1 Objektsprache und Metasprache 4.2 Gebrauch und Erwähnung 4.3 Metavariablen: Verallgemeinerndes Sprechen über Ausdrücke von AL 4.4 Die Sprache der Aussagenlogik 4.5 Terminologie

Mehr

Theorie der Informatik

Theorie der Informatik Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

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

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

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.

Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr. ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall

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

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Repetitionsaufgaben Wurzelgleichungen

Repetitionsaufgaben Wurzelgleichungen Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen

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

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

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

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

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

Semantik von Formeln und Sequenzen

Semantik von Formeln und Sequenzen Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt

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

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen 1. Formale Sprachen 1.2 Grammatiken formaler Sprachen Die Regeln zur Bildung korrekter Wörter einer Sprache kann man in einer natürlichen Sprache formulieren. Da dies jedoch wieder Mehrdeutigkeiten mit

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

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

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

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN Zinsen haben im täglichen Geschäftsleben große Bedeutung und somit auch die eigentliche Zinsrechnung, z.b: - Wenn Sie Ihre Rechnungen zu spät

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte 50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien

Mehr

Programmieren in Haskell Einführung

Programmieren in Haskell Einführung Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Einführung in die Algebra

Einführung in die Algebra Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 13 Einheiten Definition 13.1. Ein Element u in einem Ring R heißt Einheit, wenn es ein Element v R gibt mit uv = vu = 1. DasElementv

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

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

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

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Alignment-Verfahren zum Vergleich biologischer Sequenzen zum Vergleich biologischer Sequenzen Hans-Joachim Böckenhauer Dennis Komm Volkshochschule Zürich. April Ein biologisches Problem Fragestellung Finde eine Methode zum Vergleich von DNA-Molekülen oder Proteinen

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt? Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt? Behandelte Fragestellungen Was besagt eine Fehlerquote? Welche Bezugsgröße ist geeignet? Welche Fehlerquote ist gerade noch zulässig? Wie stellt

Mehr

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler Formale Sprachen Der Unterschied zwischen Grammatiken und Sprachen Rudolf Freund, Marian Kogler Es gibt reguläre Sprachen, die nicht von einer nichtregulären kontextfreien Grammatik erzeugt werden können.

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

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

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung 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

Der Zwei-Quadrate-Satz von Fermat

Der Zwei-Quadrate-Satz von Fermat Der Zwei-Quadrate-Satz von Fermat Proseminar: Das BUCH der Beweise Fridtjof Schulte Steinberg Institut für Informatik Humboldt-Universität zu Berlin 29.November 2012 1 / 20 Allgemeines Pierre de Fermat

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

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

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

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

Java Einführung Operatoren Kapitel 2 und 3

Java Einführung Operatoren Kapitel 2 und 3 Java Einführung Operatoren Kapitel 2 und 3 Inhalt dieser Einheit Operatoren (unär, binär, ternär) Rangfolge der Operatoren Zuweisungsoperatoren Vergleichsoperatoren Logische Operatoren 2 Operatoren Abhängig

Mehr

Die Komplexitätsklassen P und NP

Die Komplexitätsklassen P und NP Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

Mehr

Einführung in die Programmierung

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

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls 4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls δ(q, a, Z) + δ(q, ɛ, Z) 1 (q, a, Z) Q Σ. Die von einem DPDA, der mit leerem Keller akzeptiert,

Mehr

Kurzanleitung MAN E-Learning (WBT)

Kurzanleitung MAN E-Learning (WBT) Kurzanleitung MAN E-Learning (WBT) Um Ihr gebuchtes E-Learning zu bearbeiten, starten Sie bitte das MAN Online- Buchungssystem (ICPM / Seminaris) unter dem Link www.man-academy.eu Klicken Sie dann auf

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter. Stundenverwaltung Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter. Dieses Programm zeichnet sich aus durch einfachste

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Elexis-BlueEvidence-Connector

Elexis-BlueEvidence-Connector Elexis-BlueEvidence-Connector Gerry Weirich 26. Oktober 2012 1 Einführung Dieses Plugin dient dazu, den Status Hausarztpatient zwischen der BlueEvidence- Anwendung und Elexis abzugleichen. Das Plugin markiert

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

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 9: Speicher Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/20 Überblick Speicher Bit und Byte Speicher als Tabellen

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

Codes und Informationsgehalt

Codes und Informationsgehalt Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf

Mehr

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r ) Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen

Mehr

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik Wurzeln als Potenzen mit gebrochenen Exponenten Zur Einstimmung Wir haben die Formel benutzt x m n = x m n nach der eine Exponentialzahl potenziert wird, indem man die Exponenten multipliziert. Dann sollte

Mehr