Entwurf und Implementierung eines Scanner-Generatorsystems

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

Sortieren I - Bubblesort -
Theoretische Grundlagen der Informatik Prof. Dr. Michael Löwe
Institut für Informatik Abt. Intelligente Systeme
8. Formale Sprachen und Grammatiken
Imperative Programmierung
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Notationen A = ist eine endliche, nichtleere menge,
Grammatiken, Definitionen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Christian Schindelhauer
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Kapitel 4 Syntaktische Analyse: LR Parsing.
Parser generieren Yet Another Compiler – Compiler YACC.
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Parser für CH3-Sprachen
FH-Hof Formale Sprachen - Maschinenmodelle Richard Göbel.
Formale Sprachen – Mächtigkeit von Maschinenmodellen
DOM (Document Object Model)
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (02 – Endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (05 – Reguläre Ausdrücke) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Geometrisches Divide and Conquer
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Prof. Dr. rer.nat. Ralph Großmann Fakultät Informatik / Mathematik Sommersemester 2012 Internet-Technologien XML-basierte Techniken Teil Metasprache der.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Grundkurs Theoretische Informatik, Folie 3.1 © 2004 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 3 Gottfried Vossen Kurt-Ulrich Witt.
Prolog Grundkurs WS 98/99 Christof Rumpf
Parsing regulärer Ausdrücke
© Karin Haenelt 2006, Operationen auf Akzeptoren und Transduktoren, ( ) 1 Operationen auf endlichen Akzeptoren und Transduktoren.
Beispiele für Ausdrucksalgebren
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Berechenbarkeit. Fragestellungen Können Computer alles ausrechnen? Kann man alles ausrechnen? Was kann man berechnen? Was nicht? Was heißt Berechenbarkeit?
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Formale Sprachen und Automaten
Auslegung eines Vorschubantriebes
Formale Sprachen Grammatiken und die Chomsky-Hierarchie
Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Städtisches Gymnasium Beverungen Friedel Berlage
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
Noam CHOMSKY, Sheila GREIBACH
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Arne Vater Wintersemester 2006/07 28.
Christian Schindelhauer Wintersemester 2006/07 5. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Arne Vater Wintersemester 2006/ Vorlesung
Christian Schindelhauer Wintersemester 2006/07 6. Vorlesung
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Softwareengineering Endliche Automaten
Informatik Formale Sprachen 1.2 Grammatiken formaler Sprachen
Der Hund jagt die Katze. Theoretische Informatik Satz S P O
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
7. Formale Sprachen und Grammatiken
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Kapitel 4:Die Chomsky Hierarchie
2 Grundlagen In diesem Abschnitt werden die Grundbegriffe und Methoden der Theorie der formalen Sprachen und der Automaten wiederholt, soweit diese ben.
 Am Ende der letzten Stunde hatten wir über die Grenzen unserer Automaten-Modell gesprochen. Dr. Lars Ettelt2  Tipp: Parkhaus.  Einfahrt erst wenn.
13.Dezember 2006–1Elektronisches Publizieren: Schemasprachen — Relax NG Schemasprachen für XML — Relax NG — Anne Brüggemann-Klein TU München.
 Präsentation transkript:

Entwurf und Implementierung eines Scanner-Generatorsystems nach der Methode von Gluschkow Sabine Ludvik 27.10.2007

Was ist ein Scanner-Generatorsystem und wozu braucht man es? Aufgabenstellung I Was ist ein Scanner-Generatorsystem und wozu braucht man es? ein Programm, welches: testet, ob ein eingelesenes Wort dem vorgegebenen Muster entspricht Beispiel Variablenbezeichner: korrekter Bezeichner: myVar oder Var2 nicht korrekter Bezeichner: -myVar oder 2Var Input des Programm: reguläre Ausdrücke als konkrete syntaktische Spezifikationen 2

Chomsky-Hierarchie: Formalisierung von Sprachen Formale Sprachen Chomsky-Hierarchie: Formalisierung von Sprachen Grammatik Sprache Automat Typ 0 rekursiv aufzählbar Turingmaschine Typ 1 kontextsensitiv linear beschränkter Automat Typ 2 kontextfrei Kellerautomat Typ 3 regulär endlicher Automat 3

Automaten Automat = Akzeptor der definierenden Sprache virtuelle Zustandsmaschine Elemente: Zustände und Zustandsübergänge Input: Wort Endlicher Automat: Typ 3: reguläre Grammatik / regulärer Ausdruck endliche Zustandsmenge A = (S, T, δ, So, E) 4

Was ist ein Scanner-Generatorsystem? Aufgabenstellung II Was ist ein Scanner-Generatorsystem? eine Software, die folgendes implementiert: die Erzeugung von endlichen Automaten = Generator  Input: regulärer Ausdruck deren Anwendung zum Testen von Token = Simulator  Input: Wort 5

Reguläre Ausdrücke Alternative zu regulärer Grammatik beschreiben Mengen von Zeichenketten Syntax ist definiert durch Eingabealphabet und spezielle syntaktische Zeichen: « » [ ] | ε Mengenoperationen definieren die beschriebene Sprache (Semantik): Alternative („Mengenvereinigung“: |) Konkatenation („Aneinanderreihung“: •) Kleene‘sche Sternoperation („Wiederholung“: « » ) Beispiel: R = [ a | a « b » c | | w x y z ] 6

Gluschkow I Schritt 1: Schritt 2: Viktor Michailowitsch Gluschkow (1923 - 1982) Theorie der abstrakten Automaten. Mathematische Forschungsberichte (deutsch:1963) Methode zur direkten Erzeugung eines DEA aus einem regulären Ausdruck in zwei Schritten: Schritt 1: Indizierung des regulären Ausdrucks (Regel a-e) Schritt 2: Berechnung der Zustandsüberführungsfunktion 7

jedes einzelne Zeichen des regulären Ausdrucks hat zwei „Stellen“: Gluschkow II R = [ a | a « b » c | | w x y z ] jedes einzelne Zeichen des regulären Ausdrucks hat zwei „Stellen“: Vorgrundstelle Grundstelle jedes Eingabezeichen erhält einen Grundindex: R = [ a | a « b » c | | w x y z ] 0 1 2 3 4 5 6 7 8 9 Weitergabe nach Regel a-e erzeugt abgeleitete Indizes 8

Anforderungen GUI-Anforderungen: GUI im Microsoft-Windows-Stil Projektverwaltung Persistenz optional: Sprachen Gluschkow-Algorithmen: Ableitungsbaum des regulären Ausdrucks Indizierung des regulären Ausdrucks: Regeln a-e Berechnung der Zustandsüberführungsfunktion Simulator optional: Zustandsdiagramm 9

Entwurf - Struktur Entwurf nach MVC-Modell: M odel: Algorithmen V iew: Präsentation C ontroller: Programmsteuerung 10

Expression [] Loop « » Option | Terminal Epsilon Root DOM: Elemente Beispiel: [ a | a « b » c | ] Expression [] Loop « » Option | Terminal Epsilon Root Elemente sind XML-Nodes Elemente haben Attribute 11

Grundindex eines Terminals oder Epsilons INDEX_OPEN: DOM: Attribute INDEX_BASE: Grundindex eines Terminals oder Epsilons INDEX_OPEN: abgeleitete Indizes am Anfang von Loops oder Expressions und von Epsilon INDEX_CLOSE: abgeleitete Indizes am Ende von Loops oder Expressions 12

Indizierung: Lexer Schritt 1: Lexer Beispiel von: [ a | a « b » c | ] regulärer Ausdruck Token-Strom 13

Schritt 2: Parser Token-Strom DOM Indizierung: Parser Schritt 2: Parser Token-Strom DOM 14

Quelle  Akzeptor von „oben nach unten“ von „links nach rechts“ Indexübertragung Quelle  Akzeptor von „oben nach unten“ von „links nach rechts“ 15

Indizes über öffnende Klammern ziehen: Regel a Indizes über öffnende Klammern ziehen: 16

Indizes über schließende Klammern ziehen: Regel b Indizes über schließende Klammern ziehen: 17

Weglassen eines regulären Teilausdrucks: Regel c Weglassen eines regulären Teilausdrucks: 18

Wiederholen eines regulären Teilausdrucks: Regel d Wiederholen eines regulären Teilausdrucks: 19

Bearbeitung des leeren Wortes ε: Regel e Bearbeitung des leeren Wortes ε: 20

Indizierung II Schritt 1 der DEA-Konstruktion ist beendet! 21

vor der Indizierung: „Liste“  Baum nach der Indizierung: Baum  Liste Indizierung III vor der Indizierung: „Liste“  Baum nach der Indizierung: Baum  Liste 22

Zustandsüber-führungsfunktion I Zustandsübergang: { 0 } { 1, 2 } {IA1, IA2,...} {IF1, IF2,...} x R = [ a | a « b » c | | w x y z ] 0 1 2 3 4 5 6 7 8 9 0a 0a 0a 0a ( S0, a ) = { 1,2 } = S1 ( S0, b ) = { Ø } = S⒠ ( S0, c ) = { Ø } = S⒠ ( S0, w ) = { 6 } = S2 ... 23

Zustandsüber-führungsfunktion II Berechnung: Ausgangspunkt: S0 mit Grundindex 0 berechnete Zustände werden sukzessive bearbeitet Endpunkt: keine unberechneten Zustände mehr 24

Zustandsdiagramm optionale Anforderung, daher einfache Implementierung: Schritt: Einteilung in vier Gruppen und Positionierung 2. Schritt: Ergänzung von Pfeilen Schlingen Buchstaben 25

Simulator Testen beliebiger Zeichenfolgen Darstellung aller Einzelschritte Anzeige, ob das Wort akzeptiert wurde:  Endzustand nicht akzeptiert wurde:  kein Endzustand oder Fehlerzustand 26

Zusammenfassung SL»DEA erfüllt alle geforderten Anforderungen: MS-Windows-GUI Generierung eines DEA aus einem regulären Ausdruck Simulationen von Eingabezeichenfolgen Dokumentation und Benutzeranleitung zusätzlich wurde implementiert: Sprachunterstützung zur Laufzeit einfache Zustandsdiagramme Weiterentwicklungen: geplant: Drucken / Projektverwaltung denkbar: schrittweise mitverfolgbare Indizierung 27

Dank für das Thema, die Betreuung und Begutachtung: Prof. Dr. Bernhard Zimmermann Dipl.-Ing. Ute Kretschmer für moralische Unterstützung: Jan-Peter Flato Ulrich Szagun Holger Sanio 28