Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc

Größe: px
Ab Seite anzeigen:

Download "Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc"

Transkript

1 Fachhochschule Köln Cologne University of Applied Sciences Seminar Informatik: Syntaxanalyse von DKFG mittels Yacc Jan Bollenbacher Studiengang: Master Technische Informatik Prof. Dr. Hans W. Nissen

2 Inhaltsverzeichnis Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung 4 2 Syntaxanalyse Parser Kontextfreie Grammatiken Top-Down-Syntaxanalyse Syntaxanalyse durch rekursiven Abstieg Prädiktive Parser Nicht-rekursive prädiktive Parser FIRST und FOLLOW Konstruktion prädikativer Parse-Tabellen LL(1)-Grammatiken Bottom-Up-Syntaxanalyse LR-Parser LR-Syntaxanalysealgorithmus LR-Grammatiken LALR-Syntaxanalysetabellen Parser-Generator Yacc 17 4 Fazit 20 Literatur 21 2

3 Abbildungsverzeichnis Tabellenverzeichnis Abbildungsverzeichnis 1 Schnittstelle Parser/Scanner Parse-Baum für Recursive-Descent-Parser Modell eines nicht-rekursiven prädiktiven Parsers Modell eines LR-Parsers Tabellenverzeichnis 1 Parse-Tabelle für eine mehrdeutige Grammatik Anwendung der Shift-Reduce-Syntaxanalyse Produktionen der Grammatik für arithmetische Ausdrücke Syntaxanalysetabelle der Grammatik für arithmetische Ausdrücke Aktionen eines LR-Parsers

4 2 SYNTAXANALYSE 1 Einleitung Wie funktioniert der Parser-Generator Yacc (Yet Another Compiler Compiler)? Das ist die grundlegende Frage die in diesem Seminar beantwortet werden soll. Dazu wird zuerst die Theorie zur Syntaxanalyse betrachtet. Es wird eine Einführung in die Syntaxanalyse von LL- bzw. LR-Grammatiken gegeben. Im Anschluss wird ein Yacc-Beispielprogramm betrachtet. Das Ziel dieser Arbeit ist, die Brücke zu schlagen von der Theorie eines LALR-Parsers zu Yacc. Dieses Seminar ist keine Beschreibung von Yacc im Allgemeinen. Die Syntax von vielen Programmiersprachen kann durch deterministische kontextfreie Grammatiken(DKFG) beschrieben werden. In der Chomsky Hierarchie benden sich die DKFG genau zwischen den regulären Sprachen und den kontextfreien Grammatiken. Wenn ein Compiler eingesetzt werden soll, ist es generell erforderlich, dass die Syntax der Sprache einer DKFG entspricht. [HU69, S. 233] 2 Syntaxanalyse 2.1 Parser Abbildung 1: Schnittstelle Parser/Scanner [Job91] In unserem Modell (Abbildung 1) liefert der Scanner dem Parser eine Folge von Symbolen (Token). Der Parser prüft dann, ob diese Symbolfolge von der Grammatik der Quellsprache erzeugt werden kann [ASU88a]. Der Scanner durchsucht also ein Eingabedokument und liefert dem Parser Token. Diese Token werden im Scanner mittels regulärer Ausdrücke deniert. Laut [ASU88a] lassen sich Parser für Grammatiken in drei Kategorien einteilen: Universelle Parse-Methoden wie z.b. die Algorithmen von Cocke-Younger-Kasami und Early, die für alle Grammatiken funktionieren, 4

5 2.2 Kontextfreie Grammatiken 2 SYNTAXANALYSE Top-Down-Parser und Bottom-Up-Parser. Auf die universellen Parse-Methoden wird im Rahmen dieser Arbeit nicht weiter eingegangen. Die Top-Down- bzw. Bottom-Up-Parser werden überwiegend in Compilern verwendet. Dabei beginnt der Top-Down-Parser, wie der Name schon sagt, die Konstruktion des Parse-Baums mit der Wurzel (Top) und setzt seine Arbeit in Richtung der Blätter (Bottom) fort. Ein Bottom-Up-Parser arbeitet sich von den Blättern zur Wurzel hoch. Beide Parser-Typen lesen die Symbole der Eingabe sukzessive von links nach rechts. [ASU88a] Die ezienten Top-Down- und Bottom-Up-Methoden sind auf Teilklassen von Grammatiken beschränkt. Einige dieser Teilklassen, z.b. LL- und LR-Grammatiken, sind jedoch mächtig genug, um die meisten syntaktischen Konstrukte in Programmiersprachen beschreiben zu können.[asu88a] 2.2 Kontextfreie Grammatiken In Programmiersprachen gibt es oft Konstrukte mit einer inhärent rekursiven Struktur. Diese lässt sich mit Hilfe kontextfreier Grammatiken denieren. [ASU88a] Beispiel 1: Wenn S1 und S2 Anweisungen sind und E ein Ausdruck ist, dann ist if E then S1 else S2 eine Anweisung. Diese Art einer bedingten Anweisung lässt sich nicht durch reguläre Ausdrücke denieren. Reguläre Ausdrücke eignen sich dazu, die lexikalische Struktur von Symbolen zu beschreiben. Beispiel 1 lässt sich in folgende Grammatik überführen. Dabei bezeichnet die syntaktische Variable stmt die Klasse der Anweisungen und expr die Klasse der Ausdrücke.[ASU88a] Beispiel 2 (Kontextfreie Sprache): stmt ::== if expr then stmt else stmt Eine kontextfreie Grammatik ist ein Quadrupel G=(N,, P, S)[Zim89]. Dieses Quadrupel besteht aus Nichtterminalen, Terminalen, Produktionen und einem Startsymbol. [ASU88a] 1. N - Nichtterminale sind syntaktische Variablen, die Mengen von Strings bezeichnen. [ASU88a] In Beispiel 2 sind stmt und expr Nichtterminale. Nichtterminale 5

6 2.3 Top-Down-Syntaxanalyse 2 SYNTAXANALYSE stehen für String-Mengen und vereinfachen die Denition der von der Grammatik erstellten Sprache. Die Nichtterminale sorgen für eine hierarchische Struktur, die für Syntaxanalyse und Übersetzung hilfreich ist.[asu88a] 2. - Terminale sind die Grundsymbole, aus denen Strings bestehen. [ASU88a] In dieser Arbeit wird für Terminal das Synonym Token benutzt. In Beispiel 2 sind die Schlüsselwörter if, then und else die Token. 3. P - Produktionen einer Grammatik geben an, wie Terminale und Nichtterminale zur Bildung von Strings miteinander kombiniert werden dürfen. [ASU88a] In Beispiel 2 ist eine Produktionsregel dargestellt. 4. S - Ein Nichtterminal einer Grammatik ist als Startsymbol deniert. Die vom Startsymbol bezeichnete String-Menge ist die von der Grammatik denierte Sprache. [ASU88a] 2.3 Top-Down-Syntaxanalyse In diesem Abschnitt werden die grundlegenden Ideen der Top-Down-Syntaxanalyse vorgestellt. Die Klasse der LL(1)-Grammatiken wird deniert. Des Weiteren wird auf nichtrekursive Implementierungen prädiktiver Parser eingegangen Syntaxanalyse durch rekursiven Abstieg Bei der Top-Down-Analyse kann man sich vorstellen, dass versucht wird eine Links- Herleitung (ersetze stehts das linkeste Nichtterminal) für einen Eingabestring zu nden. [ASU88a] Darin kann auch der Versuch gesehen werden, für die Eingabe einen Parse-Baum zu erstellen, wobei die Knoten beginnend mit der Wurzel in Vorordnung erzeugt werden. Die prädikative Syntaxanalyse, die kein Rücksetzen erfordert, ist eine spezielle Form der Syntaxanalyse durch rekursiven Abstieg.[ASU88a] An dieser Stelle wird auf eine allgemeine Form der Top-Down-Analyse eingegangen, die häug Recursive- Descent-Analyse genannt wird. Dabei ist im allgemeinen Rücksetzen, d.h. wiederholtes Lesen der gleichen Eingabe notwendig.[asu88a] Rücksetzende Parser sind jedoch relativ selten.[asu88a] Bei der Syntaxanalyse von programmiersprachlichen Konstrukten ist Rücksetzen praktisch nie notwendig.[asu88a] 6

7 2.3 Top-Down-Syntaxanalyse 2 SYNTAXANALYSE Beispiel 3 (Rücksetzen ist notwendig): Gegeben ist die folgende Grammatik: S ::== c A d A ::== ab a und der Eingabestring w = cad. Um für diese Eingabe einen Parse-Baum von oben nach unten zu erstellen, wird zunächst ein Baum der nur aus dem mit S markierten Knoten besteht erstellt. Der Eingabezeiger zeigt auf c, das erste Symbol von w. Anschlieÿend wird die erste Produktion für S angewandt und es ergibt sich der Parse-Baum in (2a). Das am weitesten Links stehende Blatt ist mit c markiert und stimmt mit dem ersten Symbol von w überein. Der Eingabezeiger wird zu dem zweiten Symbol, a vorgerückt. Es wird nun das nächste Blatt betrachtet. Die Marke A kann mit der ersten Alternative von A expandiert werden, es entsteht der Baum von Abbildung (2b). Damit kann das Zeichen a verarbeitet werden. Der Eingabezeiger zeigt nun auf das Symbol d. Das Symbol d und das Blatt b führt zu einem Widerspruch. Es muss also zu dem Blatt A zurück gekehrt werden um eine Alternative für A zu nden, die noch nicht ausprobiert wurde. Ein Rücksprung auf A erfordert auch, dass der Eingabezeiger auf die zweite Position zurück gestellt wird. Eine Prozedur muss sich also die Position bei dem ersten Aufruf von einem Unterblatt in einer lokalen Variable merken. Die zweite Alternative wird nun ausprobiert und führt zu dem Parse-Baum in Abbildung (2c). Wie man erkennen kann, stimmen die Nichtterminale mit dem Eingabewort überein. Die Prozedur stoppt und meldet den erfolgreichen Abschluss der Analyse.[ASU88a] Bei links-rekursiven Grammatiken kann es passieren, dass Recursive-Descent-Parser, auch wenn sie mit Backtracking arbeiten, in Endlosschleifen geraten. Es kann also vorkommen, dass immer wieder versucht wird, A zu expandieren, ohne dass irgendein Eingabesymbol konsumiert wurde.[asu88a] (a) S (b) S (c) S c A d c A d c A d a b a Abbildung 2: Parse-Baum für Recursive-Descent-Parser 7

8 2.3 Top-Down-Syntaxanalyse 2 SYNTAXANALYSE Prädiktive Parser Durch sorgfältigen Entwurf, Links-Faktorisierung und Elimination von Links-Rekursionen erhält man in vielen Fällen eine Grammatik, die sich für prädiktive Parser eignet, die ohne Backtracking auskommen.[asu88a] Allerdings sind prädiktive Parser nur möglich, wenn für ein Eingabesymbol a und ein Nichtterminal A zu jeder Zeit feststeht, welche Produktionsalternative von A als einzige den mit a beginnenden String herleiten kann. D.h. man kann die richtige Alternative allein durch das Aussehen des ersten Tokens bestimmen. Beispiel 4 (Kontrolluÿkonstrukte in Programmiersprachen [ASU88a]): stmt ::== if expr then stmt else stmt while expr do stmt begin stmt_list end In dem Beispiel 4 lässt sich erkennen, dass man an Hand der Schlüsselwörter if, while und begin festlegen kann welche Alternative zur erfolgreichen Herleitung einer Anweisung führen kann.[asu88a] Nicht-rekursive prädiktive Parser Rekursive Funktionen benötigen viel Speicher und sind u.u. sehr langsam. Es ist möglich, prädiktive Parser nicht-rekursiv zu implementieren.[asu88a] Der Stapel wird dabei vom Programm selber verwaltet, anstatt die implizite Stapelverwaltung im Zuge rekursiver Aufrufe zu benutzen. Der nicht-rekursive Parser inspiziert dabei das Eingabewort und generiert mit Hilfe einer Parse-Tabelle eine Produktion für ein gegebenes Nichtterminal. Abbildung 3 zeigt das Modell eines nicht-rekursiven prädiktiven Parsers. [ASU88a] Abbildung 3: Modell eines nicht-rekursiven prädiktiven Parsers.[ASU88a] 8

9 2.3 Top-Down-Syntaxanalyse 2 SYNTAXANALYSE Ein tabellengesteuerter prädiktiver Parser besteht aus einem Eingabepuer, einem Stapel, einer Parse-Tabelle und einem Ausgabestrom. [ASU88a] Der Eingabepuer enthält den zu untersuchenden String ($ als Endsymbol). Der Stapel enthält eine Folge von Grammatiksymbolen ($ als unterstes Element). Zu Beginn enthält der Stack das Bodensymbol $ und das Startsymbol der Grammatik. Die Parse-Tabelle ist ein zweidimensionaler Array M[A,a], wobei A ein Nichtterminal und a ein Terminal (oder $) ist.[asu88a] Das Programm verhält sich folgendermaÿen: Das oberste Stapelsymbol X und a, das aktuelle Eingabesymbol werden betrachtet. Es gibt drei Möglichkeiten, wie das System reagiert: 1. Wenn X = a = $ ist, stoppt der Parser und meldet den erfolgreichen Abschluss der Syntaxanalyse. 2. Wenn X = a $ ist (X ist also ein Terminal), wird das oberste Element vom Stapel entfernt und der Eingabezeiger auf das nächste Eingabesymbol gesetzt. 3. Wenn X ein Nichtterminal ist, wird aus der Parse-Tabelle M der Eintrag M [X,a] betrachtet. Dabei gibt es zwei Möglichkeiten: 1. der Eintrag ist ein Fehleintrag der Parser ruft eine Routine zur Fehlerbehandlung auf, 2. der Eintrag ist eine X-Produktion der Grammatik. Wenn etwa M [X,a] = {X UVW} ist, wird das oberste Stapelelement X durch WVU (wobei U oben liegt) ersetzt. [ASU88a] FIRST und FOLLOW Die Funktionen FIRST und FOLLOW können deniert werden, um leicht Parse-Tabellen für eine Grammatik zu erstellen. Dabei ist FIRST(α) als die Menge aller Terminale deniert, mit denen ein aus α hergeleiteter String beginnen kann. Für ein Nichtterminal A wird FOLLOW(A) als Menge aller Terminale a deniert, die in einer Satzform direkt rechts neben A stehen können.[asu88a] FOLLOW(A) ist also die Menge aller Terminale a, für die es eine Herleitung der Form S αaaβ mit beliebigen α, β gibt. Wenn A das am weitesten rechts stehende Symbol ist, dann gehört auch $ zu FOLLOW(A).[ASU88a] Auf die Regeln zur Berechnung der Mengen FIRST und FOLLOW wird an dieser Stelle verzichtet und stattdessen auf [ASU88a, Seite 230] verwiesen. 9

10 2.3 Top-Down-Syntaxanalyse 2 SYNTAXANALYSE Konstruktion prädikativer Parse-Tabellen Hat man die Mengen FIRST und FOLLOW berechnet, so ist es ein Leichtes eine prädikative Parse-Tabelle zu erstellen. Die Idee ist dabei folgende: wenn A a gilt und a ist in FIRST(α), dann expandiert der Parser A zu α, wenn a aktuelles Eingabesymbol ist. Ein Sonderfall ist α=ɛ. In diesem Fall muss A erneut zu α expandiert werden, wenn das aktuelle Eingabesymbol in FOLLOW(A) ist oder in der Eingabe die Endmarkierung $ erreicht wurde und $ in FOLLOW(A) enthalten ist. Der genaue Algorithmus ist in [ASU88a, Seite 232] beschrieben LL(1)-Grammatiken Aus den oben genannten Algorithmen lassen sich für jede Grammatik G eine Parse- Tabelle M erstellen. Es kann allerdings bei machen Grammatiken vorkommen, dass M in einer Zelle mehrere gleiche Einträge hat. Das tritt auf, wenn G links-rekursiv oder mehrdeutig ist. Eine Zelle besitzt dann mehrere Einträge.[ASU88a] Beispiel 5 (Mehrdeutige Grammatik): S ::== ietss' a S' E ::== es ɛ ::== b Die Parse-Tabelle dieser Grammatik zeigt Tabelle 1.[ASU88a] Nichtterminal Eingabesymbol a b e i t $ S S a S ietss' S' S' ɛ S' ɛ S' es E E b Tabelle 1: Parse-Tabelle M für die Grammatik aus Beispiel 5[ASU88a]. Alle leeren Felder in der Tabelle können als Error-Zustände betrachtet werden. An der Stelle M [S',e] benden sich zwei Einträge: S' ɛ und S' es. Die Grammatik ist also mehrdeutig. Bei einem Eingabesymbol e (else) ist die auszuwählende Produktion unbestimmt. Es wird eine Entscheidung zugunsten S' es getroen. Damit wird die 10

11 2.4 Bottom-Up-Syntaxanalyse 2 SYNTAXANALYSE Mehrdeutigkeit aufgelöst. Diese Wahl entspricht der Strategie, ein else dem vorhergehenden then zuzuordnen. [ASU88a] Besitzt die Parse-Tabelle einer Grammatik keine Mehrfach-Einträge, so heiÿt sie LL(1). Das erste L in LL(1) bedeutet, dass die Eingabe von links nach rechts gelesen wird; das zweite L, dass eine Links-Herleitung erzeugt wird; die 1 gibt an, dass in jedem Schritt des Parse-Prozesses ein Symbol voraus geschaut wird (Lookahead). [ASU88a] LL(1)-Grammatiken besitzen eine Reihe charakteristischer Eigenschaften. Eine mehrdeutige oder links-rekursive Grammatik kann nie LL(1) sein. Folgende Regeln müssen gelten damit eine Grammatik G LL(1) ist. Dabei gilt für je zwei Produktionen A α β von G [ASU88a]: 1. Aus α und β sind keine Strings herleitbar, die beide mit dem gleichen Nichtterminal beginnen. 2. Der leere String kann nicht sowohl aus α als auch aus β hergeleitet werden. 3. Wenn β ɛ gilt, dann beginnt kein aus α herleitbarer String mit einem Terminal aus FOLLOW(A). Es kann passieren, dass sich aus einer Grammatik G keine LL(1)-Grammatik machen lässt (siehe Beispiel 5). Die Grammatik lässt sich dennoch mit einem prädikativen Parser verarbeiten, wenn man festlegt, dass M [S',e] ={S' es} ist.[asu88a] 2.4 Bottom-Up-Syntaxanalyse In diesem Abschnitt wird die Shift-Reduce-Syntaxanalyse beschrieben. Bei der Shift- Reduce-Syntaxanalyse wird versucht ein Parse-Baum zu konstruieren, wobei man von den Blättern (bottom) beginnt und sich zur Wurzel (top) hocharbeitet. Dabei wird ein String von links nach rechts abgearbeitet und jedes bekannte Symbol auf seine Produktion reduziert, bis nur noch das Startsymbol einer Grammatik vorhanden ist.[asu88a] Beispiel 6 (Shift-Reduce-Syntaxanalyse [ASU88a]): S ::== aabe A B ::== Abc b ::== d Der Satz abbcde wird jetzt auf S reduziert. 11

12 2.5 LR-Parser 2 SYNTAXANALYSE abbcde aabcde aabcde aade Der Parser beginnt links und geht den Eingabestring bis zum ersten Vorkommen von b durch. Dieses b wird jetzt durch A ersetzt. Danach geht der Parser den String erneut durch. Er ndet die Stelle Abc die der Produktion A entspricht und ersetzt sie mit der Produktion A. aade aabe Der Parser ndet das Terminal d und ersetzt es durch B. aabe S Der Parser kann nun auf das Startsymbol S reduzieren. Tabelle 2: Anwendung der Shift-Reduce-Syntaxanalyse Es ist also durch eine Folge von vier Reduktionen möglich, abbcde auf S zu reduzieren. Tatsächlich geben diese Reduktionen in umgekehrter Reihenfolge die Rechtsableitung wieder[asu88a]: S rm aabe rm aade rm aabcde rm abbcde 2.5 LR-Parser In diesem Abschnitt soll auf eine eziente Bottom-Up-Syntaxanalysetechnik eingegangen werden, die benutzt werden kann um eine groÿe Klasse kontextfreier Grammatiken syntaktisch zu analysieren. Diese Technik wird LR(k)-Syntaxanalyse genannt; das L steht für eine Bearbeitung von links nach rechts; das R steht für die Bildung einer Rechtsableitung in umgekehrter Reihenfolge, und das k steht für den Lookahead. Wird (k) weggelassen, so kann man k =1 annehmen. Die LR-Syntaxanalyse ist aus einer Vielzahl von Gründen attraktiv[asu88a]: LR-Parser können praktisch alle Programmiersprachenkonstrukte erkennen, für die kontextfreie Grammatiken geschrieben werden können. Die LR-Syntaxanalysemethode ist die allgemeinste Shift-Reduce-Syntaxanalysemethode ohne Backtracking. Sie kann einfacher implementiert werden als andere Shift-Reduce- Methoden. Die Klasse der Grammatiken, die von der LR-Methode analysiert werden können, ist eine echte Obermenge der Klasse der Grammatiken, die mit prädiktiven Parsern analysiert werden können. Syntaxfehler können so früh wie möglich entdeckt werden, indem die Eingabe von links nach rechts abgearbeitet wird. 12

13 2.5 LR-Parser 2 SYNTAXANALYSE Der Nachteil dieser Methode ist, dass es ein zu groÿer Aufwand ist, einen LR-Parser für eine Grammatik einer typischen Programmiersprache von Hand zu konstruieren[asu88a]. Dazu wird ein spezielles Werkzeug, ein LR-Parser-Generator, benötigt. Ein Beispiel für so einen Parser-Generator ist Yacc. Der Aufbau und Gebrauch von Yacc wird in Kapitel 3 genau beschrieben.[asu88a] Grundsätzlich gibt es drei Techniken zur Konstruktion einer LR-Syntaxanalysetabelle für eine Grammatik[ASU88a]: 1. einfacher LR (kurz SLR) Ist am einfachsten zu implementieren, aber der schwächste der drei. Für bestimmte Grammatiken kann es fehlschlagen eine Syntaxanalysetabelle zu erstellen. 2. kanonische LR ist die stärkste, aber auch die teuerste Methode. 3. vorausschauende LR (kurz LALR) sie liegen in der Mächtigkeit und in den Kosten genau zwischen den beiden anderen. Die LALR-Methode arbeitet auf den meisten Grammatiken für Programmiersprachen und kann ezient implementiert werden. Yacc ist ein LALR-Parser-Generator. Tabelle 4 stellt eine solche LALR-Syntaxtabelle dar LR-Syntaxanalysealgorithmus Das Schema eines LR-Parsers ist in Abbildung 4 dargestellt. Der Parser besteht aus einer Eingabe, einer Ausgabe, einem Stack, einem Treiberprogramm und einer Syntaxtabelle. Die Syntaxtabelle besteht aus zwei Teilen: Aktion und Sprung. Das Treiberprogramm ist für alle o.g. Parser das gleiche; nur die Syntaxtabelle ändert sich von Parser zu Parser. Das Syntaxanalyseprogramm liest zeichenweise aus einem Eingabepuer. Das Programm benutzt einen Stack, um einen String in der Form s 0 X 1 s 1 X 2 s 2... X m s m zu speichern, wobei s m als oberstes Element steht. X i ist ein Grammatiksymbol und s i ist ein Symbol, das einen Zustand repräsentiert. Jedes Zustandssymbol fasst die Information zusammen, die im Stack unter ihm enthalten ist. Die Kombination aus Zustandssymbol an der Spitze des Stacks und des aktuellen Eingabesymbols wird benutzt, um die Syntaxanalysetabelle zu indizieren und Entscheidungen bei der Shift-Reduce-Syntaxanalyse zu bestimmen.[asu88a] Das Treiberprogramm des LR-Parsers verhält sich wie folgt: Es bestimmt den momentan an der Spitze des Stacks stehenden Zustand s m und das aktuelle Eingabesymbol a j. Dann 13

14 2.5 LR-Parser 2 SYNTAXANALYSE wird die Aktionstabelle konsultiert. Der Eintrag Aktion[s m, a j ], kann einen der folgenden Werte enthalten: 1. schiebe s, wobei s ein Zustand ist, 2. reduziere mit einer Grammatikproduktion A β, 3. akzeptiere und 4. Fehler Abbildung 4: Modell eines LR-Parsers.[ASU88a] Die Funktion Sprung enthält einen Zustand und ein Grammatiksymbol als Argumente und erzeugt einen Zustand. Die Sprungfunktion einer Syntaxanalysetabelle ist die Übergangsfunktion eines DEA (deterministischer endlicher Automat), der die gültigen Vorsilben von G erkennt. Die gültigen Vorsilben von G sind Vorsilben rechtsabgeleiteter Satzformen, die auf dem Stack eines Shift-Reduce-Parsers auftauchen. Der Anfangszustand dieses DEA ist der Zustand, der anfangs als oberstes Element auf dem Stack abgelegt wurde. [ASU88a] Am einfachsten macht man sich die Funktion eines LR-Parsers anhand eines Beispiels klar. Beispiel 7 (LR-Syntaxanalyseprogramm [ASU88a]): 14

15 2.5 LR-Parser 2 SYNTAXANALYSE (1) E E + T (2) E T (3) T T * F (4) T F (5) F (E) (6) F id Tabelle 3: Produktionen der Grammatik für arithmetische Ausdrücke Die Codierung der Aktionen lautet: 1. si bedeutet schieben und den Zustand i auf den Stack legen, 2. rj bedeutet mit der Produktion Nummer j reduzieren, 3. acc bedeutet akzeptieren, 4. Leereintrag bedeutet Fehler. Zustand Aktion Sprung id + * ( ) $ E T F 0 s5 s s6 acc 2 r2 s7 r2 r2 3 r4 r4 r4 r4 4 s5 s r6 r6 r6 r6 6 s5 s s5 s s6 s11 9 r1 s7 r1 r1 10 r3 r3 r3 r3 11 r5 r5 r5 r5 Tabelle 4: Syntaxanalysetabelle der Grammatik für arithmetische Ausdrücke Für die Eingabe id * id + id ist die Reihenfolge des Stackinhalts und der Eingabe in Tabelle 5 gezeigt. Das Syntaxanalyseprogramm verhält sich wie folgt: (1) Zuerst liegt der Zustand 0 auf dem Stack. Der Parser erhält die Eingabe id. Die Aktion[0,id] ist s5. s steht für shift bzw. schiebe. Bei einer Schiebeaktion wird immer das Eingabewort und der neue Zustand auf den Stack geschoben. Es wird also das Eingabewort und der neue Zustand 5 auf den Stack geschoben. 15

16 2.5 LR-Parser 2 SYNTAXANALYSE (2) Der Zustand 5 liegt jetzt an erster Stelle auf dem Stack, das Eingabewort ist *. Die Aktion[5,*] ist r6. r steht für reduce bzw. reduziere. Bei einer Reduzieraktion wird ein Terminal anhand einer Regel mit einem Nichtterminal ersetzt. Danach wird ein Sprung anhand des Nichtterminals durchgeführt. Das bedeutet also für die Aktion r6 eine Reduktion mit der Regel (6). Es wird also F id reduziert. Dazu werden zwei Symbole vom Stack heruntergeholt. Dadurch wird Zustand 0 wieder freigelegt. Der Sprung in Zustand 0 ist für das Nichtterminal F gleich 3. F und 3 werden also wieder auf den Stack gelegt. Es ergibt sich die Konguration in Zeile (3). Alle anderen Aktionen werden ähnlich bestimmt. Stack Eingabe Aktion (1) 0 id * id + id$ schiebe (2) 0 id 5 * id + id$ reduziere durch F id (3) 0 F 3 * id + id$ reduziere durch T F (4) 0 T 2 * id + id$ schiebe (5) 0 T 2 * 7 id + id$ schiebe (6) 0 T 2 * 7 id 5 + id$ reduziere durch F id (7) 0 T 2 * 7 F 10 + id$ reduziere durch T T * F (8) 0 T 2 + id$ reduziere durch E T (9) 0 E 1 + id$ schiebe (10) 0 E id$ schiebe (11) 0 E 1+ 6 id 5 $ reduziere durch F id (12) 0 E 1+ 6 F 3 $ reduziere durch T F (13) 0 E 1+ 6 T 9 $ E E + T (14) 0 E 1 $ akzeptiere Tabelle 5: Aktionen des LR-Parsers bei Eingabe von id * id + id LR-Grammatiken Es gibt kontextfreie Grammatiken, die nicht LR sind, aber diese können im allgemeinen für typische Programmiersprachkonstrukte vermieden werden. Damit eine Grammatik LR ist, reich es intuitiv, dass ein von links nach rechts arbeitender Shift-Reduce-Parser fähig ist, Handles zu erkennen, wenn diese an der Spitze des Stacks auftauchen.[asu88a] (Ein Handle eines Strings ist - informell ausgedrückt - ein Substring, der mit der rechten Seite einer Produktion übereinstimmt und dessen Reduktion zum Nichtterminalen auf der linken Seite der Produktion einem Schritt einer inversen Rechtsableitung entspricht [ASU88a].) 16

17 3 PARSER-GENERATOR YACC Es ist nicht nötig, dass ein LR-Parser den ganzen Stack abarbeitet, um zu wissen, wann der Handle an der Spitze erscheint. Das Zustandssymbol an der Spitze des Stacks enthält alle Informationen, die der Parser benötigt. Um die Shift-Reduce-Entscheidung zu unterstützen, kann der Parser auch die nächsten k Eingabesymbole betrachten. Die Fälle k =0 und k=1 sind von praktischem Interesse. Eine Grammatik, die der Parser bis zu k Eingabesymbolen bei jeder Aktion untersucht, wird LR(k)-Grammatik genannt.[asu88a] LALR-Syntaxanalysetabellen Die allgemeinsten Syntaxkonstrukte von Programmiersprachen können bequem durch eine LALR-Grammatik ausgedrückt werden. Die LALR-Technik wird in der Praxis häug benutzt um Syntaxanalysetabellen zu erstellen, da die Tabellen, die man durch sie erhält, bedeutend kleiner sind als die kanonischen LR-Tabellen. Bei einem Vergleich der Parsergröÿe haben die SLR- und LALR-Tabellen für eine Grammatik immer die gleiche Anzahl von Zuständen. Für eine Sprache wie Pascal liegt diese Gröÿe bei einigen hundert Zuständen. Die kanonische LR-Tabelle hätte typischerweise einige tausend Zustände. [ASU88a] Auf die Konstruktion von LALR-Syntaxanalysetabellen soll hier nicht weiter eingegangen werden. Die Algorithmen sind in [ASU88a, 288] zu nden. 3 Parser-Generator Yacc Grundsätzlich ist ein Yacc-Quellprogramm wie folgt aufgebaut: Listing 1: Aufbau eines Yacc-Quellprogramms 1 D e k l a r a t i o n e n 2 %% 3 U e b e r s e t z u n g s r e g e l n 4 %% 5 U n t e r s t u e t z e n d e C Routinen Die Übersetzungsregeln sind die Produktionen der umzusetzenden Grammatik. Listing 2 zeigt den Yacc-Quellcode für einfache arithmetische Ausdrücke. Die Grammatik wurde in Beispiel 7 bereits verwendet. 17

18 3 PARSER-GENERATOR YACC Listing 2: Grammatik für arithmetische Ausdrücke [Job91] 1 %{ 2 / Grammatik f u e r a r i t h m e t i s c h e Ausdruecke mit + ( ) / 3 / O r i g i n a l von F r i t z Jobst aus seinem Buch "Compilerbau ", 1992, Hanser Programmtexte 4 / i n c l u d e s und D e f i n i t i o n e n / 5 #include <s t d i o. h> 6 void y y e r r o r ( char ) ; 7 int y y p a r s e ( void ) ; 8 %} 9 / Startsymbol der Grammatik f e s t l e g e n / 10 %s t a r t expr 11 / Token der Grammatik f e s t l e g e n soweit erforderlich / 12 %token ID 13 %% / Regeln / 14 expr : 15 expr '+ ' term 16 term 17 ; 18 term : 19 term ' ' f a c t o r 20 f a c t o r 21 ; 22 f a c t o r : 23 ' ( ' expr ' ) ' 24 ID 25 ; 26 %% / Programm / 27 char yytext ; 28 int y y l e x ( void ) / Einfacher Scanner / 29 { 30 int c ; 31 while ( ( c= g e t c h a r ( ) ) == ' ' ) 32 ; 33 y y l v a l = c ; yytext = c ; 34 switch ( c ) 35 { 36 case '+ ' : case ' ' : case ' ( ' : case ' ) ' : 37 return ( c ) ; 38 case ' 0 ' : case ' 1 ' : case ' 2 ' : case ' 3 ' : case ' 4 ' : 39 case ' 5 ' : case ' 6 ' : case ' 7 ' : case ' 8 ' : case ' 9 ' : 40 y y l v a l = c ' 0 ' ; return ( ID ) ; 41 case ' $ ' : 42 return ( 0 ) ; 43 default : 44 y y e r r o r ( " U n g u e l t i g e s Symbol" ) ; e x i t ( 1 ) ; 45 } 46 } 47 main ( ) 48 { 49 y y p a r s e ( ) ; 50 } 51 void y y e r r o r ( char t e x t ) 52 { 53 p r i n t f ( "%s : z e i c h e n %c \n", t e x t, y y t e x t ) ; 54 } Yacc erstellt aus der Eingabedatei einen Parser. Mit der Operation -v erhält man eine lesbare Beschreibung des Parsers. Das Listing 3 stellt den Parser für den Yacc-Quellcode oben dar. 18

19 3 PARSER-GENERATOR YACC 1 Zustand $ a c c e p t :. expr $ end 3 ID s c h i e b e und gehe zu Zustand 1 ueber 4 ' ( ' s c h i e b e und gehe zu Zustand 2 ueber 5 expr gehe zu Zustand 3 ueber 6 term gehe zu Zustand 4 ueber 7 f a c t o r gehe zu Zustand 5 ueber 8 9 Zustand f a c t o r : ID. 11 $ d e f a u l t r e d u z i e r e mit Regel 6 ( f a c t o r ) Zustand f a c t o r : ' ( '. expr ' ) ' 15 ID s c h i e b e und gehe zu Zustand 1 ueber 16 ' ( ' s c h i e b e und gehe zu Zustand 2 ueber 17 expr gehe zu Zustand 6 ueber 18 term gehe zu Zustand 4 ueber 19 f a c t o r gehe zu Zustand 5 ueber Zustand $ a c c e p t : expr. $ end 23 1 e x p r : expr. '+ ' term 24 $ end s c h i e b e und gehe zu Zustand 7 ueber 25 '+ ' s c h i e b e und gehe zu Zustand 8 ueber Zustand e x p r : term t e r m : term. ' ' f a c t o r 30 ' ' s c h i e b e und gehe zu Zustand 9 ueber 31 $ d e f a u l t r e d u z i e r e mit Regel 2 ( expr ) Zustand t e r m : f a c t o r. 35 $ d e f a u l t r e d u z i e r e mit Regel 4 ( term ) Zustand e x p r : expr. '+ ' term 39 5 f a c t o r : ' ( ' expr. ' ) ' 40 '+ ' s c h i e b e und gehe zu Zustand 8 ueber 41 ' ) ' s c h i e b e und gehe zu Zustand 10 ueber Zustand $ a c c e p t : expr $ end. 45 $ d e f a u l t annehmen Zustand e x p r : expr '+ '. term 49 ID s c h i e b e und gehe zu Zustand 1 ueber 50 ' ( ' s c h i e b e und gehe zu Zustand 2 ueber 51 term gehe zu Zustand 11 ueber 52 f a c t o r gehe zu Zustand 5 ueber Zustand t e r m : term ' '. f a c t o r 56 ID s c h i e b e und gehe zu Zustand 1 ueber 57 ' ( ' s c h i e b e und gehe zu Zustand 2 ueber 58 f a c t o r gehe zu Zustand 12 ueber Zustand f a c t o r : ' ( ' expr ' ) '. 62 $ d e f a u l t r e d u z i e r e mit Regel 5 ( f a c t o r ) Zustand e x p r : expr '+ ' term t e r m : term. ' ' f a c t o r 67 ' ' s c h i e b e und gehe zu Zustand 9 ueber 68 $ d e f a u l t r e d u z i e r e mit Regel 1 ( expr ) Listing 3: Ausgabe von Yacc 19

20 4 FAZIT Zustand t e r m : term ' ' f a c t o r. 72 $ d e f a u l t r e d u z i e r e mit Regel 3 ( term ) Aus den Zuständen in Listing 3 kann die Parser-Tabelle rekonstruiert werden. Die so erstellte Parser-Tabelle entspricht weitestgehend der Parse-Tabelle 4. Einziger Unterschied sind andere Labels für die Zustände und ein weiterer Annehmen-Zustand (Zustand 7). 4 Fazit Als Fazit lässt sich schlieÿen, dass LALR-Parser für Syntaxkonstrukte von Programmiersprachen ausreichend sind. LALR-Syntaxtabellen sind von Hand, insbesondere für komplexere Grammatiken, schwer zu entwickeln. Deswegen wird ein Parser-Generator wie Yacc benötigt. Der Einsatz von Yacc lohnt sich allerdings nur für Sprachen, die auch wirklich DKFG sind. Für reguläre Sprachen sind andere Werkzeuge besser geeignet. Yacc wurde bereits 1970 entwickelt und wurde stehts weiter verbessert. GNU Bison ist eine Weiterentwicklung von Yacc und wird heute in Unix-artigen Betriebssystemen eingesetzt. 20

21 Literatur Literatur Literatur [ASU88a] Aho, Alfred ; Sethi, Ravi ; Ullmann, J.D.: Compilerbau Teil [ASU88b] Aho, Alfred ; Sethi, Ravi ; Ullmann, J.D.: Compilerbau Teil [GLNR92] Gardner, Jim ; Linseman, Anne ; Nicol, Scott ; Retterath, Chris: Lex & Yacc. Mortice Kern Systems, Inc., 1992 [HU69] [Job91] [SF85] Hopcroft, John E. ; Ullman, J. D.: Introduction to Automata Theory. Addison Wesley, 1969 Jobst, Fritz: Compilerbau. Von der Quelle zum professionellen Assemblertext. Hanser Fachbuchverlag, 1991 Schreiner, A. T. ; Friedman, H. G.: Compiler bauen mit UNIX e. Einf. Hanser Fachbuchverlag, 1985 [Zim89] Zima, Hans: COMPILERBAU I. Spektrum Akademischer Verlag,

Einführung - Parser. Was ist ein Parser?

Einführung - Parser. Was ist ein Parser? Gliederung 1. Einleitung 1.1 Was ist ein Parser? 1.2 Was ist ein tabellengesteuerter TD-Parser? 1. Tabellengesteuerter TD-Parser 2.1 Funktionsweise 2.2 Darstellung als Pseudocode 2.3 Konstruktion von prädiktiven

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

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

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

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

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

Mehr

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

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

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

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

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

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

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

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

Theoretische Informatik I

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

Mehr

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

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

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

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

Mehr

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

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

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

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

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

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

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

Was ist ein Compiler?

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

Mehr

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

Ä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

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

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

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

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

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

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1 Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene

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

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

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

EINFACHES HAUSHALT- KASSABUCH

EINFACHES HAUSHALT- KASSABUCH EINFACHES HAUSHALT- KASSABUCH Arbeiten mit Excel Wir erstellen ein einfaches Kassabuch zur Führung einer Haushalts- oder Portokasse Roland Liebing, im November 2012 Eine einfache Haushalt-Buchhaltung (Kassabuch)

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

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

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

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

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

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

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

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

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

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

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

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

Mehr

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Hilfe Bearbeitung von Rahmenleistungsverzeichnissen Allgemeine Hinweise Inhaltsverzeichnis 1 Allgemeine Hinweise... 3 1.1 Grundlagen...3 1.2 Erstellen und Bearbeiten eines Rahmen-Leistungsverzeichnisses...

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

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

Zur drittletzten Zeile scrollen

Zur drittletzten Zeile scrollen 1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:

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

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

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

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

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

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

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

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

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer Allgemein: Das RSA-Verschlüsselungsverfahren ist ein häufig benutztes Verschlüsselungsverfahren, weil es sehr sicher ist. Es gehört zu der Klasse der

Mehr

Definition von LR(k)-Grammatiken

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

Mehr

Übung Theoretische Grundlagen

Übung Theoretische Grundlagen Übung Theoretische Grundlagen Berechenbarkeit/Entscheidbarkeit Nico Döttling November 26, 2009 INSTITUT FÜR KRYPTOGRAPHIE UND SICHERHEIT KIT University of the State of Baden-Wuerttemberg and National Laboratory

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

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

10 Erweiterung und Portierung

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

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

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

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

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

FAQ Spielvorbereitung Startspieler: Wer ist Startspieler?

FAQ Spielvorbereitung Startspieler: Wer ist Startspieler? FAQ Spielvorbereitung Startspieler: Wer ist Startspieler? In der gedruckten Version der Spielregeln steht: der Startspieler ist der Spieler, dessen Arena unmittelbar links neben dem Kaiser steht [im Uhrzeigersinn].

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

Geld wechseln kann als Visualisierung des Zehnerübergangs dienen. Die Zwischengrössen (CHF 2.-, 5.-, 20.-, 50.-) weglassen.

Geld wechseln kann als Visualisierung des Zehnerübergangs dienen. Die Zwischengrössen (CHF 2.-, 5.-, 20.-, 50.-) weglassen. E2 Rechnungen verstehen plus minus Verständnisaufbau Geld wechseln Geld wechseln kann als Visualisierung des Zehnerübergangs dienen. Die Zwischengrössen (CHF 2.-, 5.-, 20.-, 50.-) weglassen. Ich bezahle

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Robot Karol für Delphi

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

Mehr

Informationen zu den regionalen Startseiten

Informationen zu den regionalen Startseiten Informationen zu den regionalen Startseiten Inhaltsverzeichnis Informationen zu den regionalen Startseiten 1 1. Grundlegende Regeln 2 1.1. Was wird angezeigt? 2 1.2. Generelle Anzeigeregeln 2 2. Anpassbare

Mehr

Satzhilfen Publisher Seite Einrichten

Satzhilfen Publisher Seite Einrichten Satzhilfen Publisher Seite Einrichten Es gibt verschiedene Möglichkeiten die Seite einzurichten, wir fangen mit der normalen Version an, Seite einrichten auf Format A5 Wählen Sie zunächst Datei Seite einrichten,

Mehr

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH

Funktionsbeschreibung. Lieferantenbewertung. von IT Consulting Kauka GmbH Funktionsbeschreibung Lieferantenbewertung von IT Consulting Kauka GmbH Stand 16.02.2010 odul LBW Das Modul LBW... 3 1. Konfiguration... 4 1.1 ppm... 4 1.2 Zertifikate... 5 1.3 Reklamationsverhalten...

Mehr

Kreatives Occhi. - V o r s p a n n - Alle Knoten und Knüpfelemente sowie ihre Verwendbarkeit. Die Knoten

Kreatives Occhi. - V o r s p a n n - Alle Knoten und Knüpfelemente sowie ihre Verwendbarkeit. Die Knoten Kreatives Occhi - V o r s p a n n - Alle Knoten und Knüpfelemente sowie ihre Verwendbarkeit Die Knoten Der Doppelknoten: Er wird mit nur 1 Schiffchen gearbeitet (s. page Die Handhabung der Schiffchen )

Mehr

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:

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

Zusammenführen mehrerer Dokumente zu einem PDF In drei Abschnitten erstellen Sie ein Dokument aus mehreren Einzeldokumenten:

Zusammenführen mehrerer Dokumente zu einem PDF In drei Abschnitten erstellen Sie ein Dokument aus mehreren Einzeldokumenten: Zusammenführen mehrerer Dokumente zu einem PDF In drei Abschnitten erstellen Sie ein Dokument aus mehreren Einzeldokumenten: 1. Das erste Dokument drucken 2. Weitere Dokumente hinzufügen 3. Alle Dokumente

Mehr

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1 Beispiel Shop-Eintrag Ladenlokal & Online-Shop. Als Händler haben Sie beim Shop-Verzeichnis wir-lieben-shops.de die Möglichkeit einen oder mehrere Shop- Einträge zu erstellen. Es gibt 3 verschiedene Typen

Mehr

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel Sehr vielen Mitarbeitern fällt es schwer, Serienbriefe an Kunden zu verschicken, wenn sie die Serienbrieffunktion von Word nicht beherrschen. Wenn die Kunden mit Excel verwaltet werden, genügen nur ein

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

Anwendung von Kontextfreien Grammatiken

Anwendung von Kontextfreien Grammatiken Anwendung von Kontextfreien Grammatiken Kontextfreie Grammatiken Eine kontextfreie Grammatik (kfg) ist formal definiert als ein 4-Tupel. G = (N, T, P, S) Wobei: N: Nichtterminalsymbol / Variable T: Terminalsymbol

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

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

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion Historie Die ersten Compiler entstanden in den 50ern.

Mehr

Bedienungsanleitung für den Online-Shop

Bedienungsanleitung für den Online-Shop Hier sind die Produktgruppen zu finden. Zur Produktgruppe gibt es eine Besonderheit: - Seite 1 von 18 - Zuerst wählen Sie einen Drucker-Hersteller aus. Dann wählen Sie das entsprechende Drucker- Modell

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

1 BEDIENUNGSANLEITUNG

1 BEDIENUNGSANLEITUNG 1 BEDIENUNGSANLEITUNG 1.1 Kunde In diesem Fenster können die Stammdaten des Kunden eingetragen werden oder es kann eine Änderung der Stammdaten durchgeführt werden. Zusätzlich kann man auch Kunden nach

Mehr

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

Mehr