We present a translator system, KHAR, which is designed to use a minimum amount of read/write storage in environments where this is a scarce resource. The system may be used for languages which are L. L. M. We describe the system and use its application to the checking of -the syntax of a machine oriented language, AML/1, to illustrate KHAR's I handling of syntax and error recovery and similarly, use its applicationto the checking of the semantics of Wirth's mini-language, PL/0, to illustrate KHAR's handling of semantics. We show, too, how features not found in PL/O can be handled. The interface to the KHAR system provided for the designer/implementer of a language is a set of semantic graphs, after Cordy, to which may be added error recovery and code emitting actions. These graphs are encoded in a development of BNF, called here, Syntax Languages. The linearized graph, with its actions, is translated into two sets of tables, one to drive a push-down automaton to recognise the CFG of the language, with cross-linkage to the second which defines the action to be taken at that point in the syntax. These actions operate on registers and a read-only stack, which handle integer numbers as the encoded form of language symbols. The simplicity of this mechanism is due to the multipass nature of KHAR. We compare this simple mechanism with those used by Cordy. We report on the degree to which KHAR meets its design objective of minimizing work storage requirements. We also note the applicability of KHAR to research in language design, because of its clear and flexible interface. We discuss the portability of the KHAR system and its implications for the production of compilers for microcomputers. We also compare the features of KHAR with a compiler writing system. CHAPTER 1: INTRODUCTION
[1]
London School of Hygiene and Tropical Medicine
,
1938,
Nature.
[2]
A E Glennie.
ON THE SYNTAX MACHINE AND THE CONSTRUCTION OF A UNIVERSAL COMPILER
,
1960
.
[3]
S. Novikov.
THE METHODS OF ALGEBRAIC TOPOLOGY FROM THE VIEWPOINT OF COBORDISM THEORY
,
1967
.
[4]
J. Adams,et al.
Lectures on generalised cohomology
,
1969
.
[5]
David Gries,et al.
Compiler Construction for Digital Computers
,
1971
.
[6]
The Adams-Novikov Spectral Sequence for the Spheres
,
1972
.
[7]
L.G.L.T. Meertens,et al.
A syntax-directed error-recovery method for parsing algol 68 programs : (prepublication)
,
1973
.
[8]
Charles Antony Richard Hoare,et al.
Hints on programming language design.
,
1973
.
[9]
David A. Watt,et al.
Analysis-oriented two-level grammars
,
1974
.
[10]
J. Adams,et al.
Stable homotopy and generalised homology
,
1974
.
[11]
R. H. Pierce,et al.
Source Language Debugging on a Small Computer
,
1974,
Comput. J..
[12]
William M. Waite,et al.
Compiler Construction: An Advanced Course
,
1974
.
[13]
Primitive Elements in K-THEORY
,
1974
.
[14]
Robert M. Switzer,et al.
Algebraic topology--homotopy and homology
,
1975
.
[15]
Niklaus Wirth,et al.
Algorithms + Data Structures = Programs
,
1976
.
[16]
Friedrich L. Bauer,et al.
Compiler Construction, An Advanced Course, 2nd ed.
,
1976
.
[17]
James R. Cordy.
A diagrammatic approach to programming language semantics
,
1976
.
[18]
Gregor von Bochmann,et al.
Compiler Writing System for Attribute Grammars
,
1978,
Comput. J..
[19]
Andrew S. Tanenbaum,et al.
Implications of structured programming for machine architecture
,
1978,
CACM.