Incorporating static analysis in a combinator-based compiler
The denotational definition of a programming language typically specifies the runtime behaviour of the language constructs. Therefore, such a definition may be easily translated into an interpreter. This implementation may be inefficient, but it is guaranteed to be correct with respect to the formal definition. An example of such a method is the so-called ``combinator-based compiling method: source programs are translated into trees of combinators. Three techniques are studied how restructuring a denotational definition can lead to a more efficient interpreter: (1) Static replacement converts run-time type checking operations into static ones. (2) Factoring rearranges the semantic clauses so that static type checking is performed prior to dynamic interpretation. (3) Finally, a continuation semantics is written in combinator terms, and associative properties may be used to rotate the trees. The technique is illustrated by applying it to a simple expression language EL. In a special section, the authors discuss an imperative language with loops. The paper shows that a program improvement technique used by realistic compilers can be rigorously described in a denotational framework.
- On the complexity analysis of static analyses
- A practical approach to compiler construction
- Analysing and Compiling Coroutines with Abstract Conjunctive Partial Deduction
- Improving the static analysis of embedded languages via partial evaluation
- Rewriting Approximations for Fast Prototyping of Static Analyzers
- Compiler design. Syntactic and semantic analysis
- Component approach for construction of optimizing compilers
- A denotational framework for data flow analysis
- A new implementation technique for applicative languages
- A structured approach to static semantics correctness
- A theory of type polymorphism in programming
- Deriving Target Code as a Representation of Continuation Semantics
- scientific article; zbMATH DE number 3793435 (Why is no real title available?)
- scientific article; zbMATH DE number 3557184 (Why is no real title available?)
- scientific article; zbMATH DE number 3640837 (Why is no real title available?)
- Loops in combinator-based compilers
- Program transformations in a denotational setting
- The denotational semantics of programming languages
- Towards a formal description of Ada
- Combinator-based compilation of recursive functions with different parameter passing modes
- Loops in combinator-based compilers
- scientific article; zbMATH DE number 3960977 (Why is no real title available?)
- scientific article; zbMATH DE number 2036332 (Why is no real title available?)
- Rewriting Approximations for Fast Prototyping of Static Analyzers
This page was built for publication: Incorporating static analysis in a combinator-based compiler
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q1823653)