|
|
Implementation Technqiues for Domain-Specific Languages
Domain Specific Languages are a hot topic these days. As usual when something
is hot and new, there's great confusion about the concepts and the details and
various sub-communities form.
In this talk I want to provide an overview over the most important approaches
to implementing domain specific languages. I will show examples of each of the
approaches.
(-) dynamic internal DSLs, where the DSL is embedded in a host language and
runtime meta programming is used for implementation. Clearly the most
prominent example is Ruby.
(-) compiled internal DSLs, where compile time metaprogramming or other
language features are used to implement the language. Exampls include
Converge and Scala.
(-) external DSLs using textual or graphical syntax using a generative
or interpretative backend. Examples include the Eclipse/oAW world and
tools such as MetaEdit+
Finally I talk about what the concept of Language Workbenches adds to the
notion of DSLs and I will illustrate some of this using Intentional's approach
to the topic, introducing the idea of projectional editors along the way.
|