Extended version of the OOPSLA '20 paper "Knowing When to Ask". Abstract: There is a large gap between the specification of type systems and the implementation of their type checkers, which impedes reasoning about the soundness of the type checker with respect to the specification. A vision to close this gap is to automatically obtain type checkers from declarative programming language specifications. This moves the burden of proving correctness from a case-by-case basis for concrete languages to a single correctness proof for the specification language. This vision is obstructed by an aspect common to all programming languages: name resolution. Naming and scoping are pervasive and complex aspects of the static semantics of programming lan...
Scope graphs are a promising generic framework to model the binding structures of programming langua...
Fast analysis response times in IDEs are essential for a good editor experience. Incremental type-ch...
Scope graphs provide a way to type-check real-world programming languages and their constructs. A pr...
There is a large gap between the specification of type systems and the implementation of their type ...
There is a large gap between the specification of type systems and the implementation of their type ...
To warrant programmer productivity, type checker results should be correct and available quickly. Co...
Compilers that can type check compilation units in parallel can make more efficient use of multi-cor...
To warrant programmer productivity, type checker results should be correct and available quickly. Co...
Traditional type-checking programs are typically designed for specific programming languages, re- su...
Static name binding (i.e., associating references with appropriate declarations) is an essential asp...
We extend and combine two existing declarative formalisms, the scope graphs of Neron et al. and type...
This paper investigates the viability of using scope graphs to implement type checkers for programmi...
Fast analysis response times in IDEs are essential for a good editor experience. Incremental type-ch...
Recently scope graphs were introduced as a formalism to specify the name binding structure of a prog...
Compilers that can type check compilation units in parallel can make more efficient use of multi-cor...
Scope graphs are a promising generic framework to model the binding structures of programming langua...
Fast analysis response times in IDEs are essential for a good editor experience. Incremental type-ch...
Scope graphs provide a way to type-check real-world programming languages and their constructs. A pr...
There is a large gap between the specification of type systems and the implementation of their type ...
There is a large gap between the specification of type systems and the implementation of their type ...
To warrant programmer productivity, type checker results should be correct and available quickly. Co...
Compilers that can type check compilation units in parallel can make more efficient use of multi-cor...
To warrant programmer productivity, type checker results should be correct and available quickly. Co...
Traditional type-checking programs are typically designed for specific programming languages, re- su...
Static name binding (i.e., associating references with appropriate declarations) is an essential asp...
We extend and combine two existing declarative formalisms, the scope graphs of Neron et al. and type...
This paper investigates the viability of using scope graphs to implement type checkers for programmi...
Fast analysis response times in IDEs are essential for a good editor experience. Incremental type-ch...
Recently scope graphs were introduced as a formalism to specify the name binding structure of a prog...
Compilers that can type check compilation units in parallel can make more efficient use of multi-cor...
Scope graphs are a promising generic framework to model the binding structures of programming langua...
Fast analysis response times in IDEs are essential for a good editor experience. Incremental type-ch...
Scope graphs provide a way to type-check real-world programming languages and their constructs. A pr...