Results 1 
5 of
5
SemanticsBased Compiling: A Case Study in TypeDirected Partial Evaluation
 Eighth International Symposium on Programming Language Implementation and Logic Programming
"... . We illustrate a simple and e#ective solution to semanticsbased compiling. Our solution is based on "typedirected partial evaluation", and  our compiler generator is expressed in a few lines, and is e#cient;  its input is a welltyped, purely functional definitional interpreter in the sty ..."
Abstract

Cited by 23 (8 self)
 Add to MetaCart
. We illustrate a simple and e#ective solution to semanticsbased compiling. Our solution is based on "typedirected partial evaluation", and  our compiler generator is expressed in a few lines, and is e#cient;  its input is a welltyped, purely functional definitional interpreter in the style of denotational semantics;  the output of the generated compiler is e#ectively threeaddress code, in the fashion and e#ciency of the Dragon Book;  the generated compiler processes several hundred lines of source code per second. The source language considered in this case study is imperative, blockstructured, higherorder, callbyvalue, allows subtyping, and obeys stack discipline. It is bigger than what is usually reported in the literature on semanticsbased compiling and partial evaluation. Our compiling technique uses the first Futamura projection, i.e., we compile programs by specializing a definitional interpreter with respect to the program. Specialization is carri...
Refocusing in Reduction Semantics
, 2004
"... The evaluation function of a reduction semantics (i.e., a smallstep operational semantics with an explicit representation of the reduction context) is canonically defined as the transitive closure of (1) decomposing a term into a reduction context and a redex, (2) contracting this redex, and (3) ..."
Abstract

Cited by 12 (4 self)
 Add to MetaCart
The evaluation function of a reduction semantics (i.e., a smallstep operational semantics with an explicit representation of the reduction context) is canonically defined as the transitive closure of (1) decomposing a term into a reduction context and a redex, (2) contracting this redex, and (3) plugging the contractum in the context. Directly implementing this evaluation function therefore yields an interpreter with a worstcase overhead, for each step, that is linear in the size of the input term. We present
Interpreter Prototypes From Formal Language Definitions
, 1993
"... Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational sema ..."
Abstract

Cited by 6 (4 self)
 Add to MetaCart
Denotational semantics is now used widely for the formal definition of programming languages but there is a lack of appropriate tools to support language development. General purpose language implementation systems are oriented to syntax with poor support for semantics. Specialised denotational semantics based systems correspond closely to the formalism but are rendered inflexible for language experimentation by their monolithic multiple stages Exploratory language development with formal definitions is better served by a unitary notation, encompassing syntax and semantics, which is close to but simpler than denotational semantics. Interactive implementation of the notation then facilitates language investigation through the direct execution of a formal definition as an interpreter for the defined language. This thesis presents Navel, a runtime typed, applicative order, pure functional programming language with integrated context free grammar rules. Navel has been used to develop prot...
Towards Machinechecked Compiler Correctness for Higherorder Pure Functional Languages
 CSL '94, European Association for Computer Science Logic, Springer LNCS
, 1994
"... . In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. ..."
Abstract

Cited by 4 (1 self)
 Add to MetaCart
. In this paper we show that the critical part of a correctness proof for implementations of higherorder functional languages is amenable to machineassisted proof. An extended version of the lambdacalculus is considered, and the congruence between its direct and continuation semantics is proved. The proof has been constructed with the help of a generic theorem prover  Isabelle. The major part of the problem lies in establishing the existence of predicates which describe the congruence. This has been solved using Milne's inclusive predicate strategy [5]. The most important intermediate results and the main theorem as derived by Isabelle are quoted in the paper. Keywords: Compiler Correctness, Theorem Prover, Congruence Proof, Denotational Semantics, Lambda Calculus 1 Introduction Much of the work done previously in compiler correctness concerns restricted subsets of imperative languages. Some studies involve machinechecked correctnesse.g. Cohn [1], [2]. A lot of research h...