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: * [[Concrete Syntax for Objects]] about JavaBorg (OOPSLA'04) * [[http://www.cs.uu.nl/wiki/Visser/MetaBorgInAction][MetaBorg in Action]] (GTTSE'05) * [[Meta programming with concrete object syntax]] about concrete syntax in Stratego (GPCE'02) * [[Retrofitting the AutoBayes program synthesis system with concrete syntax]] about concrete syntax in Prolog * [[http://www.cs.uu.nl/wiki/Visser/GeneralizedTypeBasedDisambiguationOfMetaProgramsWithConcreteObjectSyntax][Generalized type-based disambiguation of meta programs with concrete object syntax]] (GPCE'05) -----+++ 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][Java-Swul]] (embedding of Swing user interface language) * Prolog * Embedded languages: ABIR (AutoBayes Intermediate Representation) * See: PrologTools -------+++ Implementation A generic implementation for parsing with concrete syntax is provided in the * [[concrete syntax package]] 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. * JavaBorg * PrologTools -----+++ 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 [[http://www.startrek.com/startrek/view/library/aliens/article/70558.html][read on]]. -----+++ Authors MetaBorg is being developed by * [[Main.MartinBravenboer][Martin Bravenboer]] * [[Main.EelcoVisser][Eelco Visser]]