Many different semantic descriptions have been proposed for programming languages and work has been done on the problem of showing equivalence between such descriptions or transforming a description to a form more suitable to some application. Here we develop a method of language description which is not directly a semantic description, but from which we can derive various equivalent alternative semantic definitions of a programming language. One of the alternatives is a st and ard denotational semantics; another is what we call a translation semantics which is particularly suited to use in implementations of a language. Languages are typically defined by giving a syntax and semantics. The foundation of our work is that a language can be de...