Higher order attribute grammars

A new kind of attribute grammars, called higher order attribute grammars, is defined. In higher order attribute grammars the structure tree can be expanded as a result of attribute computation. A structure tree may be stored in an attribute. The term higher order is used because of the analogy with higher order functions, where a function can be the result or parameter of another function. A relatively simple method, using OAGs, is described to derive an evaluation order on the defining attribute occurrences which comprises all possible direct and indirect attribute dependencies. As in OAGs, visit-sequences are computed from which an efficient algorithm for attribute evaluation can be derived.

[1]  Lambert Meertens,et al.  Algorithmics : towards programming as a mathematical activity , 1986 .

[2]  Gregory F. Johnson,et al.  A meta-language and system for nonlocal incremental attribute evaluation in language-based editors , 1985, POPL.

[3]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[4]  Pierre Deransart,et al.  Attribute Grammars and their Applications , 1990, Lecture Notes in Computer Science.

[5]  Richard S. Bird The promotion and accumulation strategies in transformational programming , 1984, TOPL.

[6]  Dashing Yeh On incremental evaluation of ordered attributed grammars , 1983, BIT Comput. Sci. Sect..

[7]  Harald Vogt,et al.  Rapid Development of a Program Transformation System with Attribute Grammars and Dynamic Transformations , 1990, WAGA.

[8]  Thomas W. Reps,et al.  Generating Language-Based Environments , 1982 .

[9]  Peter A. Lindsay,et al.  A survey of mechanical support for formal reasoning , 1988, Softw. Eng. J..

[10]  Friedrich L. Bauer,et al.  Modified Report on the Algorithmic Language ALGOL 60 , 1976 .

[11]  Takuya Katayama,et al.  Translation of attribute grammars into procedures , 1984, TOPL.

[12]  Richard S. Bird,et al.  An introduction to the theory of lists , 1987 .

[13]  Tim Teitelbaum,et al.  Higher-order attribute grammars and editing environments , 1990, PLDI '90.

[14]  Lawrence Robinson,et al.  An example of hierarchical design and proof , 1978, CACM.

[15]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

[16]  Bowen Alpern,et al.  Interactive proof checking , 1984, POPL.

[17]  J. Hilden Elimination of recursive calls using a small table of “randomly” selected function values , 1976 .

[18]  Thomas Johnsson,et al.  Attribute grammars as a functional programming paradigm , 1987, FPCA.

[19]  Roger Hoover Dynamically bypassing copy rule chains in attribute grammars , 1986, POPL '86.

[20]  Thomas W. Reps,et al.  Language Processing in Program Editors , 1987, Computer.

[21]  Didier Parigot,et al.  Design, implementation and evaluation of the FNC-2 attribute grammar system , 1990, PLDI '90.

[22]  R FenichelRobert,et al.  A LISP garbage-collector for virtual-memory computer systems , 1969 .

[23]  S. Doaitse Swierstra,et al.  Efficient Incremental Evaluation of Higher order Attribute Grammars , 1991, PLILP.

[24]  J. C. Cleaveland,et al.  Grammars for programming languages , 1977 .

[25]  Uwe Kastens,et al.  GAG: A Practical Compiler Generator , 1982, Lecture Notes in Computer Science.

[26]  S. D. Swierstra,et al.  Higher order attribute grammars: a merge between functional and object oriented programming , 1990 .

[27]  Thomas W. Reps,et al.  Incremental Context-Dependent Analysis for Language-Based Editors , 1983, TOPL.

[28]  Thomas Reps,et al.  The synthesizer generator reference manual (3. ed.) , 1989 .

[29]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[30]  Olof Hagsand,et al.  Generation of graphic language-oriented design environments , 1989 .

[31]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .

[32]  Pierre Deransart,et al.  Attribute Grammars: Definitions, Systems and Bibliography , 1988 .

[33]  Robert Giegerich,et al.  Attribute coupled grammars , 1984, SIGPLAN '84.

[34]  van der,et al.  Fine-grain incremental implementation of algebraic specifications , 1991 .

[35]  Mahadev Satyanarayanan,et al.  Andrew: a distributed personal computing environment , 1986, CACM.

[36]  Andrew W. Appel,et al.  Simple generational garbage collection and fast allocation , 1989, Softw. Pract. Exp..

[37]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

[38]  Jr. William Worthington Pugh Incremental Computation and the Incremental Evaluation of Functional Programs , 1988 .

[39]  Paul Klint,et al.  The syntax definition formalism SDF—reference manual— , 1989, SIGP.

[40]  Brian Ritchie,et al.  The design and implementation of an interactive proof editor , 1988 .

[41]  John Hughes,et al.  Lazy Memo-functions , 1985, FPCA.