2. Kapitel LEXIKALISCHE ANALYSE. Compilerbau Prof. Dr. Wolfgang Schramm

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "2. Kapitel LEXIKALISCHE ANALYSE. Compilerbau Prof. Dr. Wolfgang Schramm"

Transkript

1 2. Kapitel LEXIKALISCHE ANALYSE Compilerbau Prof. Dr. Wolfgang Schramm

2 Lexikalische Analyse (Scanner) 1/2 1 Aufgabe Erkennen von lexikalischen Elementen. Erstellung einer internen Darstellung für lexikalische Elemente. Einordnung Der Scanner ist i.allg. Unterprogramm des Parsers. Erweiterungen: Kopie des Quellprogramms (evtl.) mit Meldungen erzeugen. ImplemenNerung von Makrotechniken. Fehlerbehandlung (Einfügen, Löschen, Vertauschen von Zeichen). Bsp: - 7.6F+8 è - 7.6E+8

3 Lexikalische Analyse (Scanner) 2/2 2 liefere nächstes lex. Element Quell- Scanner Parser pro- gramm Strukturbaum Eintragen Nächstes lexikalisches Element Symboltabelle Eintragen/ Nachschlagen

4 TheoreNscher Hintergrund der lexikalischen Analyse 1/ Die Struktur lexikalischer Symbole kann durch reguläre Ausdrücke beschrieben werden. Das heißt, die Menge der Zeichenke^en, die auf ein Token abgebildet werden, ist die zum Ausdruck gehörige reguläre Sprache. 2. Reguläre Sprachen werden durch rechtslineare oder durch linkslineare GrammaNken erzeugt. 3. Reguläre Sprachen werden von nichtdeterminisnschen endlichen Automaten (NEA) erkannt. NFA 4. Zu jedem nichtdeterminisnschen endlichen Automaten kann man auch einen determinisnschen endlichen Automaten (DEA) konstruieren, der die gleiche Sprache erkennt. DFA

5 TheoreNscher Hintergrund der lexikalischen Analyse 2/2 4 Kurz gesagt: Man braucht einen Formalismus zur Spezifikation der Token. Reguläre Ausdrücke Man braucht einen Mechanismus zur Erkennung der Token. DFA, Zustandsdiagramme

6 DefiniNonen für Beschreibung formaler Sprachen 1/3 5 Terminalsymbole Die Terminalsymbole (Lexeme, Token) sind Elemente einer Menge T von GrammaNksymbolen. Terminalsymbole sind die kleinsten syntaknschen Grundeinheiten einer formalen Sprache mit selbstständiger Bedeutung. Ein Satz ist die Aneinanderreihung von Terminalsymbolen. Nonterminalsymbole Die Nonterminalsymbole sind Elemente einer Menge N von GrammaNk- symbolen, die zur Darstellung von Zwischenzuständen des Spracher- zeugungsprozesses dienen. ProdukKonen Die ProdukNonen sind Vorschrifen für das Ersetzen einer Symbolke^e α durch eine andere Symbolke^e β (α β ).

7 DefiniNonen für Beschreibung formaler Sprachen 2/3 6 Eine (Chomsky-) Grammatik zur Beschreibung von Syntax ist durch ein 4-Tupel: G = (T, N, P, S) definiert. T: Menge der Terminalsymbole. N: Menge der Nonterminalsymbole. Lies: Element von Epsilon (leeres Wort) P: Menge von Produktionen α β mit α, β (N T) * und N T =, α ε S: Ein ausgezeichnetes Nonterminalsymbol - das Startsymbol mit S N. Kleene Stern

8 DefiniNonen für Beschreibung formaler Sprachen 3/3 7 Die Sprache L(G) einer GrammaKk ist die Menge der Terminalsymbolke^en, die über das Startsymbol S nach den Regeln von P hergeleitet werden kann. * L (G) = { s S s mit s T * }

9 Die Chomsky GrammaNk- Typen 8 Eine GrammaNk G = (T, N, P, S) heißt vom Typ 0 oder unbeschränkt (rekursiv aufzählbar), wenn sie nach den Regeln von P hergeleitet werden kann. vom Typ 1 oder kontextsensikv, wenn in jeder Regel α β die linke Seite nicht länger als die rechte ist: α β ; die Regel A ε mit A N ist zulässig, wenn A auf keiner rechten Seite vorkommt. vom Typ 2 oder kontexwrei, wenn jede Regel die Form A α hat, mit A N und α (N T) *. vom Typ 3 oder regulär, wenn jede Regel eine der Formen A α, A αb oder A Bα hat, mit A, B N und α T *.

10 Die Chomsky Sprachhierarchie 9 o Wenn L i die Menge aller Sprachen ist, die von den GrammaNken des Chomsky- Typs i erzeugt werden kann, dann ist Rekursiv aufzählbare Sprachen Kontextsensitive Sprachen Kontextfreie Sprachen Reguläre Sprachen L 0 L 1 L 2 L 3

11 Alphabet und Sprache in der InformaNk 1/3 10 o Im Sinne der MathemaNk und InformaNk ist eine Sprache eine Menge von Zeichenreihen. Die Sprache wird dabei auf Lexik und Syntax reduziert. Für Lexik wird der Begriff Alphabet verwendet. o Ein Alphabet ist eine nicht leere, endliche Menge A von Zeichen a A. A1 = {A,..., Z} A2= {a} A3 = {A,..., Z, a,..., z, 0,..., 9} A4= {#, 0}

12 Alphabet und Sprache in der InformaNk 2/3 11 o Die Menge aller Zeichenreihen A* über einem Alphabet ist definiert durch: ε A* die leere Zeichenreihe ist eine Zeichenreihe. x A*, a A* x a A* ( ist der Verke^ungsoperator). Andere Zeichenreihen gibt es nicht. Konkatenation ATA, ATTTNBNM A1* a, aa, aaa... A2* Paul, Omega, x12 A3* #, #0#000 A4* o Eine Sprache L (L, wie engl. language) ist eine Teilmenge aller Zeichenreihen über einem Alphabet A: L A* Deutsche Sprache {A,..., Z, a,..., z, ß, 0,..., 9,?,!,...}*

13 Alphabet und Sprache in der InformaNk 3/3 12 Wie werden die Zeichenreihen einer besnmmten Sprache beschrieben? a) Aufzählung aller Zeichenreihen oder Wörter, die zur Sprache gehören (das ist nur bei endlichen Sprachen möglich!). L 1 = {a, aaa, aaaaa} b) MathemaKsche Charakterisierung der zur Sprache gehörenden Wörter als Menge (sog. formale Sprachen). L 2 = {a n n 3} oder L 3 = {a n b n c n n 1} c) GrammaKken: sind eine endliche konstruknve Beschreibung einer im allgemeinen unendlichen Menge. Damit werden Programmiersprachen beschrieben.

14 Kontexzreie GrammaNk 1/2 13 Eine GrammaKk zur Beschreibung von Syntax ist ein 4- Tupel: G = (T, N, P, S) T: Menge von Token, sog. Terminalsymbole (TS). N: Menge von Nonterminalsymbolen (NTS). P: Menge von ProdukKonen (oder ProdukNonsregeln), wobei jede ProdukNon aus einem Nonterminalsymbol (linke Seite der ProdukNon) einem Pfeil ( ) und einer Folge von Terminalsymbolen und/oder Nonterminalsymbolen (rechte Seite der ProdukNon) besteht. S: Ein ausgezeichnetes Nonterminalsymbol - das Startsymbol.

15 Kontexzreie GrammaNk 2/2 14 Die Sprache L(G) einer GrammaKk besteht aus allen aus dem Startsymbol S abgeleiteten Zeichenke^en (Wörtern), die nur Terminalsymbole enthalten. Ein Wort ist eine Folge von Terminalsymbolen, die durch wiederholtes Anwenden von Regeln erzeugt werden kann, wobei das Startsymbol S der Ausgangspunkt der Erzeugung ist. GrammaNken werden in zweierlei Hinsicht genutzt: Um Worte einer Sprache zu erzeugen. Ableiten Um festzustellen, ob ein gegebenes Wort zur Sprache gehört. Analysieren Es gibt verschiedene Formalismen zur Beschreibung von GrammaNken: Reguläre Ausdrücke (einfacher Mechanismus, nicht für alles geeignet) Backus Naur Form (BNF). Erweiterte Bauckus Naur Form (EBNF). Syntaxdiagramme.

16 Reguläre Sprachen - DefiniNon 15 Die regulären Sprachen über dem Alphabet A werden durch folgende Regeln induknv definiert: i. und {ε} sind reguläre Sprachen. ii. Für jedes a A ist {a} eine reguläre Sprache. iii. Seien B und C reguläre Sprachen, dann sind auch B C, BC und B * reguläre Sprachen. iv. Nichts sonst ist eine reguläre Sprache über A. Ein regulärer Ausdruck r beschreibt eine reguläre Sprache L(r).

17 Reguläre Ausdrücke - DefiniNon 16 Reguläre Ausdrücke über dem Alphabet A werden durch folgende Regeln induknv definiert: ι. ist ein regulärer Ausdruck, der die reguläre Sprache beschreibt. ε ist ein regulärer Ausdruck, der die reguläre Sprache { ε } beschreibt ii. iii. iv. Für jedes a A ist a ein regulärer Ausdruck; er beschreibt die Sprache {a}. Wenn a und b reguläre Ausdrücke sind, die die Sprachen A und B beschreiben, so ist auch (a b ) ein regulärer Ausdruck, der A B beschreibt, ab ein regulärer Ausdruck, der AB beschreibt, a * ein regulärer Ausdruck, der A * beschreibt. Nichts sonst ist eine regulärer Ausdruck

18 Reguläre Ausdrücke vereinfachende NotaNonen 1/2 17 Benennung von regulären Ausdrücken Eine reguläre DefiniNon hat die Form Name d 1 r 1 Regulärer Ausdruck über einem Alphabet A Name d 2 r 2 Regulärer Ausdruck über A und d 1 Name d 3 r 3 Regulärer Ausdruck über A und d 1, d 2 etc In r i dürfen nur die Namen d 1, d 2,..., d i- 1 vorkommen.

19 Reguläre Ausdrücke vereinfachende NotaNonen 2/2 18 o Zur Unterscheidung von Namen und Symbolen, werden Namen fe^ geschrieben. Priorität o Die Auswahl ermöglicht die Wahl zwischen 2 AlternaNven: a b oder auch a + b (eher ungewöhnlich). o Die Sequenz (KonkatenaNon) beschreibt das hintereinander Schreiben: ab. o Die IteraKon ermöglicht das Wiederholen von Satzbausteinen: a* (0, 1 oder n- mal) oder a + (1 oder n- mal) aa*. o OpNonale Satzbausteine: a? Abkürzung für a ε (eher ungewöhnlich). o Zusätzlich besteht die Möglichkeit der Klammerung zur Strukturierung. Ansonsten gilt Punkt- vor Strichrechnung. o Zeichenklassen: Sta^ char a b c etc. schreibt man als Abkürzung auch char [a z].

20 Reguläre Ausdrücke - Beispiele 19 o Binärzahlen beginnen mit 1, danach kann eine beliebig lange Folge von 1 und 0 kommen: 1 (1 + 0)* 1, 10, 1010, o Will man auch noch die 0, als einzige mit diesem Symbol startende Zahl: (1 + 0)* 0, 1, 10, 1010, o Bezeichner einer Programmiersprache müssen mit einem Buchstaben beginnen, dürfen nach dem ersten Buchstaben aber auch Ziffern enthalten: (A Z + a z) (A Z +a z )* a, COM, ma07, u2 o Verwendung von Regulären Ausdrücken in der InformaNk: Festlegung von Datenformaten für Programmeingaben. Festlegen von Mustern zum Suchen in Texten.

21 Zustandsdiagramme 20 Zustandsdiagramme (transinon diagrams) sind eine graphische NotaNon für determinisnsche endliche Automaten. beschreiben die AkNon, die der Scanner bei der Anforderung des nächsten Token durch den Parser ausführt. Die Elemente von Zustandsdiagrammen sind Kreise, welche die Zustände bezeichnen. Gerichtete Kanten, welche die Zustände miteinander verbinden. Die von einem Zustand herausführenden Kanten haben eine Markierung (label). Das sind die Zeichen, mit denen man in den nächsten Zustand gelangt. Es gibt einen ausgezeichneten Startzustand und mindestens einen ausgezeichneten Endzustand. Gerichteter, markierter Graph

22 Zustandsdiagramme Beispiel 1 21 a start a 0 1 b b 2

23 Zustandsdiagramme Beispiel 2: relanonale Operatoren 22 start < = return (relop, LE) > 3 return (relop, NE) = other 4 * return (relop, LT) > 5 = other 6 return (relop, EQ) return (assop,...) 7 = 8 other 9 * return (relop, GE) return (relop, GT)

24 Endlicher Automat 23 Eingabe aktueller Zustand Steuerung

25 Erkennung von Token 1/3 24 Der Scanner liest das Quellprogramm zeichenweise ein, um aus den einzelnen Zeichen die Token aufzubauen. Dazu wird das Quellprogramm blockweise (gepufferte E/A) von Datei in den Arbeitsspeicher geladen. Quellprogramm Puffer Scanner arbeitet hier

26 Erkennung von Token 2/3 25 Eingrenzen der Lexeme im Puffer mit Hilfe zweier Zeiger: vorher: i f ( a < b anfang ende nachher: i f ( a < b anfang ende Rück-setzen: i f ( a < b anfang ende Nächstes Token

27 Erkennung von Token 3/3 26 Fortsetzung: i f ( a < b anfang ende Problem: Wenn das Pufferende erreicht ist, ohne dass bis dahin ein Token erkannt wurde. Lösung: 2 Puffer, die abwechselnd gefüllt werden. Die beiden Zeiger laufen über beide Puffer im Kreis.

28 Token, Lexeme und Pa^ern 27 Token interne Darstellung (für Parser) Aufbau ist durch Regeln beschrieben. Pattern Menge von Strings, die durch eine Regel beschrieben werden und mit einem Token verknüpft sind. Lexem konkrete Ausprägung eines Pattern für einen Token. Merke: Verschiedene Strings (Pattern) können auf dasselbe Token abgebildet werden. Bsp.: const pi = ; Token = id Lexem = pi

29 Token, Lexeme und Pa^ern - Beispiele 28 Token Ausprägung (Lexem) Pattern-Beschreibung const final final if if if rel_op <, <=, =,!=, >, >= < oder <= oder = oder!= oder > oder >= id pi, count Buchstabe gefolgt von Buchstaben-Ziffern- Kombination num , 0, 6.0E23 numerische Konstante literal any string Zeichen zwischen und außer

30 Interne Darstellung lexikalischer Elemente 1/3 29 Für jedes Lexem wird ein Paar ( Kategorie, Index) erzeugt. Typische Kategorien: Bezeichner id Zahlen num Zeichenketten string Schlüsselworte key Beispiel: if (max == 4711) name = Madonna ; Operatoren mulop addop relop Trennzeichen delimiter

31 Interne Darstellung lexikalischer Elemente 2/3 30 Der Index kennzeichnet ein lexikalisches Element entweder innerhalb seiner Kategorie oder er ist eine Referenz in die Symboltabelle. Beispiel: (relop, 1) à < (relop, 2) à <= (relop, 3) à == (relop, 4) à!= (relop, 5) à >= (relop, 6) à > Kategorie: Vergleichsoperator à EQUAL - Operation (mulop, 1) à * (mulop, 2) à /

32 31 Interne Darstellung lexikalischer Elemente - Symboltabelle 3/3 Symbol Attribute Index 3 if max name Madonna Beispiel: if (max == 4711) name = Madonna ; Beispiel: (key, 3) (id, 14) (rel_op, 3) (num, 40) (id, 51) (assign_op, 0) (string, 63)

33 ImplemenNerung eines Übergangsdiagramms 1/3 32 Direkte Umsetzung mittels einer Variablen state. Die Zustände werden ab 0 beginnend über alle Zustandsdiagramme durchnummeriert. letter digit start letter 0 1 other 2 < = Idee: Scanner versucht Diagramme in der Reihenfolge andere ihrer Auflistung Diagramme zu durchlaufen. Falls ein Fehler auftritt, erfolgt der Übergang zum Start des nächsten Diagramms. Dabei ist der Zeiger end im Puffer auf start zurückzusetzen.

34 ImplemenNerung eines Übergangsdiagramms 2/3 33 ininalisiere start, state while kein markierter Endzustand erreicht do case state of 0: lies_zeichen (zeichen) if zeichen ist Buchstabe then state := 1 else fehler 1: lies_zeichen (zeichen) if zeichen ist Buchstabe oder Ziffer then state := 1 else state := 2 2: setze ende eine PosiNon zurück // Endzustand erreicht teste in Symboltabelle, ob Schlüsselwort / Bezeichner gefunden, falls noch nicht vorhanden, trage es ein, gib entsprechendes Element zurück; markiere Endzustand.

35 34 end end ImplemenNerung eines Übergangsdiagramms 3/3 3: lies_zeichen (zeichen) if zeichen = < then state := 4 else if zeichen = = then state := 10 // Zustand für =-Operator else... // alle weiteren relationalen Operatoren 4: lies_zeichen (zeichen) if zeichen = = then state := 5 else setze ende eine Position zurück // Endzustand erreicht gib relop als lexikalisches Zeichen mit Ausprägung LT zurück 5: // Endzustand für LE-Operator... etc. Weitere Verbesserung: Zusammenfassung aller Zustandsdiagramme in ein Diagramm mit voneinander verschiedenen Eingängen.

36 NichtdeterminisNsche endliche Automaten 35 o Ein nichtdeterminisnscher endlicher Automat (NEA oder NFA) ist ein o Tupel M = (A, MOVE, S, s 0, F), wobei A ein endliches Alphabet von Eingabezeichen ist, S eine endliche Menge von Zuständen (state) ist, s 0 S der Anfangszustand ist, F S die Menge der Endzustände (final states) ist, und MOVE die ÜbergangsrelaKon, die (Zustands, Symbol)- Paare mit einer Menge von Zuständen verbindet, ist. MOVE : (state, symbol) à {state} bzw. MOVE : S x (A {ε} )à {S}

37 NFA - Beispiel 36 Hinweise: Dasselbe Eingabesymbol kann mehrere Übergänge eines Zustands markieren. Die Übergänge können sowohl mit e als auch mit Eingabesymbolen markiert sein. NFA der die Sprache: (a b)*abb erkennt. a start 0 a b b b

38 NFA - Anmerkungen 37 o o Ein NFA akzepnert einen Eingabestring x, genau dann wenn es einen Pfad vom Startzustand zu einem Endzustand im Zustandsdiagramm gibt, dessen Kantenmarkierungen zusammen gefasst x ergeben. Da die Zustandsübergänge nicht eindeung sind, gibt es immer mehrere mögliche AlternaNven bei der Auswahl eines Übergangs. Wenn man den falschen Übergang auswählt, kann es passieren, dass ein eingeschlagener Pfad in die Irre führt (à MehrdeuNgkeit, d.h. Nichtdeterminismus). Der NFA muss raten, welchen Pfad er einschlagen soll. Hat der NFA falsch geraten, würde ein korrekter Eingabestring nicht akzepnert. Man muss dann sehr viele AlternaNven (à Backtracking) ausprobieren, um zu einer Entscheidung zu kommen.

39 DeterminisNsche endliche Automaten 38 o Ein determinisnscher endlicher Automat (DEA oder DFA) ist ein spezieller Fall eines nichtdeterminisnschen endlichen Automaten, für den gilt: Es gibt keinen Zustand mit einem ε-übergang, d.h. keinen Übergang ohne ein Eingabesymbol zu verarbeiten. Für jeden Zustand s und jedes Eingabesymbol a gibt es höchstens eine Kante von s ausgehend, die mit a markiert ist. Die ÜbergangsfunkKon MOVE verbindet die (Zustands, Symbol)- Paare mit einem Zustand. MOVE : (state, symbol) à state bzw. MOVE : S x A à S.

40 DFA - Beispiel 39 Hinweise: Dasselbe Eingabesymbol kann nur einen Übergang eines Zustands markieren. Die Übergänge können nicht mit e markiert sein. DFA, der die Sprache: (a b)*abb erkennt. b b start 0 a b b a a a

41 RA, NFA und DFA 40 o Warum betrachtet man überhaupt die NFA? o Für die (direkte) ImplemenNerung eines Scanners benöngt man einen DFA und den kann man immer angeben. o o Für Erzeugung (Generierung) man eines Scanners benöngt man reguläre Ausdrücke (RA) als Metasprache. Dann kommen folgende Sätze zur Anwendung: 1. Zu jedem regulären Ausdruck r gibt es einen NFA, der die von r beschriebene reguläre Menge akzepnert. 2. Wird eine Sprache von einem NFA akzepnert, so gibt es einen DFA, der L akzepnert.

42 Generierung eines Scanners mit LEX 41 lex.l Lex- Spezifikation Reguläre Ausdrücke für Sprache L Lex lex.yy.c Scanner in C- Code Scanner C-Compiler yyin Quellprogramm in L yylex Scanner Tokenfolge

43 Lex DeklaraNonsdatei - Struktur 42 Deklarationen - in der Wirtssprache (globale Vereinbarungen) - Ersetzungsdeklarationen - Startzustände (Anfangsbedingungen) - Zeichensatzdeklarationen - Festlegungen für Lex-Tabellen %% Tokendefinitionen - Lex-Regeln und Aktionen (in der Wirtssprache) %% Hilfsprozeduren (zusätzlicher Programmcode in der Wirtssprache)

44 Lex - DeklaraNonsteil 43 Deklarationen sind z.b. Konstanten als Tokendarstellungen %{ #define IDENTIFIER 1000 #define REL_OP 1100 #define LT_OP %} und reguläre Definitionen sign [+-] digit [0-9] letter [A-Za-z] globale Deklarationen C-Makroprozessoranweisungen Lex Deklarationen Basiselemente

45 Lex Regeln und AkNonen 44 Paare (Reguläre Ausdrücke; auszuführende Aktion) <= return (LT_OP); {letter} ({letter} {digit})* return (IDENTIFIER); Regel Aktion Die Zeichenfolge (das Lexem), die zu einem erkannten Token gehört, wird von Lex über 2 Variablen zur Verfügung gestellt: char *yytext; // Zeiger auf des erste Zeichen int yyleng; // Länge des Lexems

46 Lex - Regelbearbeitung 45 o Lex versucht mit seinem Regelsystem im (sequennellen) Eingabestrom (Datei yyin) das nächste Lexem zu finden. o Bei einem Regeldurchlauf können auch mehrere oder gar kein Lexem gefunden werden. o Das Ergebnis kann sein: o Die Regel, die das längst mögliche Lexem beschreibt, wird als erste Wahl ermi^elt und der rechte Teil der Regel (AkNonen in C) wird ausgeführt. o Mehrere Regeln können gleich lange Lexeme erkennen. In diesem Fall wird die zuerst platzierte Regel erste Wahl und ausgeführt. o Mit dem nächsten Eingabezeichen kann das Regelsystem kein Lexem erkennen. Der Text wird dann solange zeichenweise in die Standardausgabe (Datei yyout) kopiert, bis das Regelsystem ein neues Lexem findet.

47 Lex - NotaNon der RA 1/4 46 Zeichen vs. Metazeichen Die Zeichen zur Beschreibung der regulären Ausdrücke nennt man Metazeichen bzw. Metasymbole. Metasymbole:. $ ^ [ ] -? * + ( ) / { } < > \ Alle anderen Zeichen stehen für sich selbst. Will man ein Metasymbol als normales Zeichen benutzen à einschließen in

48 Lex - NotaNon der RA 2/4 47 Metasymbol Bedeutung Beispiel [ ] Zeichenklassen [aby&] - Bereich [A-Z] ^ Komplement [^0-9]? optional [-+]? Alternative a bc + ein- oder mehrmals {digit}+ * 0 oder mehrmals {letter}* () normale Klammerung (a bc)*

49 Lex - NotaNon der RA 3/4 48 Metasymbol Bedeutung Beispiel. alle Zeichen außer newline (\n) ^ $ Ausdruck am Zeilenan- ^hallo \t$ fang oder ende / Vorausschau -/{digit}+ { } Kennzeichen eines {digit} regulären Symbols \ Escape-Zeichen... \ Whitespaces müssen in Anführungszeichen gesetzt werden. Konkatenation: Hintereinanderschreiben Es gibt weitere Bedeutungen der Metasymbole!

50 Lex - NotaNon der RA 4/4 49 Metasymbol Bedeutung Beispiel { } Anzahl der Wieder- [A-Z] {3} holungen eines regulären Ausdrucks A {2, 5} <...> Pattern wird nur im Zustand <...> betrachtet. A {1, } A {0, } <<EOF>> erkennt end of file nur in flex

51 Prioritäten der Metasymbole 50 { } Konkatenation * +? Priorität ( ) / \ Die anderen Metasymbole werden nur alleine verwendet.

52 Einige FunkNonen der Lex- Bibliothek 51 yylex(): Aufruf von Lex. input(): Liefert das nächste Zeichen des Eingabestroms. unput(c): yymore(): Schreibt das Zeichen c in den Eingabestrom zurück (d.h. in den sog. Rückstell-Stack) Dieses Zeichen wird beim nächsten Regeldurchlauf oder input()-aufruf zurück geliefert. Funktion verhindert das Löschen der Variablen yytext bei Regelabschluss. Die Zeichenkette, die durch die nächste Regel erkannt wird, wird an das Ende der aktuellen yytext- Zeichenkette angehängt. yyless(anz): Rückstellen von Zeichen des Eingabestroms. Von den erkannten Zeichen sollen nur die Zeichen 1..anz erhalten bleiben, der Rest wird in den Rückstellstack zurück geschoben.

53 Beispiele für Lex- Regeln 52 identifier integer Pascal-Kommentar Whitespace float [A-Za-z][A-Za-z0-9_]* [-+]?[0-9]+ \{[^\}]*\} [ \t\n] [-+]?[0-9]+(\.[0-9]+)? (E[-+]?[0-9]+)?

54 Lex- Beispielprogramm 1/2 53 %{ /* Zählen: Lexeme, Zeichen und Zeilen */ int anz_zeichen = 0, anz_lexeme = 0, anz_zeilen = 0; %} %% [^ \t\n]+ {/* kein Blank, Tab, nl */ ++anz_lexeme; anz_zeichen += yyleng; }. { /* bel. Zeichen außer nl */ ++anz_zeichen; } \n { /* nl */ ++anz_zeichen; ++anz_zeilen;} %%

55 Lex- Beispielprogramm 2/2 54 main () { yylex(); /* Aufruf von Lex */ /* Lex erkennt o. spezifizierte Token bis eof der Eingabe */ printf ( Anz. Zeichen =\t%d\n Anz. Zeilen =\t%d\n Anz. Lexeme =\t%d\n, anz_zeichen, anz_zeilen, anz_lexeme); }

56 55 Lex - Auswertung der Kontextbeziehungen des Eingabestrings Linker Kontext Eingabestring Rechter Kontext Zugriff auf linken Kontext: Merkvariablen auf der Aktionsseite (im C-Code). Anfangsbedingungen (Startzustände- start states) Zugriff auf rechten Kontext: Lookahead-Metasymbol / (in Lex-Regeln) yyless(anz) Funktionsausfruf (Aktionsseite C-Code) REJECT Makroaufruf (Aktionsseite C-Code)

57 Lex REJECT- Mechanismus 56 REJECT Makroaufruf Weist die Regel und die erkannten Inputzeichen zurück. Danach wird die nächste passende Regel gesucht. Gibt es in mehreren Regeln REJECT- Aufrufe, werden diese jeweils zurückgewiesen und die nächsten passenden Regeln der Reihe nach gesucht. Terminierung: entweder eine Regel ohne REJECT- Aufruf oder konsumieren des ersten Zeichens des Inputs per default- Regel.

58 Lex REJECT Beispiel 57 %% [a-z]* { /* Regel 1 */ printf("regel 1 mit %s\n", yytext); REJECT; } [a-z][a-z] { /* Regel 2 */ printf("regel 2 mit %s\n", yytext); REJECT; } [a-z] { /* Regel 3 */ printf("regel 3 mit %s\n", yytext); REJECT; } %%

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

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

Fachseminar WS 2008/09

Fachseminar WS 2008/09 Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der

Mehr

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

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

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

Vorlesung Theoretische Informatik

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

Mehr

Grammatiken. Einführung

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

Mehr

Theoretische 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

Mathematische Grundlagen der Informatik 2

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

Mehr

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

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

Mehr

7. Formale Sprachen und Grammatiken

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

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

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

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

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

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

4 Lexikalische Analyse und Parsing

4 Lexikalische Analyse und Parsing 4 Lexikalische Analyse und Parsing Lexikalische Analyse und Parsing sind die wichtigsten Bereiche des Compilerbaus. Prinzipien und Techniken des Compilerbaus beschränken sich nicht auf die Erstellung 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

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

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

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

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

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

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

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

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

Grundbegriffe der Informatik

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

Mehr

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

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

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

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

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

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

syntax.tex Eine Übersicht

syntax.tex Eine Übersicht syntax.tex Eine Übersicht Bernd Worsch 7. Juli 1997 Inhaltsverzeichnis 1 Einleitung 1 2 Bevor es funktioniert... 1 3 Grundelemente von syntax.tex 1 4 Strukturelemente von syntax.tex 3 5 Setzen von Syntaxdiagrammen

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

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

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

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

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

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

OP-LOG www.op-log.de

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

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

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

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

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

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

Mehr

ecaros2 - Accountmanager

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

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

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

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

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

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger Den Speicherplatz wechseln oder eine Sicherungskopie erstellen. Es lässt sich nicht verhindern. Manche Sachen liegen am falschen Platz, können gelöscht werden oder man will vor der Bearbeitung eine Sicherungskopie

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

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Sprachen/Grammatiken eine Wiederholung

Sprachen/Grammatiken eine Wiederholung Sprachen/Grammatiken eine Wiederholung Was sind reguläre Sprachen? Eigenschaften regulärer Sprachen Sprachen Begriffe Symbol: unzerlegbare Grundzeichen Alphabet: endliche Menge von Symbolen Zeichenreihe:

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

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Hinweise zum Übungsblatt Formatierung von Text:

Hinweise zum Übungsblatt Formatierung von Text: Hinweise zum Übungsblatt Formatierung von Text: Zu den Aufgaben 1 und 2: Als erstes markieren wir den Text den wir verändern wollen. Dazu benutzen wir die linke Maustaste. Wir positionieren den Mauszeiger

Mehr

ARBEITSBLATT ZU FORMALEN SPRACHEN

ARBEITSBLATT ZU FORMALEN SPRACHEN ARBEITSBLATT ZU FORMALEN SPRACHEN Aufgabe 1: Gegeben ist die folgende Formale Sprache L(G) mit G = (T, N, P, S). Die Produktionen lauten ZUWEISUNG ::= name zuweisungsoperator AUSDRUCK semikolon AUSDRUCK

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

SWE1 / Übung 2 (19.10.2011)

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

Mehr

Einführung in die Informatik Grammars & Parsers

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

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

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

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

MS Excel 2010 Kompakt

MS Excel 2010 Kompakt MS Excel 00 Kompakt FILTERN Aus einem großen Datenbestand sollen nur jene Datensätze (Zeilen) angezeigt werden, die einem bestimmten Eintrag eines Feldes (Spalte) entsprechen. Excel unterstützt Filterungen

Mehr

Dokumentation zum Spielserver der Software Challenge

Dokumentation zum Spielserver der Software Challenge Dokumentation zum Spielserver der Software Challenge 10.08.2011 Inhaltsverzeichnis: Programmoberfläche... 2 Ein neues Spiel erstellen... 2 Spielfeldoberfläche... 4 Spielwiederholung laden... 5 Testdurchläufe...

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

FORUM HANDREICHUNG (STAND: AUGUST 2013)

FORUM HANDREICHUNG (STAND: AUGUST 2013) FORUM HANDREICHUNG (STAND: AUGUST 2013) Seite 2, Forum Inhalt Ein Forum anlegen... 3 Forumstypen... 4 Beiträge im Forum schreiben... 5 Beiträge im Forum beantworten... 6 Besondere Rechte der Leitung...

Mehr

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt AMPEL-Steuerung(en) Die Beschreibung und Programmierung der Ampel (vor allem Ampel_5) können sehr kompliziert

Mehr

Der große VideoClip- Wettbewerb von Media Markt.

Der große VideoClip- Wettbewerb von Media Markt. Der große VideoClip- Wettbewerb von Media Markt. Zeig was du drauf hast! Am 1. Juli startet eine Aktion, wie sie die Schweiz noch nicht gesehen hat. Unter dem Motto Zeig was Du drauf hast! suchen wir den

Mehr

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

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

Mehr

Übungen zu C++ Kapitel 1

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

Mehr

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

Informatik IC2. Balazs Simon 2005.03.26.

Informatik IC2. Balazs Simon 2005.03.26. Informatik IC2 Balazs Simon 2005.03.26. Inhaltsverzeichnis 1 Reguläre Sprachen 3 1.1 Reguläre Sprachen und endliche Automaten...................... 3 1.2 Determinisieren.....................................

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

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

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005

trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005 trivum Multiroom System Konfigurations- Anleitung Erstellen eines RS232 Protokolls am Bespiel eines Marantz SR7005 2 Inhalt 1. Anleitung zum Einbinden eines über RS232 zu steuernden Devices...3 1.2 Konfiguration

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

Summenbildung in Bauteiltabellen mit If Then Abfrage

Summenbildung in Bauteiltabellen mit If Then Abfrage Summenbildung in Bauteiltabellen mit If Then Abfrage Die in Bauteiltabellen ausgelesenen Werte lassen sich in jeder Spalte als Summe berechnen. So können selbstverständlich die Flächen der in der Tabelle

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

Schumacher, Chris Druckdatum 01.06.2012 11:11:00

Schumacher, Chris Druckdatum 01.06.2012 11:11:00 Dokumentenverwaltung Autor Schumacher, Chris Druckdatum 01.06.2012 11:11:00 SMS Login Aktivierung Sie müssen beim ersten Login zwingend einen PIN und eine Secret Answer setzen. Den PIN benötigen Sie bei

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

4. Die lexikalische Analyse

4. Die lexikalische Analyse zerlegt Folge von Zeichen in Eingabedatei in Folge von Symbolen (Token) Scanner-Sieber-Modul Token: Typ und Inhalt übliche Token-Typen: reservierte Wörter (if, while, for, ) Bezeichner (x, dauer, name,..)

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

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

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

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr