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

Download Entwurf und Implementierung  eines Scanner-Generatorsystems  nach der Methode von Gluschkow

Post on 03-Jan-2016

36 views

Category:

Documents

6 download

Embed Size (px)

DESCRIPTION

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: - PowerPoint PPT Presentation

TRANSCRIPT

<ul><li><p>Entwurf und Implementierung eines Scanner-Generatorsystems nach der Methode von Gluschkow</p><p>Sabine Ludvik27.10.2007</p></li><li><p>Was ist ein Scanner-Generatorsystem und wozu braucht man es?</p><p>ein Programm, welches:testet, ob ein eingelesenes Wort dem vorgegebenen Muster entspricht</p><p>Beispiel Variablenbezeichner: korrekter Bezeichner: myVar oder Var2 nicht korrekter Bezeichner:-myVar oder 2Var</p><p>Input des Programm: regulre Ausdrcke als konkrete syntaktische SpezifikationenAufgabenstellung I *</p></li><li><p>Chomsky-Hierarchie: Formalisierung von SprachenFormale Sprachen *</p><p>GrammatikSpracheAutomatTyp 0rekursiv aufzhlbarTuringmaschineTyp 1kontextsensitivlinear beschrnkter AutomatTyp 2kontextfreiKellerautomatTyp 3regulrendlicher Automat</p></li><li><p>Automat = Akzeptor der definierenden Sprache virtuelle Zustandsmaschine Elemente: Zustnde und Zustandsbergnge Input: Wort</p><p>Endlicher Automat: Typ 3: regulre Grammatik / regulrer Ausdruck endliche Zustandsmenge A = (S, T, , So, E)Automaten *</p></li><li><p>Was ist ein Scanner-Generatorsystem?</p><p>eine Software, die folgendes implementiert:</p><p>die Erzeugung von endlichen Automaten = Generator Input: regulrer Ausdruck</p><p>deren Anwendung zum Testen von Token= Simulator Input: WortAufgabenstellung II *</p></li><li><p>Alternative zu regulrer Grammatik</p><p>beschreiben Mengen von Zeichenketten</p><p>Syntax ist definiert durch Eingabealphabet und spezielle syntaktische Zeichen: [ ] | </p><p>Mengenoperationen definieren die beschriebene Sprache (Semantik): Alternative (Mengenvereinigung: |)Konkatenation (Aneinanderreihung: )Kleenesche Sternoperation (Wiederholung: )</p><p>Beispiel: R = [ a | a b c | | w x y z ]Regulre Ausdrcke *</p></li><li><p>Viktor Michailowitsch Gluschkow (1923 - 1982)</p><p>Theorie der abstrakten Automaten. Mathematische Forschungsberichte (deutsch:1963)</p><p>Methode zur direkten Erzeugung eines DEA aus einem regulren Ausdruck in zwei Schritten:</p><p>Schritt 1: Indizierung des regulren Ausdrucks (Regel a-e)</p><p>Schritt 2:Berechnung der Zustandsberfhrungsfunktion </p><p>Gluschkow I *</p></li><li><p>jedes einzelne Zeichen des regulren Ausdrucks hat zwei Stellen: </p><p>Gluschkow II *R = [ a | a b c | | w x y z ]</p><p> 0 1 2 3 4 5 6 7 8 9jedes Eingabezeichen erhlt einen Grundindex:R = [ a | a b c | | w x y z ]Weitergabe nach Regel a-e erzeugt abgeleitete Indizes</p></li><li><p>GUI-Anforderungen:</p><p>GUI im Microsoft-Windows-StilProjektverwaltungPersistenzoptional: Sprachen</p><p>Gluschkow-Algorithmen:</p><p>Ableitungsbaum des regulren AusdrucksIndizierung des regulren Ausdrucks: Regeln a-eBerechnung der ZustandsberfhrungsfunktionSimulatoroptional: ZustandsdiagrammAnforderungen *</p></li><li><p>Entwurf - Struktur *Entwurf nach MVC-Modell:M odel: AlgorithmenV iew: PrsentationC ontroller: Programmsteuerung</p></li><li><p>Expression []</p><p>Loop </p><p>Option |</p><p>Terminal</p><p>Epsilon</p><p>RootDOM: Elemente *Beispiel: [ a | a b c | ]Elemente sind XML-Nodes</p><p>Elemente haben Attribute</p></li><li><p>INDEX_BASE:Grundindex eines Terminals oder Epsilons</p><p>INDEX_OPEN:abgeleitete Indizes am Anfang von Loops oder Expressions und von Epsilon</p><p>INDEX_CLOSE:abgeleitete Indizes am Ende von Loops oder ExpressionsDOM: Attribute *</p></li><li><p>Schritt 1: Lexer</p><p>Beispiel von: [ a | a b c | ]</p><p>regulrer Ausdruck Token-StromIndizierung: Lexer *</p></li><li><p>Schritt 2: Parser</p><p> Token-Strom DOMIndizierung: Parser *</p></li><li><p>Quelle Akzeptor</p><p>von oben nach unten von links nach rechtsIndexbertragung *</p></li><li><p>Indizes ber ffnende Klammern ziehen:Regel a *</p></li><li><p>Indizes ber schlieende Klammern ziehen:Regel b *</p></li><li><p>Weglassen eines regulren Teilausdrucks:Regel c *</p></li><li><p>Wiederholen eines regulren Teilausdrucks:Regel d *</p></li><li><p>Bearbeitung des leeren Wortes :Regel e *</p></li><li><p>Indizierung II *Schritt 1 der DEA-Konstruktion ist beendet!</p></li><li><p>vor der Indizierung:Liste Baum</p><p>nach der Indizierung:Baum ListeIndizierung III *</p></li><li><p> { 0 } { 1, 2 } {IA1, IA2,...} {IF1, IF2,...}Zustandsber-fhrungsfunktion I *aR = [ a | a b c | | w x y z ]</p><p> 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...Zustandsbergang: x</p></li><li><p>Berechnung:Ausgangspunkt: S0 mit Grundindex 0berechnete Zustnde werden sukzessive bearbeitetEndpunkt: keine unberechneten Zustnde mehrZustandsber-fhrungsfunktion II *</p></li><li><p>optionale Anforderung, daher einfache Implementierung:</p><p> Schritt: Einteilung in vier Gruppen und Positionierung</p><p>2. Schritt: Ergnzung von PfeilenSchlingenBuchstabenZustandsdiagramm *</p></li><li><p>Testen beliebiger Zeichenfolgen</p><p>Darstellung aller Einzelschritte</p><p>Anzeige, ob das Wort</p><p>akzeptiert wurde: Endzustand</p><p>nicht akzeptiert wurde: kein Endzustand oder Fehlerzustand</p><p>Simulator *</p></li><li><p>SLDEA erfllt alle geforderten Anforderungen:</p><p>MS-Windows-GUIGenerierung eines DEA aus einem regulren AusdruckSimulationen von EingabezeichenfolgenDokumentation und Benutzeranleitung</p><p>zustzlich wurde implementiert:</p><p>Sprachuntersttzung zur Laufzeiteinfache Zustandsdiagramme</p><p>Weiterentwicklungen:</p><p>geplant: Drucken / Projektverwaltungdenkbar:schrittweise mitverfolgbare IndizierungZusammenfassung *</p></li><li><p>fr das Thema, die Betreuung und Begutachtung:</p><p>Prof. Dr. Bernhard ZimmermannDipl.-Ing. Ute Kretschmer</p><p>fr moralische Untersttzung:</p><p>Jan-Peter FlatoUlrich SzagunHolger Sanio</p><p>Dank *</p></li></ul>