Model4Lang
Model4Lang is an Eclipse based framework for model driven language development and interoperability. Here you will find programming languages and models that define their concrete and abstract syntax. There are also thoughts of modeling a language's semantics but so far I have not made much progress in this area except reading some articles on Attribute Grammar.
The project provides three languages that leverage the Model4Lang framework. Each language comes with an EMF model that defines its abstract syntax and has a JSR 223 Scripting for the Java Platform implementation that makes the language interoperable with Java. All JSR 223 implementations of the languages share a common implementation of JSR 199 Java Compiler API that enables in-memory compilation of Java code.
In the near future, the plan is to add GMF models that generate graphical editors for some of the languages and textual models that generate text editors for source code editing.
Programming Languages
The three languages that leverage the Model4Lang framework are BoolScript, mLambda, and Scheme. BoolScript and mLambda are exemplary languages I designed for this project and you probably have not heard of them elsewhere. Scheme, on the other hand, is a well established functional programming language and I use one of its various implementations called jscheme in this project.
This is the 'Hello World' example that serves to demonstrate the core features of the Model4Lang framework. I wrote an article on BoolScript and how it implements JSR 223. The article is "Build your own scripting language for Java, an introduction to JSR 223". The BoolScript implementation supports all of JSR 223 including Web Scripting.
mLambda is a functional programming language that implements untyped pure Lambda Calculus. It evaluates lambda terms by transforming them into de Bruijn notation to avoid name capture and the need for alpha conversion.
This part of the project has an EMF model that models the abstract syntax of Scheme. It also provides a JSR 223 implementation for one of the various Scheme implementations called jscheme. Currently, the language supports all of JSR 223 except Web Scripting. Work is underway to add support for Web Scripting in the language's implementation.