Normal form approach to compiler design

This paper demonstrates how reduction to normal form can help in the design of a correct compiler for Dijkstra's guarded command language. The compilation strategy is to transform a source program, by a series of algebraic manipulations, into a normal form that describes the behaviour of a stored-program computer. Each transformation eliminates high-level language constructs in favour of lower-level constructs. The correctness of the compiler follows from the correctness of each of the algebraic transformations.

[1]  C. A. R. Hoare,et al.  Laws of programming , 1987, CACM.

[2]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[3]  C. A. R. Hoare,et al.  Data Refinement Refined , 1986, ESOP.

[4]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[5]  Ralph-Johan Back,et al.  Refinement Calculus, Part I: Sequential Nondeterministic Programs , 1989, REX Workshop.

[6]  Carroll Morgan Data Refinement by Miracles , 1988, Inf. Process. Lett..

[7]  Augusto Sampaio An Algebraic Approach to Compiler Design , 1993, AMAST Series in Computing.

[8]  Ralph-Johan Back,et al.  Refinement Calculus, Part II: Parallel and Reactive Programs , 1989, REX Workshop.

[9]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.

[10]  C. A. R. Hoare,et al.  Prespecification in Data Refinement , 1987, Inf. Process. Lett..

[11]  Joseph M. Morris,et al.  A Theoretical Basis for Stepwise Refinement and the Programming Calculus , 1987, Sci. Comput. Program..

[12]  Greg Nelson,et al.  A generalization of Dijkstra's calculus , 1989, ACM Trans. Program. Lang. Syst..

[13]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[14]  Paul H. B. Gardiner,et al.  Reasoning Algebraically about Recursion , 1992, Sci. Comput. Program..

[15]  C. A. R. Hoare,et al.  The Weakest Prespecification , 1987, Information Processing Letters.

[16]  Edsger W. Dijkstra,et al.  Guarded commands, non-determinacy and a calculus for the derivation of programs , 1975, Language Hierarchies and Interfaces.