1 / 15

Parsing regulärer Ausdrücke

Parsing regulärer Ausdrücke. Karin Haenelt 25.4.2009. 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.

ajaxe
Download Presentation

Parsing regulärer Ausdrücke

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Parsing regulärer Ausdrücke Karin Haenelt 25.4.2009

  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

  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

  4. Konkrete Syntax und abstrakte Syntax • konkrete 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

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

  6. Grammatik für reguläre Ausdrücke, 2. Entwurf Expression Product Terminal 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

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

  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)

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

  10. 1E 3P 12T 13• 16T 13• 16T 13• 16T 21b 21a 21b 23( 26E 27) 31* 3P 4| 7P 12T 12T 21a 21b Ableitungsstruktur nach Algorithmus Beispiel: (a|b)*abb Die Zahlen geben die Zeile des Algorithmus an

  11. Konstruktion des Syntaxbaumes class TreeNode{ String info; TreeNode left; TreeNode right;} • 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

  12. E P ● T • T • T T • ● # ( E ) * a b b ● b P | P ● b T T * a a b | a b Ein Parsebaum und Syntaxbaum (a|b)*abb Syntaxbaum Parsebaum

  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

  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 Studiumengl. Original: Introduction to Automata Theory, Languages and Computation. Addison-Wesley. www-db.stanford.edu/~ullman/ialc.html

  15. Versionen 25.04.2009 06.05.2008, 05.05.2007 27.05.,20.05.2005

More Related