Higher-Order and Symbolic Computation, 19(2/3)
Formal Compiler Construction in a Logical Framework
Jason Hickey and Aleksey Nogin, California Institute of Technology,
Pasadena, California
|
Abstract: The task of designing and implementing a
compiler can be a difficult and error-prone process. In this paper,
we present a new approach based on the use of higher-order abstract
syntax and term rewriting in a logical framework. All program
transformations, from parsing to code generation, are cleanly isolated
and specified as term rewrites. This has several advantages. The
correctness of the compiler depends solely on a small set of rewrite
rules that are written in the language of formal mathematics. In
addition, the logical framework guarantees the preservation of
scoping, and it automates many frequently-occurring tasks including
substitution and rewriting strategies. As we show, compiler
development in a logical framework can be easier than in a
general-purpose language like ML, in part because of automation, and
also because the framework provides extensive support for examination,
validation, and debugging of the compiler transformations. The paper
is organized around a case study, using the MetaPRL logical framework
to compile an ML-like language to Intel x86 assembly. We also present
a scoped formalization of x86 assembly in which all registers are
immutable.
|
This article is not yet available.
|
|