Source Code Analysis, Visualization, Transformation and Generation
The domain of Rascal is meta programming. Any program that takes another program --- as input, or produces it as output, or both --- is a meta program. If the output of a Rascal program is not a program, it could be anything else, such as a visualization or metrics. If the input of a Rascal program is not a program it could also be anything else, such as an XMI file or a domain model.
We refer to the Documentation
for a more in-depth analysis of the domain of Rascal.