Automating the construction of translators is an attractive proposition for compiler writers, and several translator writing programs have been developed, ranging from a widely-used portable compiler for the C programming language [1] to a system employing denotational semantics [2]. This paper presents a system for the automatic construction of compiler front ends from non-procedural specifications and describes the model of a compiler on which the system is based. The system is independent of the source language and the target machine.
The compiler front end model follows tradition in containing six components: lexical analysis, syntax analysis, symbol processing, semantic analysis, data type processing, and expression processing. Each component is implemented by a separate module, and each requires separate specifications from the user. The approach is not tools based, although use is made of some existing tools (including LEX and YACC) in the implementation.
The system is clearly explained, although it is not possible to cover it in depth in a relatively short paper. An appendix contains example specifications of a small subset of Pascal that illustrate the breadth of the system but lack the comments that might afford deeper explication. The paper deals with front ends only and offers only brief reference to the more difficult area of automatic generation of back ends. The system appears cumbersome but forms a useful contribution in its modular approach to a working compiler generator; the paper is worth reading by people with an interest and some background in compiler writing.