CATY: an ASN.1-C++ translator in support of distributed object-oriented applications

TR Number



Journal Title

Journal ISSN

Volume Title


Virginia Tech


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.