A language extension for graph processing and its formal semantics

A simple programming language “extension,” Graspe, for processing directed graphs is defined. Graspe consists of a type of directed graph data structure and a set of primitive operations for manipulating these structures. Graspe may be most easily implemented by embedding it in a host language. Emphasis is placed both on Graspe itself and on its method of definition. Commonly, the definition of a language involves definition of the syntactic elements and explanation of the meaning to be assigned them (the semantics). The definition of Graspe here is solely in terms of its semantics; that is, the data structures and operations are defined precisely but without assignment of a particular syntactic representation. Only when the language is implemented is assignment of an explicit syntax necessary. An example of an implementation of Graspe embedded in Lisp is given as an illustration. The advantages and disadvantages of the definition of a language in terms of its semantics are discussed.

[1]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[2]  Terrence W. Pratt A hierarchical graph model of the semantics of programs , 1969, AFIPS '69 (Spring).

[3]  Donald E. Knuth,et al.  On the Translation of Languages from Left to Right , 1965, Inf. Control..

[4]  Stephen P. Morse,et al.  A technique for generating almost optimal Floyd-Evans productions for precedence grammars , 1970, Commun. ACM.

[5]  Clark Weissman,et al.  LISP 1.5 primer , 1967 .

[6]  Arthur Evans PAL—a language designed for teaching programming linguistics , 1968, ACM '68.

[7]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[8]  E. Lohse,et al.  A Correspondence Between ALGOL 60 and Church's Lambda- Notation: Part I* , 1965 .

[9]  Daniel P. Friedman,et al.  GRASPE 1.5: A GRAPH PROCESSOR AND ITS APPLICATION. , 1969 .

[10]  Robert F. Simmons,et al.  Natural language question-answering systems: 1969 , 1970, CACM.

[11]  J. J. Horning,et al.  Empirical comparison of LR(k) and precedence parsers , 1970, SIGP.

[12]  Zohar Manna,et al.  Properties of Programs and the First-Order Predicate Calculus , 1969, JACM.

[13]  Joseph Weizenbaum Symmetric list processor , 1963, CACM.

[14]  Niklaus Wirth,et al.  EULER: a generalization of ALGOL, and its formal definition: Part II , 1965, CACM.

[15]  F. L. Deremer,et al.  Practical translators for LR(k) languages , 1969 .

[16]  R. Narasimhan,et al.  Programming Languages and Computers: A Unified Metatheory , 1967, Adv. Comput..

[17]  Rosamaria Morpurgo,et al.  A language for treating graphs , 1970, CACM.

[18]  Jay Earley,et al.  An efficient context-free parsing algorithm , 1970, Commun. ACM.

[19]  A. J. Korenjak A practical method for constructing LR (k) processors , 1969, CACM.