combinatorylogic/mbase: Metaprogramming framework for .net

MBase is a metaprogramming framework built on top of .NET. It is designed for rapid prototyping and high quality implementation of custom programming language compilers, but can also serve as a robust and flexible embeddable scripting engine. Applications are not limited to .NET platform, since MBase can be used to implement compilers targeting other platforms – JVM, LLVM, C, etc.

MBase consists of a core language and a library of micro-DSLs.

The core of MBase is built on top of a Lisp-like language. Its main applications include:

DSL compilers and interpreters implementation;
Intermediate target language for higher level DSL compilers;
Efficient embedded scripting platform.
MBase includes the following micro-DSLs and libraries:

advanced pattern matching;
abstract syntax trees support;
recursive descent parsing;
Lexing and parsing (LL(*));
PEG and Pratt parsing;
embedded Prolog interpreter and compiler;
extensible syntax frontend;
list comprehensions;
XML querying and transforms language;
embedded .NET IL assembler;
.NET bindings builder;
.NET class builder.
Not.NET low level imperative embedded language;
Compiler construction modules:
Generic register allocation
Generic SSA transform and loop analysis
Tarjan algorithm implementation
Embedded ML compiler