2009-11-17 4 views
9

Ich habe einige Domain-spezifische Sprachen entworfen, die ich wahrscheinlich in Clojure implementieren werde, aber ich habe wirklich keine Ahnung, worum es geht.Kennt jemand eine gute Referenz für DSL-Design?

Die Sprachen, die ich im Sinn habe, sollen abstrakte Sprachen sein, die von Domänenexperten mit wenig oder keinem Programmierhintergrund gelesen werden können.

Kennt jemand Tutorials, Bücher oder andere Referenzen, die hilfreich wären?

+3

Eine schnelle Google von "Designing domain specific languages" scheint eine Fülle von Referenzmaterialien, darunter ein einstündiges Video von Google David Pollack (http://video.google.com/videoplay?docid=-8103284744220333344&q = ruby ​​#) – Lazarus

Antwort

7

Sie könnten Martin Fowlers im Entstehen begriffenen Buch Domain Specific Languages mögen. Es ist ein work in progress und vieles davon ist online verfügbar. Es soll sprachunabhängig sein.

Im Folgenden sind einige Präsentationen von RubyConf, die ich nützlich (Konzepte zumindest auf Clojure Karte sollte) gefunden haben:

+0

+1 - David Fowler scheint eine Menge Antworten zu geben, aber ich glaube, er hat aufgehört, das Buch online zu aktualisieren, da er jetzt mit einem Verleger spricht. –

3

Language Implementation Patterns von Terence Parr, der Schöpfer von Antlr und String Template, wohl die besten Werkzeuge zu gen Rate Parser und Lexer.

Das Buch ist derzeit in "Beta", aber es ist immer noch eine gute Lektüre. Wenn Sie es kaufen, erhalten Sie Updates und auch die endgültige Version.

2

Es sieht so aus, als beschreibst du eine externe DSL. Dazu müssen Sie einen Parser einrichten.

Sie haben zwei Möglichkeiten: Schreiben Sie Ihre eigene (was schwierig sein kann) oder verwenden Sie ein vorhandenes System wie ANTLR, um die Grammatik zu definieren. Es ist Java, also sollte es mit Clojure kompatibel sein.