Compiler generation from denotational semantics

A methodology is described for generating provably correct compilers from denotational definitions of programming languages. An application is given to produce compilers into STM code (an STM or state transition machine is a flow-chart-like program, low-level enough to be translated into efficient code on conventional computers). First, a compiler ϕ: LAMC → STM from a lambda calculus dialect is defined. Any denotational definition Δ of language L defines a map \(\bar \Delta\): L → LAMC, so \(\bar \Delta ^ \circ \varphi\) compiles L into STM code. Correctness follows from the correctness of ϕ.

[1]  John C. Reynolds,et al.  On the Relation between Direct and Continuation Semantics , 1974, ICALP.

[2]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[3]  Peter David Mosses Mathematical semantics and compiler generation , 1975 .

[4]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.

[5]  James W. Thatcher,et al.  More on Advice on Structuring Compilers and Proving them Correct , 1979, Theor. Comput. Sci..

[6]  Raymond Turner,et al.  Compiler generation and denotational semantics , 1979, FCT.

[7]  BackusJohn Can programming be liberated from the von Neumann style , 1978 .

[8]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[9]  Michael J. C. Gordon,et al.  The Denotational Description of Programming Languages , 1979, Springer New York.

[10]  John C. Reynolds,et al.  Definitional Interpreters for Higher-Order Programming Languages , 1972, ACM '72.

[11]  F. Lockwood Morris,et al.  Advice on structuring compilers and proving them correct , 1973, POPL.

[12]  Christopher Strachey,et al.  A theory of programming language semantics , 1976 .

[13]  Joe Stoy,et al.  Denotational Semantics , 1977 .

[14]  Philip A. Collier,et al.  From standard to implementation denotational semantics , 1980, Semantics-Directed Compiler Generation.

[15]  David A. Schmidt Compiler generation from lambda calculus definitions of programming languages , 1981 .