What is it for?

 Implementing a Domain Specific Languages for small tasks is a common approach. You may want to restrict the user with very specific language to extend and script your system, or your problem area could be well defined using a non-common syntax and semantics, which is not available in your favourite programming language - in such cases you'd better implement your own language. It is quite easy, when you start building languages you will find this work very addictive - but, it is much better to have an appropriate toolset. DSLengine is not a silver bullet, not a universal tool - it is just a demonstration of the approach, based on extending the existing meta-language. Some Scheme versions have this possibility to be extended: Common Lisp-like define-macro feature. DSLengine demonstrates the usage of this feature and a way to implement almost any language you can imagine on top of Scheme - with all the advantages of the existing and mature compiler and runtime environment.

How to get it?

Just download the latest release from the SF project page.

Related stuff?

The recursive descendant parsing is a well known technique, with many mature implementations. I recommend to have a look at the Parsec, which is included in most Haskell implementations. Some ideas about metaprogramming could be gathered from MetaOCaml and Template Haskell.

SourceForge.net Logo