Lego Turing Machine
Davy Landman and Jeroen van den Bos build a Turing machine from Lego:
http://www.legoturingmachine.org in honour of the Turing centennial.
Together with the Lego machine, they used Rascal to construct an IDE for a small language and a compiler to a minimal instruction set that is run on the Lego NXT brick.
Derric - a domain specific language for digital forensics
Jeroen van den Bos implemented the domain-specific language Derric for
the specification of data structures in digital forensics. Rascal was
used to construct the parser, the compiler to Java and a prototype
Eclipse IDE. See the 2011 ICSE publication "Bringing Domain-Specific
Languages to Digital Forensics" by Jeroen van den Bos and Tijs van der
Storm.
This application intensively uses the syntax definition feature of
Rascal, as well as the expressive string template feature to generate
Java code.
Prototyping an extension to JML
In
"Prototyping a tool environment for run-time assertion checking in JML with communication histories" by Stijn de Gouw et al., Rascal and ANTLR were used to extend JML with communication histories specified by attribute grammars.
This prototype parses Java and
ANTLR code, weaves tracing aspects into Java code and generates glue Java code.
SIG maintainability model and metric visualization
In the course
Software Evolution the students each implemented metric and aggregation tools that implement the SIG maintainability model for Java code. In a second exercise the metric data was visualized.
Most students used the Rascal library interface to Eclipse JDT to obtain meta data about Java code. Rascal's regular expressions and relation and map operators were also popular. The visualizations were constructed using Rascal's Figure combinators.
Infer Generic Type Arguments for Featherweight Generic Java
Jurgen Vinju implemented this complex refactoring to test and evaluate the initial design of Rascal. The implementation of the refactoring is about as big as their definitions as inference rules and the surrounding text in the papers about FGJ and this refactoring. See the SCAM 2009 publication on the
Documentation page.
This application intensively uses pattern matching, relational calculus operators, fixed point computation and maps. It is currently broken due to language evolution.
Rascal itself
The Rascal grammar, the parser generator and the static (type) checker (by Mark Hills) are implemented in Rascal. Part of the Eclipse IDE for Rascal is generated and instantiated using the Rascal code for Rascal as well.
These applications are very pattern matching and visitor intensive.
Rascal also offers a number of libraries that are written using a combination of Rascal and Java code. Examples include bindings for repository models (subversion, svn and git) that Waruzjan Shahbazian wrote and the Figure combinator library for visualization by Paul Klint.
These library modules are usually very data centric, providing abstract data types and syntax definitions for data representation and exchange.