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.
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.