Efficient annotated terms

How do distributed applications exchange tree‐like data structures? We introduce the abstract data type of Annotated Terms (ATerms), and discuss their design, implementation and application. A comprehensive procedural interface enables the creation and manipulation of ATerms in C or Java. The ATerm implementation is based on maximal subterm sharing and automatic garbage collection. A binary exchange format for the concise representation of ATerms (sharing preserved) allows the fast exchange of ATerms between applications. In a typical application – parse trees which contain considerable redundant information – less than two bytes are needed to represent a node in memory, and less than two bits are needed to represent it in binary format. The implementation of ATerms scales up to the manipulation of ATerms in the giga‐byte range. Copyright © 2000 John Wiley & Sons, Ltd.

[1]  Andrew W. Appel,et al.  The Zephyr Abstract Syntax Description Language , 1997, DSL.

[2]  A. van Deursen,et al.  Algebraic specification of a language for describing financial products , 1995 .

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

[4]  John A. Allen,et al.  The anatomy of lisp , 1980 .

[5]  Donald E. Knuth,et al.  The Art of Computer Programming: Volume 3: Sorting and Searching , 1998 .

[6]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[7]  Paul Klint,et al.  Compilation and Memory Management for ASF+SDF , 1999, CC.

[8]  Arie van Deursen,et al.  Little languages: little maintenance , 1998 .

[9]  Anne Elisabeth Haxthausen,et al.  CASL - The CoFI Algebraic Specification Language (Tentative Design, version 0.95) - Language Summary, with annotations concerning the semantics of constructs , 1997 .

[10]  J. F. Groote,et al.  Specification and implementation of components of a μCRL toolbox , 1995 .

[11]  Chris Verhoef,et al.  Generation of components for software renovation factories from context-free grammars , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[12]  Paul Klint,et al.  Term rewriting for sale , 1998, WRLA.

[13]  Michael S. Karasick The architecture of Montana: an open and extensible programming environment with an incremental C++ compiler , 1998, SIGSOFT '98/FSE-6.

[14]  Jan A. Bergstra,et al.  The Discrete Time TOOLBUS - A Software Coordination Architecture , 1998, Science of Computer Programming.

[15]  Arie van Deursen,et al.  Industrial Applications of ASF+SDF , 1996, AMAST.

[16]  Jasper F.T Kamperman,et al.  GEL, a Graph Exchange Language. , 1994 .

[17]  Jan Friso Groote,et al.  The Syntax and Semantics of μCRL , 1995 .

[18]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[19]  Chris Verhoef,et al.  Generation of components for software renovation factories from context-free grammars , 2000, Sci. Comput. Program..

[20]  P. A. Olivier,et al.  Design and implementation of a new ASF+SDF meta-environment , 1997 .

[21]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[22]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[23]  Paul Klint,et al.  A meta-environment for generating programming environments , 1989, TSEM.

[24]  Steven W. K. Tjiang,et al.  SUIF: an infrastructure for research on parallelizing and optimizing compilers , 1994, SIGP.

[25]  Yasumasa Kanada,et al.  HLisp—its concept, implementation and applications , 1991 .

[26]  Eelco Visser,et al.  Building program optimizers with rewriting strategies , 1998, ICFP '98.

[27]  Anthony M. Sloane,et al.  Eli: a complete, flexible compiler construction system , 1992, CACM.

[28]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[29]  Wan Fokkink,et al.  Within ARM's reach: compilation of left-linear rewrite systems via minimal rewrite systems , 1997, TOPL.

[30]  David Alex Lamb,et al.  IDL: sharing intermediate representations , 1987, TOPL.

[31]  Eelco Visser,et al.  Syntax definition for language prototyping , 1997 .