ABSTRACT
THE COGENT (COmpiler and GENeralized Translator) programming system is a compiler whose input language is designed to describe symbolic or linguistic manipulation algorithms. Although the system is intended primarily for use as a compiler compiler, it is also applicable to such problem areas as algebraic manipulation, mechanical theorem-proving, and heuristic programming.
In designing the system the major objective has been to unify the concept of syntax-directed compilation1 with the more general but primitive concept of recursive list-processing2. This objective is achieved by using the syntax of a language to define a mapping between strings of the language and list structures. Given such a mapping, linguistic processes become equivalent to list processes, and a list-processing language becomes a concise vehicle for describing such processes.
Thus a program written in the COGENT language is a list-processing program in which the list structures normally represent phrases of one or more object languages (i.e., the input and output languages to be processed by the program), in a representation determined by the syntax of these languages. Correspondingly, the COGENT language itself contains two major constructions: productions, which define the object language syntax, and generator definitions, which define list-processing subroutines called generators.
- 1.Irons, E. T., "A Syntax Directed Compiler for ALGOL 60," Comm. ACM, p. 51; 4/1961. Google ScholarDigital Library
- 2.McCarthy, J., "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I," Comm. ACM, p. 184; 3/1960. McCarthy, J., et al., "LISP 1.5 Programmer's Manual," MIT Press; 1962. Google ScholarDigital Library
- 3.Backus, J. W., "The Syntax and Semantics of the Proposed International Algebraic Language of the Zurich ACM-GAMM Conference," Proceedings of the International Conference on Information Processing, UNESCO, Paris, p. 125; June, 1959.Google Scholar
- 4.Brooker, R. A., and Morris, D., "A General Translation Program for Phrase Structure Languages," J. ACM, p. 1; 9/1962. Google ScholarDigital Library
- 5.Reynolds, J. C., COGENT Programming Manual, ANL-7022, Argonne National Laboratory; Mar., 1965.Google Scholar
- 6.Ross, D. T., "A Generalized Technique for Symbol Manipulation and Numerical Calculation," Comm. ACM, p. 147; 4/1961. Google ScholarDigital Library
- 7.Edwards, J., "LISP II Garbage Collector": unpublished.Google Scholar
Index Terms
- Programming languages for non-numeric processing—2: An introduction to the COGENT programming system
Recommendations
Programming Languages for Non-Numeric Processing—1: examples of symbol manipulation in the AMBIT Programming Language
ACM '65: Proceedings of the 1965 20th national conferenceTHE AMBIT PROGRAMMING language has been applied to problems in two areas. In the area of algebraic symbol manipulation, programs have been written in AMBIT for elementary arithmetic, elementary algebra, formal differentiation, set operations, and ...
Programming languages for non-numeric processing—1: TMG—a syntax directed compiler
ACM '65: Proceedings of the 1965 20th national conferenceTHIS PAPER reports on a compiler writing system called TMG, basically a syntax directed system. It has, however, some interesting differences which make it easier to handle errors and declarative information. The original objective of this system was to ...
Programming languages for non-numeric processing—2: An extended ALGOL based language
ACM '65: Proceedings of the 1965 20th national conferenceTHE PURPOSE of a problem oriented language (POL) is to provide a convenient and efficient means for expressing the algorithms for solving a large class of problems. In the past, many special problem oriented languages were developed to efficiently ...
Comments