Rascal Programming language
The Rascal Language
Rascal is the metaprogramming language of choice that we use in our projects. Rascal integrates source code analysis, transformation, and generation primitives on the language level. It can be used for any kind of metaprogramming task: to construct parsers for programming languages, to analyze and transform source code, or to define new DSLs with full IDE support. Rascal is a programming language: metaprograms can be created by, understood by, and debugged by programmers.
Rascal in a nutshell
Rascal primitives include immutable data, context-free grammars and algebraic data-types, relations, relational calculus operators, advanced patterns matching, generic type-safe traversal, comprehensions, concrete syntax for objects, lexically scoped backtracking, and string templates for code generation. It has libraries for integrating language front-ends, for reusing analysis algorithms, for getting typed meta-data out of version management systems, for interactive visualization, etc.
See Rascal website.