Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Parsing regulärer Ausdrücke

Ähnliche Präsentationen


Präsentation zum Thema: "Parsing regulärer Ausdrücke"—  Präsentation transkript:

1 Parsing regulärer Ausdrücke
Karin Haenelt

2 Inhalt kontextfreie Grammatik für reguläre Ausdrücke Grundlagen
Parsebaum: konkrete Syntax Syntaxbaum: abstrakte Syntax Algorithmus: Parsing regulärer Ausdrücke Erkennung Konstruktion des Syntaxbaumes © Karin Haenelt, Parsing regulärer Ausdrücke ,

3 Grammatik für reguläre Ausdrücke
reguläre Ausdrücke beschreiben reguläre Sprachen Notationssprache für reguläre Ausdrücke ist keine reguläre Sprache Sprache enthält Klammern die beliebig ineinander geschachtelt werden können ausbalanciert sein müssen (Anzahl öffnender Klammern = Anzahl schließender Klammern) ist eine kontextfreie Sprache Erkennung mit Automaten mit Gedächtnis © Karin Haenelt, Parsing regulärer Ausdrücke ,

4 Konkrete Syntax und abstrakte Syntax
Ableitungsbaum der Erkennung mit kontextfreier Grammatik Parsebaum Ziel: effiziente Erkennung abstrakte Syntax Abstraktion von Details, die zur Weiterverarbeitung nicht gebraucht werden Syntaxbaum Ziel: effiziente Weiterverarbeitung Ziel: kontextfreie Grammatik – nach der konkrete Syntax und abstrakte Syntax möglichst ähnlich sind © Karin Haenelt, Parsing regulärer Ausdrücke ,

5 Grammatik für arithmetische Ausdrücke, 1. Entwurf
2 Ableitungen mit 2 Strukturen für 1+2x3 1 E + 2 3 E 3 1 2 + x x unbrauchbar zur weiteren Auswertung des Ausdrucks, falsche Priorität der Rechenregeln © Karin Haenelt, Parsing regulärer Ausdrücke ,

6 Grammatik für reguläre Ausdrücke, 2. Entwurf
Berücksichtigung der Priorität der Operatoren + vereinigt Produkte (Operator • hat seine Argumente zuvor gebunden) • konkateniert Terme (Operator * hat sein Argument zuvor gebunden) * bindet sein Argument zuerst Expression Product Terminal © Karin Haenelt, Parsing regulärer Ausdrücke ,

7 Kontextfreie Grammatik für reguläre Ausdrücke
Beispiel (a|b)*abb Ableitungsbaum a b T P | E ( ) * Die Grammatikregel enthält eine Rechtsrekursion. Rechtsrekursion lässt sich durch Iteration darstellen. In einer iterativen Darstellung treten die markierten Ableitungen nicht auf © Karin Haenelt, Parsing regulärer Ausdrücke ,

8 Erkennen regulärer Ausdrücke
Grundlage: Grammatik für reguläre Ausdrücke E → P + E | P Ausdruck P → T •P | T Produkt T → 0 | 1 |ε | Ø | T* | (E) Terminal (Terminalsymbole können erweitert werden) weder Lexikon noch Grammatik sind komplex oder veränderlich Erkenner kann direkt aus der Grammatik abgeleitet werden, indem man für jede Variable eine Prozedur schreibt (Hopcroft/Ullman, 1988: 128/129) © Karin Haenelt, Parsing regulärer Ausdrücke ,

9 Algorithmus zur Erkennung regulärer Ausdrücke
1 3 nach Hopcroft/Ullmann 1988:128 4 7 12 16 21 23 26 27 31 © Karin Haenelt, Parsing regulärer Ausdrücke ,

10 Ableitungsstruktur nach Algorithmus
3P 7P 4| 23( 27) 26E 31* 13• 16T 1E Beispiel: (a|b)*abb Die Zahlen geben die Zeile des Algorithmus an © Karin Haenelt, Parsing regulärer Ausdrücke ,

11 Konstruktion des Syntaxbaumes
Erkennungsalgorithmus durchläuft nur den Ausdruck und erkennt ihn gibt accept oder reject aus erzeugt keine weitere Ausgabe Konstruktionsanweisungen für den Syntaxbaum müssen an den entsprechenden Stellen im Algorithmus hinzugefügt werden Veränderungen gegenüber der konkreten Syntax: Operatoren als innere Knoten Operanden als Kinder des Knotens Symbole des Eingabealphabetes und leere Kette als terminale Knoten Grundstruktur class TreeNode { String info; TreeNode left; TreeNode right; } © Karin Haenelt, Parsing regulärer Ausdrücke ,

12 Ein Parsebaum und Syntaxbaum
(a|b)*abb Parsebaum Syntaxbaum a * T P b | E ( ) a b # | * © Karin Haenelt, Parsing regulärer Ausdrücke ,

13 Vielen Dank Für das Aufspüren von Fehlern in früheren Versionen und für Verbesserungsvorschläge danke ich Victor Gabriel Saiz Castillo, Robert Schumann © Karin Haenelt, Parsing regulärer Ausdrücke ,

14 Literatur Aho, Alfred V.; Sethi, Ravi und Jeffrey D. Ullman (1986). Compilers. Principles, Techniques and Tools. Addison-Wesley Publishing Company. Hopcroft, John E. und Jeffrey D. Ullman (1988). Einführung in die Automatentheorie, formale Sprachen und Komplexitätstheorie. Bonn u. a.: Addison-Wesley, 1988 (engl. Original Introduction to automata theory, languages and computation). Hopcroft, John E., Rajeev Motwani und Jeffrey D. Ullman (2002). Einführung in die Automatentheorie, Formale Sprachen und Komplexität. Pearson Studium engl. Original: Introduction to Automata Theory, Languages and Computation. Addison-Wesley. www-db.stanford.edu/~ullman/ialc.html © Karin Haenelt, Parsing regulärer Ausdrücke ,

15 Versionen , 27.05., © Karin Haenelt, Parsing regulärer Ausdrücke ,


Herunterladen ppt "Parsing regulärer Ausdrücke"

Ähnliche Präsentationen


Google-Anzeigen