When heterogeneous computers exchange data over a network, they
must agree on a common interpretation of the data. The OSI suite of protocols
includes a standard notation, Abstract Syntax Notation One (ASN.1), for
describing the structure ("abstract syntax") of data. Previous work has shown
that C++ is a good language for work with layered network architectures and
specifically with ASN.1: the inheritance and polymorphism features of C++ are
nicely suited for work with layered protocols, which can be seen and used in
object-oriented terms; a C++ class hierarchy, designed to capture the language
concepts of ASN.1, successfully separates the abstract syntax (or application
level) from the encoding used during transfer (the "transfer syntax" at
presentation level); and the class construct and scoping rules of C++ and the
design of the class hierarchy much better preserve the structure and content of
ASN.1 than do past attempts with C. This report presents CATV (Class-oriented
ASN.1 Translator, Yacc-based), a translator from ASN.1 to a corresponding C++ abstract syntax class hierarchy. It is shown in this report that the translations
produced by CATV are preferable to those produced by other translators based
on the following criteria: preservation of names and types, consistent access to
elements, support of modularity and subtypes, resolution of forward references,
flexibility of encoding, and generality of use. Furthermore, it is shown that CATV
has better throughput than PEPSY, an ASN.1 to C translator from ISODE.