Modular language implementation in Rascal - experience report
Journal article, 2015

All software evolves, and programming languages and programming language tools are no exception. And just like in ordinary software construction, modular implementations can help ease the process of changing a language implementation and its dependent tools. However, the syntactic and semantic dependencies between language features make this a challenging problem. In this paper we detail how programming languages can be implemented in a modular fashion using the RASCAL meta-programming language. RASCAL supports extensible definition of concrete syntax, abstract syntax and operations on concrete and abstract syntax trees like matching, traversal and transformation. As a result, new language features can be added without having to change existing code. As a case study, we detail our solution of the LDTA'11 Tool Challenge: a modular implementation of OBERON-0, a relatively simple imperative programming language. The approach we sketch can be applied equally well to the implementation of domain-specific languages.

Language engineering

Compiler generators

Language workbench

Meta-programming

Modularity

Author

B. Basten

Stichting Centrum voor Wiskunde & Informatica (CWI)

J. van den Bos

Netherlands Forensic Institute

M. Hills

East Carolina University

P. Klint

Institut National de Recherche en Informatique et en Automatique (INRIA)

Stichting Centrum voor Wiskunde & Informatica (CWI)

A. Lankamp

Xebia

B. Lisser

Stichting Centrum voor Wiskunde & Informatica (CWI)

Atze van der Ploeg

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

T. van der Storm

Stichting Centrum voor Wiskunde & Informatica (CWI)

Institut National de Recherche en Informatique et en Automatique (INRIA)

J. Vinju

Stichting Centrum voor Wiskunde & Informatica (CWI)

Institut National de Recherche en Informatique et en Automatique (INRIA)

Science of Computer Programming

0167-6423 (ISSN)

Vol. 114 7-19

Subject Categories

Software Engineering

DOI

10.1016/j.scico.2015.11.003

More information

Latest update

2/1/2022 9