Guido Wachsmuth, Gabriël Konat, Vlad A. Vergu, Danny M. Groenewegen, Eelco Visser. A Language Independent Task Engine for Incremental Name and Type Analysis. Technical Report TUD-SERG-2013-018, Delft University of Technology, Delft, The Netherlands, October 2013.
IDEs 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.