An algebraic approach to the design of compilers for object-oriented languages


In this paper we describe an algebraic approach to construct provably correct compilers for object-oriented languages; this is illustrated for programs written in a language similar to a sequential subset of Java. It includes recursive classes, inheritance, dynamic binding, recursion, type casts and test, assignment, and class-based visibility, but a copy semantics. In our approach, we tackle the problem of compiler correctness by reducing the task of compilation to that of program refinement. Compilation is identified with the reduction of a source program to a normal form that models the execution of object code. The normal form is generated by a series of correctness-preserving transformations that are proved sound from the basic laws of the language; therefore it is correct by construction. The main advantages of our approach are the characterisation of compilation within a uniform framework, where comparisons and translations between semantics are avoided, and the modularity and extensibility of the resulting compiler.

DOI: 10.1007/s00165-009-0124-9

Extracted Key Phrases

1 Figure or Table

Cite this paper

@article{Duran2009AnAA, title={An algebraic approach to the design of compilers for object-oriented languages}, author={Adolfo Duran and Ana Cavalcanti and Augusto Sampaio}, journal={Formal Aspects of Computing}, year={2009}, volume={22}, pages={489-535} }