ATerms
Description
ATerm (short for Annotated Term) is an abstract data type designed for the exchange of tree-like data structures between distributed applications.
The ATerm library forms a comprehensive procedural interface which enables creation and manipulation of ATerms in C and 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 2 bytes are needed to represent a node in memory, and less than 2 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.
The ATerm library provides a comprehensive interface in C and Java to handle
the annotated term data-type in an efficient manner. If the terms you handle are limited to a specific signature, you can use
ApiGen to generate
typed interfaces to the same ATerms.
Online Documentation
API Documentation
C version and
Java version
Publications
%BIBTEX{
@article{BJKO2000,
author = {Brand, {M.G.J. van den} and Jong, H.A. de and Klint, P. and
Olivier, P.A.},
title = {{E}fficient {A}nnotated {T}erms},
year = {2000},
journal = {Software -- Practice \& Experience},
volume = {30},
pages = {259--291},
url = {http://www.meta-environment.org/pub/Meta-Environment/ATerms/Xootic01.pdf}
}
@article{vdBrandKlint07,
author = {Brand, {M.G.J. van den} and P. Klint},
title = {ATerms for manipulation and exchange of structured data: It's all about sharing},
journal = {Information and Software Technology},
year = {2007},
volume = {49},
number = {1},
pages = {55--64},
url = {http://homepages.cwi.nl/~paulk/publications/aterms2.pdf}
}
}%