Incorporating static analysis in a combinator-based compiler (Q1823653)

From MaRDI portal

!

This is the item page for this Wikibase entity, intended for internal use and editing purposes. Please use the normal view instead:

scientific article; zbMATH DE number 4115922
Language Label Description Also known as
default for all languages
No label defined
    English
    Incorporating static analysis in a combinator-based compiler
    scientific article; zbMATH DE number 4115922

      Statements

      Incorporating static analysis in a combinator-based compiler (English)
      0 references
      0 references
      0 references
      1989
      0 references
      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.
      0 references
      compilers
      0 references
      semantic analysis
      0 references
      optimization
      0 references
      denotational semantics
      0 references

      Identifiers