Meta Borg
Stratego -- Strategies for Program Transformation
MetaBorg is a method for providing
concrete syntax for domain abstractions to
application programmers. The method consists of
embedding domain-specific languages in a general purpose host language and
assimilating the embedded domain code into the surrounding host code. Instead of extending the implementation of the host language, the assimilation phase implements domain abstractions in terms of existing APIs leaving the host language undisturbed. Indeed,
MetaBorg can be considered a method for promoting APIs to the language level.
Publications
The MetaBorg approach is described in the following papers:
Instantiations
The MetaBorg approach has been instantiated for the following host and embedded languages:
- Stratego
- Embedded languages: Stratego, Java, XML, Tiger, ...
- See: Concrete syntax in Stratego
- Java
- Embedded languages: Java, XML, Swul (Swing user interface language), regular expressions
- See: JavaJava (Java in Java), JavaBorg (various small samples, e.g XML), Java-Swul (embedding of Swing user interface language)
- Prolog
Implementation
A generic implementation for parsing with concrete syntax is provided in the
in the StrategoXT distribution. Concrete syntax is support is built into the
Stratego compiler. For Java and Prolog we have built pre-processors that
transform Java/Prolog programs with concrete syntax into pure Java/Prolog
programs.
MetaBorg provides generic technology for allowing a host language (collective) to incorporate and assimilate external domains (cultures) in order to strengthen itself. The ease of implementing embeddings makes resistance futile.
If you still don't get it you should probably read on.
Authors
MetaBorg is being developed by