120 likes | 224 Vues
A comparison of tools for developing finite state machines in Java, including functionalities, usability, and limitations of each tool. Explore Finite State Machine Explorer, JFLAP, FSM Simulator, and Dynalab FSA in detail.
E N D
Java – Werkzeuge zur Entwicklung endlicher Automaten HS: Parsing Dr. K. Haenelt SS 2003 Referent: Youssef Sammari SS 2003
Finite State Machine Explorer Finite State Machine Explorervon Matt Chapman • Funktionsumfang • Konstruktion von endlichen Automaten • Umwandlung von nicht-deterministischen in deterministische Automaten • Minimierung von deterministischen Automaten
Finite State Machine Explorer • Ergebnis • Einfach zu bedienen • Laden und Speichern von Automaten möglich • Quellcode verfügbar • Zustände sind nicht beschriftet • Als Eingabesymbole nur Buchstaben und Ziffern möglich • Editieren von Verbindungen bzw. Transitionen nicht möglich
NEA (FSME) Algorihmus zur Erkennung von NEA … public boolean isDeterministic(Logical m ) /* m ist vom Typ Logical, d.h. ein endlicher Automat*/ { Set ta = transitionAlph(m); /* transitionsAlph() gibt Menge des Alphabets an */ for (int i=0; i<m.numStates(); i++) /* numStates() gibt die Anzahl der Zustände an */ { State s = m.stateAt(i); /* state(i) gibt den i-ten Zustand an */ for (int j=0; j<ta.size(); j++) { Character ct = (Character)ta.elementAt(j); char t = ct.charValue(); if (m.transitionSet(s,t).size() > 1) return false; } } return true; } … Matt Chapman: Auszug Quellcode „Finite State Machine Explorer“
JFLAP (J) Formal Languages and Automata Package Version 4.0 Entwickelt unter der Leitung von Susan H. Rodger an der Duke University • Funktionsumfang • Visualisierung, Simulation und Konstruktion verschiedener Automatentypen • Endliche Automaten • Kellerautomaten • Turing-Maschinen • Umwandlung regulärer Ausdrücke in Automaten • Minimierung von endlichen Automaten • Umwandlung endlicher Automaten in reguläre Ausdrücke • Kombinieren von endlichen Automaten
JFLAP • Ergebnis • Sehr großer Funktionsumfang • Speichern und Laden von Automaten möglich • Quellcode verfügbar
FSM Simulator Finite State Machine Simulator Eileen Head Version 1.2.1 • Funktionsumfang • Input (Zeichenfolge) kann auf Akzeptanz von Automat hin überprüft werden
FSM Simulator • Ergebnis • Graphische Konstruktion eines Automaten nicht möglich • Automat muss als „Code“ vorliegen • Minimierung nicht möglich • Umwandlung von NEA in DEA nicht möglich
FSM Simulator Syntax eines Automaten 1. DFA //Type. There MUST be a space before "//" on all the lines 2. --- Beispiel-Automat --- //Title 3. a d e i r s // input alphabet, note such comments are permitted at the end of the line 4. q0 q1 q2 q3 q4 q5 q6 // Machine states 5. q0 // the initial state 6. q2 q4 q5 q6 // final states 7. q0 d q1 // transitions: input state, input symbol, output state 8. q1 a q2 9. q1 i q3 10. q1 e q4 11. q2 s q5 12. q3 e q2 13. q4 r q6 14. q5 e q4 15. end //required Eileen Head: FSM Simulator
Dynalab FSA Dynalab FSAMichael T. Grinder Funktionsumfang - Nur als Java – Applet verfügbar - Graphische Konstruktion von endlichen Automaten
Dynalab FSA • Ergebnis • Für einfache Konstruktion endlicher Automaten gut geeignet • Editieren von Zuständen und Transitionen möglich • Keine Möglichkeit zur Umwandlung von NEA in DEA • Minimierung von DEA nicht möglich
Literatur und Links • FSME • http://www.belgarath.nildram.co.uk/java/fsme.html: Programm-Download, Quellcode, Beispiele und Online-Hilfe • JFLAP • http://www.cs.duke.edu/~rodger/tools/jflap/ : Programm-Download, Beispiele, Online-Dokumentation • http://www.ifi.unizh.ch/cl/broder/jflap/ : Eine Lernumgebung der Universität Zürich mit Beispielen, Übungen und Dokumentation zu JFlap. • http://www.cse.msu.edu/~torng/jflap/ : Eine englischsprachige Seite mit Beispielen zu endlichen Automaten, Kellerautomaten und Turing-Maschinen • http://www.css.tayloru.edu/~btoll/s03/320/res/r/jflap/help.html : Online-Hilfe, Dokumentation und Beispiele zu JFlap (Version 3.1) auf englisch • FSM Simulator • http://www.cs.binghamton.edu/~software/fsm/fsmdoc.html : Programm-Download und Online-Dokumentation mit Beispielen • Dynalab FSA • http://www.cs.montana.edu/~dynalab/fsa/fsa.html : Java-Applet mit Online-Dokumentation und Beispielen