2009-05-16 17 views
4

Ich möchte ein Dienstprogramm, das ich ein Stück Text (in einem Textfeld) geben und mit einer Parser-Grammatik (durch Bearbeiten einer BNF ähnlich) und Token-Struktur während experimentieren kann Ich kann sehen, wie der Parse-Baum aussehen würde (und wenn es nicht in der Lage ist, den Text mit meiner aktuellen Grammatik zu analysieren, würde ich sehen, wo es angehalten wurde).Suche nach einem interaktiven Dienstprogramm zum Erstellen kontextfreier Parsergrammatik

Das Schlüsselwort ist Interaktivität. Ich könnte das zum Beispiel mit Flex und Bison machen, aber ich müsste meinen Lexer und Parser ständig neu erstellen.

Gibt es so etwas da draußen? Ich habe keine gefunden. Idealerweise sollte es unter Linux funktionieren und frei sein. Wenn das keine Option ist, ist es immer noch von Interesse.

+0

Dies ist ein Werkzeug, das für mich nützlich sein würde. Wenn Sie in meiner Antwort die Route hinunter gehen, kann ich Ihnen meine E-Mail geben und wir könnten zusammenarbeiten. Wäre großartig für schnelle Grammatiktests. –

+0

Ich fand dies, http://jscc.jmksf.com/jscc_on_web.png angefügt, um zu antworten. –

Antwort

5

man könnte es mit pyBison und Freunde gtksourceview

Ich habe mit klopfen nichts gesehen, aber man konnte ein Programm schreiben, dies zu tun, wenn man wollte. Ich würde entweder die Quelle von Bison auf ein DSO portieren, so dass Sie es laden und Ihre BNF durch es laufen lassen und die Automaten-Tabellen herausziehen können. Bringen Sie dann bei der Auswertung auf eine GTK-Source-View Textbox

- oder -

erstellen Frontend (gtksourceview gut scheint wieder) und befestigen, dass einige Systemaufrufe Ihre flex.c zu schreiben und Bison .c und formt ein gemeinsames Objekt output.so, das dann in die App geladen und entladen wird, wo Sie dann eine Quelle ausführen können.

Was ich tendiere, wenn ich eine Grammatik entwickle, ist pyBison und andere Hochsprachenwerkzeuge, um die Geschwindigkeit der Entwicklung zu erhöhen. Verwenden Sie dann später C/Flex/Bison mit .l- und .y-Dateien. GTK sollte in Python wirklich einfach zu verwenden sein, um das Obige ohne die Notwendigkeit von DSOs und dlopen() fandango zu erreichen.

Ganz ähnlich wie bei einem Read-Eval-Print-Schleife, wobei die BNF und Test Syntax in einer Schleife sind mit einigen Back-End-D/NFA-Generatoren

einige Zeit später

ich diese andere Frage zu beantworten gefunden :

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 verwenden, um Ihre C-Grammatiken zu debuggen, da sie sowieso alle BNF sind! Ich werde es sicher benutzen.

+0

Hallo! Tut mir leid, dass ich bis jetzt nicht zu dir zurück gekommen bin. Das ist eine Freizeitbeschäftigung und die Dinge waren ziemlich hektisch bei der Arbeit. :-) Ich glaube nicht, dass ich Zeit habe, zu einem Projekt wie diesem beizutragen, mir könnte auch das Wissen fehlen, da ich nur ein bisschen Python ausprobiert habe und noch nie etwas mit GTK gemacht habe.Aber es ist eine nette Idee, ich wünschte, ich hätte mehr Zeit, um in Hobbyprojekte zu investieren. Das Tool, das Sie verknüpft haben, scheint gut genug zu sein! Ich habe es noch nicht getestet, aber ich freue mich darauf! Danke für die Antwort! –

+0

@Kent - Keine Sorge, warte auf dieses;) das Werkzeug sieht ziemlich cool aus. Habe es erst gestern gefunden: P Viel Glück! –

4

ANTLRWORKS (http://www.antlr.org/works/index.html) ist die beste Entwicklungsumgebung für interaktive Grammatik, die ich bisher gesehen habe. Sie können LL (*) Grammatiken in ANTLR visualisieren und debuggen.