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

Displayed time zone: Tijuana, Baja California change

14:00 - 15:30
RASCAL: Program Analysis and Transformation with RascalTutorials at B112
14:00
90m
Talk
RASCAL: Program Analysis and Transformation with Rascal
Tutorials
Mark Hills East Carolina University, Paul Klint , Jurgen Vinju Centrum Wiskunde & Informatica / Technische Universiteit Eindhoven
Link to publication
16:00 - 18:00
RASCAL: Program Analysis and Transformation with RascalTutorials at B112
16:00
2h
Talk
RASCAL: Program Analysis and Transformation with Rascal
Tutorials
Mark Hills East Carolina University, Paul Klint , Jurgen Vinju Centrum Wiskunde & Informatica / Technische Universiteit Eindhoven
Link to publication