Ich suche ein interaktives Dienstprogramm für kontextfreie Grammatiken Parser Erstellen
-
22-08-2019 - |
Frage
würde ich ein Dienstprogramm wie das ich ein Stück Text (in einem Textfeld) und Experiment mit einem Parser Grammatik (durch Bearbeitung eines BNF ähnlichen) und Token-Struktur, während ich sehen kann, geben kann, wie der Parsing-Baum aussehen würde ( und wenn sie nicht in der Lage sind, den Text mit meiner aktuellen Grammatik zu analysieren, würde ich sehen, wo er angehalten).
Das Schlüsselwort ist Interaktivität. Ich könnte dies zum Beispiel Flex und Bison tun, aber ich würde ständig meine Lexer und Parser neu erstellen müssen.
Gibt es so etwas gibt? Ich habe keine gefunden. Im Idealfall sollte es in Linux arbeiten und frei sein, wenn das keine Option ist immer noch davon ist Interesse.
Lösung
Sie könnte es mit pyBison und Freunde mit gtksourceview
klopfenIch habe nichts gesehen, aber man konnte ein Programm schreiben, dies zu tun, wenn man will. Ich würde entweder Port die Quelle von Bison zu einem DSO, so dass Sie es laden und Ihre BNF durch sie ausführen und die Automaten Tabellen herausziehen. Bringen Sie dann bei der Auswertung auf eine GTK-Source-View-Textbox
- oder -
Erstellen Sie einen Frontend (gtksourceview gut scheint wieder) und befestigen, dass bis zu einem gewissen System ruft Ihren flex.c und bison.c zu schreiben, und bildet ein gemeinsames Objekt output.so die dann in die App geladen und entladen, wo Sie dann einige Quelle durchlaufen.
Was ich neige dazu, wenn zu tun, um eine Grammatik zu entwickeln verwenden ist pyBison und andere High-Level-Sprache Tools, um die Geschwindigkeit der Entwicklung zu erhöhen. Verwenden Sie dann C / Flex / Bison mit von .l und .y später Dateien. GTK sollte einfach sein, in Python zu verwenden, die oben ohne die Notwendigkeit für DSOs und dlopen () Fandango zu erreichen.
Ganz ähnlich eine Read-Eval-Druckschleife, wobei die BNF-Syntax und Test in einer Schleife ist mit einigen backend D / NFA Generatoren
einige Zeit später
Ich fand diese Beantwortung einer anderen Frage:
http://jscc.jmksf.com/jscc_on_web.png
Es ist ein JavaScript Yacc / Bison artiges Werkzeug für Parser in JavaScript zu erzeugen. Sie könnten dies leicht Ihre C Grammatiken verwenden zu debuggen, da sie alle BNF sowieso sind! Ich werde es sicher verwendet werden.
Andere Tipps
ANTLRWorks ( http://www.antlr.org/works/index.html) ist die beste interaktive Grammatik-Entwicklungsumgebung die ich bisher gesehen habe. Es ließ uns Sie visualisieren und Debug-LL (*) in ANTLR geschrieben Grammatiken.
Hier finden Sie aktuelle VisualBNF