Patrick Simianer Visualisierung regulärer Ausdrücke

Ähnliche Dokumente
Grundbegriffe der Informatik

Was bisher geschah: Formale Sprachen

Reguläre Sprachen Endliche Automaten

Part-Of-Speech-Tagging mit Viterbi Algorithmus

Formale Sprachen und Grammatiken

Was ist ein Compiler?

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Grammatiken. Einführung

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Vorlesung Theoretische Informatik

Äquivalente Grammatiken / attributierte Grammatik

Programmiersprachen und Übersetzer

Theoretische Informatik I

Überführung regulärer Ausdrücke in endliche Automaten

Grundbegriffe der Informatik

Sprachen/Grammatiken eine Wiederholung

Informatik IC2. Balazs Simon

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Aufgabentypen die in der Klausur vorkommen

Grundbegriffe der Informatik

IINFO Storyboard

Grafische Interaktionssysteme/ dynamische Visualisierung des endlichen Automaten

Theoretische Informatik I

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

1 ÜBERSETZER. Compilerbau 1

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Informatik I WS 07/08 Tutorium 24

Buddy - Algorithmus Handbuch für Endnutzer Stand

2.11 Kontextfreie Grammatiken und Parsebäume

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

PowerPoint vertonen. by H.Schönbauer 1

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Theoretische Grundlagen der Informatik

Information Systems Engineering Seminar

EndTermTest PROGALGO WS1516 A

Grundlagen der Theoretischen Informatik, SoSe 2008

Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden.

Anleitung zur Excel-Anwendung Basisprämienberechnung

Ihr CMS für die eigene Facebook Page - 1

Rhapsody in J Modellierung von Echtzeitsystemen

Mathematische Grundlagen der Informatik 2

Ohne Fehler geht es nicht Doch wie viele Fehler sind erlaubt?

Robot Karol für Delphi

SEMINAR Modifikation für die Nutzung des Community Builders

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Semantik von Formeln und Sequenzen

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

FL1 Hosting Technische Informationen

25 Import der Beispiele

Projekt AGB-10 Fremdprojektanalyse

Grammatiken in Prolog

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Zentralabitur 2018 Informatik

Modellierung biologischer. Christian Maidorfer Thomas Zwifl (Seminar aus Informatik)

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

Grundlagen der Künstlichen Intelligenz

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Taylorentwicklung der k ten Dimension

Die Nuance-Grammatik und der Grammar Builder

Zeit lässt sich nicht wie Geld für schlechte Zeiten zur Seite legen. Die Zeit vergeht egal, ob genutzt oder ungenutzt.

DSLs mit Xtext entwerfen , A. Arnold

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Seminar aus dem Bereich E-Learning

Typbasierte Analyse von JavaScipt

SAP Enterprise Asset Management Visualisierung in der Instandhaltung

Parsing regulärer Ausdrücke. Karin Haenelt

Qt-Projekte mit Visual Studio 2005

Torsten Flatter inovex GmbH. "Git.NET" gibt's nicht?

Praktikum Algorithmen SS14. Fachgebiet Algorithmik

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

affilinet_ Flash-Spezifikationen

Software-Engineering SS03. Zustandsautomat

Erweiterung eines SMIL Players für die Darstellung von Transparenzen und SVG Inhalten

kleines keyword brevier Keywords sind das Salz in der Suppe des Online Marketing Gordian Hense

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Barcode Master. Barcode Generator für PC Windows und MAC OS. Bedienungsanleitung und Handbuch. Version 1.1. Dr.J.Willrodt /

«Integration in WebSite» HTML-/Javascript-Code-Beispiele

Tooldemo: Soot. Softwareanalyse SS 2011 Veranstalter: Prof. Dr. Klaus Ostermann Tillmann Rendel, M.Sc. Von Kim Maurice Nuspl

IT-Basics 2. DI Gerhard Fließ

Kurzeinweisung. WinFoto Plus

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Thüringer Kultusministerium. Abiturprüfung 2000

Raytracing. Schlussbericht. Jonas Lauener 1995, Áedán Christie 1997 Melvin Ott 1997, Timon Stampfli 1997

Erstellen der Barcode-Etiketten:

Einführung Responsive Webdesign

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Projektmanagement in Outlook integriert

Mächtigkeit von WHILE-Programmen

Theoretische Informatik

Grundlagen der Künstlichen Intelligenz

Eigene Suchmaschine erstellen mit Google Eine kurze Anleitung Stand: 28. November 2007

GuiXT und mysap ERP. Regensdorf, April 2004 Dr.Gerhard Rodé, Synactive GmbH

Operationalisierbare Qualitätskriterien für die Programmierung mit Erfahrungen aus PRÜ1 und PRÜ2

Zentralabitur 2017 Informatik

Transkript:

Patrick Simianer Visualisierung regulärer Ausdrücke Patrick Simianer 2010-06-28 Endliche Automaten HS bei Dr. Karin Haenelt Universitiät Heidelberg im Sommersemester 2010

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau Gliederung 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung 3 / 24

Visualisierung regulärer Ausdrücke Wie soll die Visualisierung aussehen? 1 Hervorheben von Matches oder Gruppen in einem String oder Text 2 Darstellung und Simulation anhand eines Automaten 1 Es existieren bereits viele Implementierungen, basierend auf RE-Implementierung der jeweiligen Sprache. Keine step by step -Visualisierung möglich 2 Grafische Umsetzung schwierig, eigene RE-Implementierung nötig Jeder Schritt der Erkennung nachvollziehbar 4 / 24

Visualisierung regulärer Ausdrücke /2 1 Wie können reguläre Ausdrücke möglichst einfach und effizient implementiert werden? Herkömmliche backtracking-methode (Perl, PCRE) Direkte Konstruktion eines endlichen Automaten 2 Soll der Automat dargestellt werden und wenn ja, wie? Ja, im besten Fall mit Animationen... 3 In welcher Umgebung können alle Teile (1. Parser, 2. GUI, 3. Visualisierung) gut implementiert werden? Im Browser (1. JavaScript, 2. HTML, 3. SVG) 5 / 24

Protoypisches Vorgehen 1 Parsen des Ausdrucks 2 Umsetzung in einen nichtdeterministischen endlichen Automaten 3 Übersetzung des NDEA in einen deterministischen endlichen Automaten 4 Grafische Darstellung des Automaten und dessen Simulation durch Animation Umsetzung im Browser: JavaScript (Raphaël für SVG, jquery), HTML+CSS 6 / 24

Stack RegexParser Nfa2Dfa push() pop() atom() factor()... parse() convert() epsclosure() move() NfaState id symbol setnxt() getnxt() Nfa startstate, finalstate concat() union() kleene()... graph node() connection() globals NfaSimulator uifunc ALPHA ttable... * simulate() epsclosure() move() uiparse() uisimulate()... Abbildung: Konkreter System-Aufbau

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung 8 / 24

Grammatik: expr term term expr term factor term factor atom kleene atom literal ( expr ) kleene kleene literal a b c % Recursive Descent-Methode Code: RegexParser. prototype. expr = function () { var nfa = t h i s. term (); i f ( t h i s. trymatch ( )) { r e t u r n nfa. union ( t h i s. expr ()); }; r e t u r n nfa ; }; Nahezu direktes Übersetzen einer Grammatik 1 in den Quelltext des Parsers, top-down (LL(1)) Nichtterminale Funktion, welche die rechte Seite der jeweiligen Regel behandelt Direkte Erzeugung des NDEA, mittels Konstruktion nach Thompson in O( r ) ( r Länge des regulären Ausdrucks) Ergebnis: Automat mit max. 2 r Zuständen, 4 r Transitionen 1 keine Links-Rekursionen, sonst: Endlosschleife 9 / 24

Konstruktion nach Thompson Konkatenation: ab start a b start a Hülle: a* a start Vereinigung: (a b) b 10 / 24

Thompsons Algorithmus: Beispiel Regulärer Ausdruck: a(a b)c* a b c a start 11 / 24

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung 12 / 24

Einleitung Warum den erzeugten NDEA in einen DEA überführen? trade-off : NDEA DEA Platzbedarf 2 r = m, 4 r = n 2 m Erstellungszeit O( r ) O( r 2 2 r ), O( r 3 ) Simulation O( x (m + n)) O( x ) O( x r ) x Länge des Eingabe-Strings; bei Erstellungszeit DEA: links worst-case, rechts der Durchschnitsfall Die hier erzeugten NDEA umfassen für gewöhnlich sehr viele Zustände, die Darstellung eines DEA ist praktikabler 13 / 24

Pseudo-Code -Abschluss e p s c l o s u r e ( dstate ): s t a c k s f o r e a c h nstate in dstate { s. push ( nstate ) } w h i l e s not empty { nstate1 = s. pop () f o r e a c h nstate1 e> nstate2 { i f nstate2 not in dstate { dstate.add( nstate2 ) s. push ( nstate2 ) } } } r e t u r n dstate n f a 2 d f a (NFA): s t a c k s, DFA d s. push ( e p s c l o s u r e ( nfa. start )) d.add( e p s c l o s u r e ( nfa. start )) w h i l e s not empty { dstate1 = s. pop () f o r e a c h ch in ALPHA { dstate2 = move( dstate1, ch) next = e p s c l o s u r e ( dstate2 ) i f next not in DFA { d.add( dstate ch > next ) } } } r e t u r n d a e> b: -Übergang von Z. a nach b; a ch> b: Übergang mit Zeichen ch Formal: p Q : E({p}) = {q Q : p q} (-Abschl. v. a. p aus Q) Simulation des NDEA, oder vollständige Erzeugung eines DEA 14 / 24

NDEA DEA Beispiel Regulärer Ausdruck: (a b)* 0 a 1 start 6 4 5 7 2 b 3

NDEA DEA Beispiel /2 Dfa ID Symbol Dfa ID a {1, 5, 7, 4, 0, 2} {6, 7, 4, 0, 2} b {3, 5, 7, 4, 0, 2} a {1, 5, 7, 4, 0, 2} {1, 5, 7, 4, 0, 2} b {3, 5, 7, 4, 0, 2} a {1, 5, 7, 4, 0, 2} {3, 5, 7, 4, 0, 2} b {3, 5, 7, 4, 0, 2} start {6, 7, 4, 0, 2} a a b {1, 5, 7, 4, 0, 2} {3, 5, 7, 4, 0, 2} b a b

Fragen?

Literatur I Alfred V. Aho, Ravi Sethi, and Jeffrey David Ullman. Compilers. Principles, Techniques & Tools. Addison-Wesley, Reading, Mass. [u.a.], repr. with corr. edition, 1986. Literaturverz. S. 752-779. Russ Cox. Regular Expression Matching Can Be Simple And Fast. 2007. [Online; abgerufen 2010-06-06]. Hans Werner Lang. Algorithmen in Java. Oldenbourg, Wiesbaden, 2006. 18 / 24

Literatur II Gonzalo Navarro and Mathieu Raffinot. Compact dfa representation for fast regular expression search, 2001. K. Thompson. Regular expression search algorithm. Comm. Assoc. Comp. Mach., 11(6):419 422, 1968. Gertjan van Noord. The treatment of epsilon moves in subset construction. In IN FINITE-STATE METHODS IN NATURAL LANGUAGE PROCESSING, ANKARA. CMP-LG/9804003, pages 61 76, 1998. 19 / 24

Ressourcen Raphaël JavaScript SVG Library (http://raphaeljs.com/) jquery JavaScript Library (http://jquery.com/) Scalable Vector Graphics (SVG) 1.1 Specification (http://www.w3.org/tr/svg/) Writing your own regular expression parser (http://www.codeproject.com/kb/recipes/ OwnRegExpressionsParser.aspx) 20 / 24

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung 21 / 24

Demo

1 Einleitung Überlegungen Protoypisches Vorgehen Konkreter Aufbau 2 Einfaches Parsing regulärer Ausdrücke Recursive Descent-Methode Konstruktion nach Thompson Beispiel 3 Überführung NDEA zu einem DEA -Abschluss Beispiel 4 Demo 5 Weiterentwicklung 23 / 24

Weiterentwicklung Vorhanden:,, () Zeichenklassen:., \w, \d, [ ],... Einfach implementierbar, Vorverarbeitung der Eingabe Operatoren: +,?, {m, n},... Ebenfalls durch Vorverarbeitung lösbar, beziehungsweise durch Anpassung des Automaten Lookahead oder lookbehind sind leider nicht ohne Weiteres mit endlichen Automaten zu implementieren, da die zugrunde liegenden Grammatiken nicht mehr regulär wären. 24 / 24