Rascal: From Algebraic Specification to Meta-Programming

Algebraic specification has a long tradition in bridging the gap between specification and programming by making specifications executable. Building on extensive experience in designing, implementing and using specification formalisms that are based on algebraic specification and term rewriting (namely ASF and ASF+SDF), we are now focusing on using the best concepts from algebraic specification and integrating these into a new programming language: RASCAL. This language is easy to learn by non-experts but is also scalable to very large meta-programming applications. We explain the algebraic roots of RASCAL and its main application areas: software analysis, software transformation, and design and implementation of domain-specific languages. Some example applications in the domain of Model-Driven Engineering (MDE) are described to illustrate this.

[1]  Claude Kirchner,et al.  An overview of ELAN , 1998, WRLA.

[2]  Paul Klint Using Rscript for Software Analysis , 2008 .

[3]  Paul Klint,et al.  EASY Meta-programming with Rascal , 2009, GTTSE.

[4]  Paul Klint,et al.  A meta-environment for generating programming environments , 1989, TSEM.

[5]  Richard C. Holt Grokking Software Architecture , 2008 .

[6]  Arie van Deursen,et al.  Language Prototyping: An Algebraic Specification Approach , 1996, AMAST Series in Computing.

[7]  Hendrikus J. S. Basten,et al.  Tracking Down the Origins of Ambiguity in Context-Free Grammars , 2010, ICTAC.

[8]  Stanley M. Sutton,et al.  Accelerating the creation of customized, language-Specific IDEs in Eclipse , 2009, OOPSLA.

[9]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[10]  Chucky Ellison,et al.  Matching Logic: An Alternative to Hoare/Floyd Logic , 2010, AMAST.

[11]  Paul Klint,et al.  The syntax definition formalism SDF—reference manual— , 1989, SIGP.

[12]  Narciso Martí-Oliet,et al.  All About Maude - A High-Performance Logical Framework, How to Specify, Program and Verify Systems in Rewriting Logic , 2007, All About Maude.

[13]  Jan A. Bergstra,et al.  Algebraic specification , 1989 .

[14]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[15]  Paul Klint,et al.  Using The Meta-Environment for Maintenance and Renovation , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[16]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[17]  Dirk Beyer,et al.  Relational programming with CrocoPat , 2006, ICSE.

[18]  Terence Parr,et al.  LL(*): the foundation of the ANTLR parser generator , 2011, PLDI '11.

[19]  Frank Budinsky,et al.  Eclipse Modeling Framework , 2003 .

[20]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[21]  Paul Klint,et al.  Efficient annotated terms , 2000, Softw. Pract. Exp..

[22]  Christoph M. Hoffmann,et al.  Programming with Equations , 1982, TOPL.

[23]  Grigore Rosu,et al.  An overview of the K semantic framework , 2010, J. Log. Algebraic Methods Program..

[24]  Richard C. Holt WCRE 1998 Most Influential Paper: Grokking Software Architecture , 2008, 2008 15th Working Conference on Reverse Engineering.

[25]  Joseph A. Goguen,et al.  Some design principles and theory for OBJ-O, a language to express and execute algebraic specification for programs , 1978, Mathematical Studies of Information Processing.

[26]  MeseguerJosé Conditional rewriting logic as a unified model of concurrency , 1992 .

[27]  Arie van Deursen,et al.  The Asf+Sdf Meta-Environment: a Component-Based Language Development Environment , 2001, LDTA@ETAPS.

[28]  Paul Klint,et al.  Term rewriting with traversal functions , 2003, TSEM.

[29]  Arie van Deursen,et al.  Industrial Applications of ASF+SDF , 1996, AMAST.

[30]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[31]  Paul Klint,et al.  RLSRunner: Linking Rascal with K for Program Analysis , 2011, SLE.

[32]  Grigore Rosu,et al.  A Rewriting Logic Semantics Approach to Modular Program Analysis , 2010, RTA.

[33]  James R. Cordy,et al.  Excerpts from the TXL Cookbook , 2009, GTTSE.

[34]  Tijs van der Storm,et al.  RASCAL: A Domain Specific Language for Source Code Analysis and Manipulation , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[35]  Tijs van der Storm,et al.  Bringing domain-specific languages to digital forensics , 2011, ICSE.

[36]  Eelco Visser,et al.  Syntax definition for language prototyping , 1997 .