Programming languages for non-numeric processing—2: An introduction to the COGENT programming system

  • Authors:
  • J. C. Reynolds

  • Affiliations:
  • -

  • Venue:
  • ACM '65 Proceedings of the 1965 20th national conference
  • Year:
  • 1965

Quantified Score

Hi-index 0.03

Visualization

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.