Programming language semantics are usually defined informally in some form of technical natural language, or in a very mathematical manner with techniques such as the Vienna Definition Method (VDM) or denotational semantics. One difficulty which arises from serious attempts to define language semantics is that the resulting definition is generally suitable for a single limited kind of reader. For example, the more formal kind of definition may suit a compiler writer or a language designer, but will be less convenient for other potential classes of reader, such as programmers. The latter frequently make use of some completely separate description (e.g., an introductory text book on the language); not surprisingly, inconsistencies between these separate descriptions and the language definition are commonplace.
This thesis develops a technique for the definition of programming language semantics which is suitable for a wide range of potential readers. This technique employs an operational semantic model which is based on the algebraic specification of abstract data types; the semantic model manipulates multi-layer descriptions of language semantics and supports multiple passes in these descriptions.
The semantic technique described in this thesis lends itself to the semi-automatic generation of an interpreter from the language definition, a fact which acts as an incentive to language designers to produce a formal definition of any new programming language, since the prototype implementation allows experimentation with new language features and their semantics. The system which generates an interpretive implementation from a language definition is called ATLANTIS, A Tool for LANguage definiTion and Interpreter Synthesis, and is also described in this thesis.