Implementing the Kastens-Waite Algorithm for Name Analysis in Rascal
Rascal is a metaprogramming language and language workbench. One of the goals of Rascal is to allow the effective and efficient definition of domain-specific languages (DSLs) and their IDEs. Central elements of IDE support are "jump-to-definition" and error marking. A key component of those features is name analysis: linking uses of identifiers to their declarations.
Recently, Kastens and Waite published a paper Name analysis for modern languages: a general solution (SPE, 2017) containing a generic and extensible algorithm for doing name analysis.
The goal of this project is to implement this algorithm in Rascal so that it can be reused for different kinds of languages (programming languages, DSLs, etc.). In particular the project consists of the following tasks:
- Representing scope graphs using Rascal's built-in relations.
- Ensuring the algorithm is extensible so that language specific lookup policies can be supported.
- Evaluating the algorithm on one or more languages that have already been implemented in Rascal.
Contact: Tijs van der Storm.