A Translator-Oriented Symbolic Programming Language

The use of an algorithmic programming language such as .ALGOL requires the conversion of programs written in this language into programs in the language of the computer on which the programs are to be executed. While this conversion may be made directly, the conversion is often performed in two or more steps. Typically, translation is made to an intermediate language form, such as a symbolic assembly language, which is then processed further by an assembler or loader; another use of an intermediate language is with an interpreter used on the machine. The use of intermediate language forms in the algorithmic language conversion permits disentangling the process, the postponement of some necessary functions to other programs such as assemblers, loaders, and interpreters, the editing when desired in the intermediate form, and considerable overall simplification of the conversion. The purpose of this note is the description of a target language which is designed with the sole aim of simplifying the task of translation as much as possible. I t may be used as an intermediate language in translation. The number of instruction types is relatively small. The language is machine-oriented to the extent that it has minimum parenthesis structure. This means that the commands, unlike those of .ALGOL, do not have reeursively defined constituents. Each command may if desired be related directly to a complex of instructions on most current machines. Problems of efficiency, optimization and target execution time do not enter into consideration. For convenience we shall call this language L. The language may be considered to describe an addressless computer, since all commands, other than fetch instructions, may be specified by the operation alone--the operands are automatically at the top of a pushdown list. If the language L were to be implemented in hardware, the commands of L would be the instruction set of the resulting computer. While the language is designed to simplify the mechanical translation of a problem-oriented language, it may, if desired, be used directly as a symbolic language for hand coding. Since the types of tasks that make the mechanical translation of a problem-oriented language cumbersome and involved are in a direct use of the target language done by the programmer, the language has advantages in such use. In hand programming the difficulties are met by the training, experience and ingenuity of the coder. Use of this language in hand