A language independent task engine for incremental name and type analysis

More Info
expand_more

Abstract

This paper is a pre-print of: Guido H. Wachsmuth, Gabriel D.P. Konat, Vlad A. Vergu, Danny M. Groenewegen, Eelco Visser. A Language Independent Task Engine for Incremental Name and Type Analysis. In: Martin Erwig, Richard F. Paige, Eric Van Wyk, editors, Software Language Engineering, Sixth International Conference, SLE 2013, Indianapolis, USA, October, 2013, Revised Selected Papers. Lecture Notes in Computer Science 8225, Springer Verlag 2013. Doi: 10.1007/978-3-319-02654-1_15 DEs depend on incremental name and type analysis for responsive feedback for large projects. In this paper, we present a language-independent approach for incremental name and type analysis. Analysis consists of two phases. The first phase analyzes lexical scopes and binding instances and creates deferred analysis tasks. A task captures a single name resolution or type analysis step. Tasks might depend on other tasks and are evaluated in the second phase. Incrementality is supported on file and task level. When a file changes, only this file is recollected and only those tasks are reevaluated, which are affected by the changes in the collected data. The analysis does neither re-parse nor re-traverse unchanged files, even if they are affected by changes in other files. We implemented the approach as part of the Spoofax Language Workbench and evaluated it for the WebDSL web programming language.