2009-05-10 6 views
2

Ich werde mehr und mehr in die Entwicklung von DSLs gehänselt. Ich habe eine winzige mit F # mit fslex und fsyacc entwickelt, aber die Fehlermeldungen sind ungenau (ich finde auch keine Möglichkeit, bessere zu erzeugen, es scheint nur wenig Dokumentation darüber zu geben, wie man mit Fehlerfällen umgeht) und die Tatsache, dass Sie werden UNICODE-Zeichenfolgen nicht angemessen parsen, was für mich nicht akzeptabel ist. Lange Rede kurzer Sinn, ich suche nach Tools, die es ziemlich einfach machen, ein DSL zu entwickeln (die Visual Studio Tools dafür sind wirklich nichts wie das, wonach ich suche) und ich interessiere mich am meisten für den Parsing/AST Generation Teil. Ich habe ANTLR angeschaut und die Code- und Grammatikdefinitions-Metasprache verwechselt, die mir schlecht erscheinen, also bitte erwähnen Sie es nicht oder Lösungen, die unter einem ähnlichen Problem in den Antworten leiden. Außerdem habe ich gesehen, dass es ein paar Sachen für eine Sprache namens Boo gibt, aber ich bin wirklich nicht daran interessiert, mit einer anderen Sprache (besonders wenn sie wenig Unterstützung hat) zu spielen, so dass das auch nicht passt. Jeder andere Vorschlag wird geschätzt, solange er anständig dokumentiert ist, mit .NET gut funktioniert und nicht zuletzt die Verwendung einer dynamisch typisierten Sprache oder die Verwendung des DLR beinhaltet.Tools zum Aufbau einer DSL in .NET

+2

Warum wird das -2 heruntergeregelt? Stimmt etwas nicht mit dieser Frage? – 7wp

Antwort

2

Sie möchten mit Oslo arbeiten. Es enthält die Tools zur Definition der DSL und Werkzeuge zur Definition von Grammatiken über DSL. Die Grammatiken können entweder einen AST oder irgendetwas anderes ausgeben.

Eine Art von Ausgabe, die es von der DSL generieren kann, ist ua ein entsprechendes SQL Server-Schema. Instanzen der DSL können daher in SQL Server Express (oder höher) gespeichert werden.

Oslo ist Teil einer größeren Vision, die Microsoft hat, aber Sie können das ignorieren und einfach mit dem "DSL" -Teil beginnen.

Ich empfehle, dass Sie beginnen und aktiv werden, indem Sie Microsoft wissen lassen, was Sie mögen und nicht mögen. Sie haben jetzt ihre Aufmerksamkeit, ob Sie es wissen oder nicht.

+0

Wirklich, warum ein Downvote? Es ist eine gute Antwort. Außerdem habe ich gerade gemerkt, dass ich mir Oslo besorgen muss. Oder ist es M # ?. –

+1

+1 einfach, weil ich hasse eine anständige Antwort mit -1 und keinen Grund zu sehen, warum es abgelehnt wurde. Du solltest wieder da sein wo du jetzt angefangen hast :) – Jay

+0

Danke. Ich werde auch die Antwort löschen, da der DSL-Teil von Oslo nicht so aussieht, als ob er veröffentlicht wird. –

2

Vielleicht könnten Sie Oslo einen Versuch geben. Persönlich habe ich es noch nicht benutzt, aber die Beispiele sehen ziemlich interessant aus.

„Oslo“ besteht aus: Ein Tool, das die Menschen definieren und die Interaktion mit Modellen in einer reichen und visuelle Weise Eine Sprache hilft, die Menschen erstellen und verwenden Textdomänenspezifische Sprachen und Datenmodelle Ein relationales Repository hilft Dadurch werden Modelle sowohl für Werkzeuge als auch für Plattformkomponenten verfügbar.

Here ist eine Art allgemeiner Überblick!

2

Sie können immer noch auf den Quellcode von Boo schauen, um zu sehen, wie sie Dinge machen. Sie verwenden auch ANTLR, um den Parser zu generieren. Sie brauchen keinen Code mit ANTLR-Grammatiken zu mischen - er kann als vollständig beschreibend nützlich sein, solange es eine LL (*) - Sprache ist.

+1

wirklich, ich sagte, ich bin * nicht * interessiert an beiden Boo und ANTLR, so bare mit mir, wenn ich dies geben ein -1 – em70

+3

Sie sagten, dass Sie nicht daran interessiert waren, Boo als Sprache oder Mischcode mit ANTLR Grammatiken zu verwenden aber ich sehe nicht, wie dies die Verwendung von geraden ANTLR-Grammatiken und das Betrachten des Quellcodes von Boo ausschließt. –

1

Irony - bei [email protected] liegt vielleicht eine gute Lösung für Sie - Sie Ihre Grammatik unter Verwendung der integrierte Funktionalität von .NET langauges bauen kann stattdessen zu versuchen, BNF Grammatikdateien separat zu erstellen.