280 likes | 458 Views
Entwurf und Implementierung eines Scanner-Generatorsystems nach der Methode von Gluschkow Sabine Ludvik 27.10.2007. Aufgabenstellung I. Was ist ein Scanner-Generatorsystem und wozu braucht man es? ein Programm, welches:
E N D
Entwurf und Implementierung eines Scanner-Generatorsystems nach der Methode von Gluschkow Sabine Ludvik 27.10.2007
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
Formale Sprachen Chomsky-Hierarchie: Formalisierung von Sprachen 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
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 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
Vorgrundstelle Grundstelle Gluschkow II R = [a|a«b»c| |w x y z] jedes einzelne Zeichen des regulären Ausdrucks hat zwei „Stellen“: • 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
DOM: Elemente Beispiel: [ a | a « b » c | ] Expression [] Loop « » Option | Terminal Epsilon Root • Elemente sind XML-Nodes • Elemente haben Attribute 11
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 AusdruckToken-Strom 13
Indizierung: Parser Schritt 2: Parser Token-Strom DOM 14
Indexübertragung Quelle Akzeptor von „oben nach unten“ von „links nach rechts“ 15
Regel a Indizes über öffnende Klammern ziehen: 16
Regel b Indizes über schließende Klammern ziehen: 17
Regel c Weglassen eines regulären Teilausdrucks: 18
Regel d Wiederholen eines regulären Teilausdrucks: 19
Regel e Bearbeitung des leeren Wortes ε: 20
Indizierung II Schritt 1 der DEA-Konstruktion ist beendet! 21
Indizierung III vor der Indizierung: „Liste“ Baum nach der Indizierung: Baum Liste 22
Zustandsüber-führungsfunktion I a Zustandsübergang: x R = [a |a «b» c | |w x y z] 0 1 2 3 4 5 6 7 8 9 0a 0a 0a 0a { 0} { 1, 2 } {IA1, IA2,...} {IF1, IF2,...} • ( 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 gefordertenAnforderungen: 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