Rascal is a domain-specific language for metaprogramming and language oriented programming, such as static code analysis, program transformation, program generation and implementation of domain-specific languages.
[1] It is a general meta language in the sense that it does not have a bias for any particular software language.
It includes primitives from relational calculus and term rewriting.
Its syntax and semantics are based on procedural (imperative) and functional programming.