Rascal is a meta-programming language that combines a familiar Java-like syntax with a powerful collection of built-in data types and language features, including relations with relational algebra operators, extensive support for pattern matching, higher-order functions, and fix-point computation. Rascal is currently being used to develop program analysis tools for languages such as Java, PHP, and Lua; to create domain-specific languages for domains such as gaming and digital forensics; to create large-scale program transformations; and to extract metrics across large collections of software systems.

In this tutorial, we will first create a small language and define several elementary operations, like counting operator uses and performing simple program transformations. Next we will introduce the Metrics Meta Model (M3), which models information related to source code, and show how it can be used to define operations on Java and PHP such as measuring methods per class, counting cast statements, measuring if-nesting and computing the McCabe complexity. Finally, we will sketch a larger scale program transformation on real Java code: how to convert code using the visitor pattern into code that uses the interpreter pattern. The tutorial concludes with a brief sketch of current and future developments of the Rascal language and its ecosystem.

Sat 13 Jun

pldi2015-workshops
14:00 - 15:30: Tutorials - RASCAL: Program Analysis and Transformation with Rascal at B112
pldi2015-workshops14:00 - 15:30
Talk
Mark HillsEast Carolina University, Paul Klint, Jurgen VinjuCentrum Wiskunde & Informatica / Technische Universiteit Eindhoven
Link to publication
pldi2015-workshops
16:00 - 18:00: Tutorials - RASCAL: Program Analysis and Transformation with Rascal at B112
pldi2015-workshops16:00 - 18:00
Talk
Mark HillsEast Carolina University, Paul Klint, Jurgen VinjuCentrum Wiskunde & Informatica / Technische Universiteit Eindhoven
Link to publication