The Agilent Protocol Encoder (APE) was designed as a test-bench to explore various aspects of protocol specification. In addition to designing a domain-specific language for specifying communication protocols, the project built an integrated development environment (IDE) to assist in the construction and debugging of such specifications. The concept of action-directed decoding was developed to allow a range of different decoders to be constructed from the same specification. The compiler can generate code for the APE virtual machine (APE VM), with an instruction set tailored to the task of protocol decoding. A firmware implementation of this VM was also developed, along with a more traditional back-end that generates C++ code.
A report describing the design of the language, and its supporting infrastructure.