A General Translation Program for Phrase Structure Languages
Journal of the ACM (JACM)
A syntax directed compiler for ALGOL 60
Communications of the ACM
A generalized technique for symbol manipulation and numerical calculation
Communications of the ACM
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
A List Structure Form of Grammars for Syntactic Analysis
ACM Computing Surveys (CSUR)
Communications of the ACM
Translations on a context free grammar
STOC '69 Proceedings of the first annual ACM symposium on Theory of computing
On the use of syntax-based translators for symbolic and algebraic manipulation
SYMSAC '71 Proceedings of the second ACM symposium on Symbolic and algebraic manipulation
A graded bibliography on macro systems and extensible languages
ACM SIGPLAN Notices
Hi-index | 0.03 |
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.