Compiler generation from denotational semantics

25Citations
Citations of this article
17Readers
Mendeley users who have this article in their library.

This article is free to access.

Abstract

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 (Formula presented.): L → LAMC, so (Formula presented.) compiles L into STM code. Correctness follows from the correctness of ϕ. The algebraic framework of Morris, ADJ, etc. is used. The set of STMs is given an algebraic structure so any (Formula presented.) may be specified by giving a derived operator on STM for each syntax rule of L. This approach yields quite redundant object programs, so the paper ends by describing two flow analytic optimization methods. The first analyzes an already-produced STM to obtain information about its runtime behaviour which is used to optimize the STM. The second analyzes the generated compiling scheme to determine runtime properties of object programs in general which a compiler can use to produce less redundant STMs.

Cite

CITATION STYLE

APA

Jones, N. D., & Schmidt, D. A. (1980). Compiler generation from denotational semantics. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 94 LNCS, pp. 70–93). Springer Verlag. https://doi.org/10.1007/3-540-10250-7_19

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free