SLANG(ID:154/sla007)

Compiler compiler system 


Compiler compiler system for POLMI languages


Related languages
ALGOL 58 => SLANG   Patterned after
CLIP => SLANG   Influence

References:
  • Bratman, H., "Project CLIP-The design of a compiler and language for information processing." (SDC Special Paper 106) September 11, 1959. 7 pp. view details
  • BOOK, ERWIN, AND BRATMAN, HARVEY "Using compilers to build compilers" SP-176, System Development Corp. Santa Monica, California, August 31, 1960 view details
  • Bemer, R. W. "Survey of Modern Programming Techniques," the Computer Bulletin (1961): 127-l35 view details
  • Sammet, Jean E "1960 Tower of Babel" diagram on the front of CACM January 1961 view details

          in [ACM] CACM 4(01) (Jan 1961) view details
  • Sibley, R. A. "The SLANG system" view details Extract: History
    Early in 1960, a project was initiated for the purpose of developing a programming language suited to the task of writing compiler type programs. Through the use of such a language and its associated processors, it, was hoped that all of the now classical advantages of a problem-oriented language might be put to work for the compiler writer. A language was developed. Referred to as SLANG, the notation is patterned after ALGOL 58 and has proved to be convenient for expressing many of those processes fundamental to automatic programming. More important, the project has focused attention on what appears to be an important area for programming research. This area of endeavor is concerned with the following observation:

    It is possible to describe processes in a machine-independent language which are in themselves machine dependent.

    Mathematical techniques are in a large measure machine- independent and thus systems such as FORTRAN have been suceesdul. Compiling techniques have been extremely machine dependent. This has resulted in a great deal of difficulty whenever an attempt has been made to apply the methods of automatic programming to the construction of compilers.

    In addition to the beginning of an understanding of the need for new compilation techniques, the urork reported here has produced the beginnings of what, would seem to be a contribution to the development of such techniques. Indeed, results indicate that it is not only possible to describe the compilation process for a problem-oriented language in a machine-indeperldent manner, but that such a description can be translated into the machine language of any of a class of computers by a single program rumling on a single computer. Extract: Description
    The SLANG System
    The SLANG System is a programming system designed to exhibit properties such as those discussed in the previous section in connection with the POLMI language, its processor, a machine description technique, and an insistence on machine-independent methods. The approach has been to develop a system which will accept as inputs:
    (1) A set of statements, A, describing the compilation process for some problem-oriented language, L.
    (2) A set of statements, B, describing the computer, C, upon which the compilation process for L is to take place.
    The system will produce as outputs:
    (1) A machine language program for C capable of carrying out, the processes described by A.
    (2) Appropriate documentation.

    The statements A are written in terms of SLANG-POL (SLANG Problem-Oriented Language), a language oriented specifically to the problem of describing those processes which seem fundamental to automatic programming. In general, the admissible forms are not unlike those of FORTRAN or ALGOL. Simple arithmetic and logical calculations are described symbolically in accordance with the customs of their respective disciplines, subscripts being parenthesized rather than lowered. Control information is indicated in the form of appropriate English word phrases.

    Among those characteristics which tend to distinguish the present version of SLANG-POL from more mathematically oriented languages are: (a) in addition to indicating the position of items within data vectors, subscripts are used to index defined subsections of data items; (b) alphabetic information may be introduced and manipulated with the same facility as numeric information; (c) generality has been curtailed insofar as arithmetic and logical expressions are concerned; (d) initial values for data vectors may be indicated; (el a generalized form of function is made available; and (f) a set of variables are set aside for definition by SLANG-MD (SLANG Machine Description).

    Since this paper is primarily concerned with the SLANG machine description technique and with those aspects of a SLANG processor which enable it to produce programs for any of a class of computers, a detailed description of SLANG-POL has been omitted.  Various details, however, will be required as examples are developed.

    The statements B, which describe the object, computer, are chosen from SLANG-MD, which admits of two basic types of statements. The first type is descriptive in nature and yields qualitative and quantitative information about the object machine. This information allows the processor to assign storage, utilize the proper names and select appropriate coding techniques from its repertoire. The second type of statements that go to make up the machine description (SLANG-MD) are those that enumerate and describe the commands that must be executed by the given computer to carry out any of a number of basic processes. The list of processes includes the basic arithmetic, logical, transfer-of-control, and input-output operations.

    It is by analyzing statements A in terms of the basic processes, and in turn the basic processes in terms of the information provided by statements B, that the SLANG processor is able to translate the SLANG-POL statements into appropriate machine language.
          in [ACM] CACM 4(01) (Jan 1961) view details
  • [IBM] SLANG Language Reference Manual, Programming Automation, IBM; April 4, 1964. view details
          in [ACM] CACM 4(01) (Jan 1961) view details
  • Sammet, Jean E., "Programming languages: history and future" view details
          in [ACM] CACM 15(06) (June 1972) view details