Präsentation herunterladen
Veröffentlicht von:Gotthard Huber Geändert vor über 10 Jahren
1
Entwurf und Implementierung eines Scanner-Generatorsystems
nach der Methode von Gluschkow Sabine Ludvik
2
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
3
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
4
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
5
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
6
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
7
Gluschkow I Schritt 1: Schritt 2:
Viktor Michailowitsch Gluschkow ( ) 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
8
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 ] Weitergabe nach Regel a-e erzeugt abgeleitete Indizes 8
9
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
10
Entwurf - Struktur Entwurf nach MVC-Modell: M odel: Algorithmen
V iew: Präsentation C ontroller: Programmsteuerung 10
11
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
12
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
13
Indizierung: Lexer Schritt 1: Lexer Beispiel von: [ a | a « b » c | ]
regulärer Ausdruck Token-Strom 13
14
Schritt 2: Parser Token-Strom DOM
Indizierung: Parser Schritt 2: Parser Token-Strom DOM 14
15
Quelle Akzeptor von „oben nach unten“ von „links nach rechts“
Indexübertragung Quelle Akzeptor von „oben nach unten“ von „links nach rechts“ 15
16
Indizes über öffnende Klammern ziehen:
Regel a Indizes über öffnende Klammern ziehen: 16
17
Indizes über schließende Klammern ziehen:
Regel b Indizes über schließende Klammern ziehen: 17
18
Weglassen eines regulären Teilausdrucks:
Regel c Weglassen eines regulären Teilausdrucks: 18
19
Wiederholen eines regulären Teilausdrucks:
Regel d Wiederholen eines regulären Teilausdrucks: 19
20
Bearbeitung des leeren Wortes ε:
Regel e Bearbeitung des leeren Wortes ε: 20
21
Indizierung II Schritt 1 der DEA-Konstruktion ist beendet! 21
22
vor der Indizierung: „Liste“ Baum nach der Indizierung: Baum Liste
Indizierung III vor der Indizierung: „Liste“ Baum nach der Indizierung: Baum Liste 22
23
Zustandsüber-führungsfunktion I
Zustandsübergang: { 0 } { 1, 2 } {IA1, IA2,...} {IF1, IF2,...} x R = [ a | a « b » c | | w x y z ] 0a a a 0a ( S0, a ) = { 1,2 } = S1 ( S0, b ) = { Ø } = S⒠ ( S0, c ) = { Ø } = S⒠ ( S0, w ) = { 6 } = S2 ... 23
24
Zustandsüber-führungsfunktion II
Berechnung: Ausgangspunkt: S0 mit Grundindex 0 berechnete Zustände werden sukzessive bearbeitet Endpunkt: keine unberechneten Zustände mehr 24
25
Zustandsdiagramm optionale Anforderung, daher einfache Implementierung: Schritt: Einteilung in vier Gruppen und Positionierung 2. Schritt: Ergänzung von Pfeilen Schlingen Buchstaben 25
26
Simulator Testen beliebiger Zeichenfolgen
Darstellung aller Einzelschritte Anzeige, ob das Wort akzeptiert wurde: Endzustand nicht akzeptiert wurde: kein Endzustand oder Fehlerzustand 26
27
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
28
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.