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.


The MetaBorg approach is described in the following papers:


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


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.

Why call it MetaBorg?

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.


MetaBorg is being developed by