Rascal is a general-purpose programming language for metaprogramming: analyzing, transforming, and generating code. It also supports implementing domain-specific languages. section 15.4.1
Rascal provides first-class support for:
- Grammars for defining language structure. section 15.4.1
- Abstract-syntax-tree traversal for analyzing and transforming code. section 15.4.1
- String templates for generating code. section 15.4.1
