This announces Ox: An Attribute Grammar Compiling System based on Yacc, Lex, and C Ox generalizes the function of Yacc in the way that attribute grammars generalize context-free grammars. Ordinary Yacc and Lex specifications may be augmented with definitions of synthesized and inherited attributes written in C syntax. Ox checks these specifications for consistency and completeness, and generates from them a program that builds and decorates attributed parse trees. Ox accepts a most general class of attribute grammars. The user may specify postdecoration traversals for easy ordering of side effects such as code generation. Ox handles the tedious and error-prone details of writing code for parse-tree management, so its use eases problems of security and maintainability associated with that aspect of translator development. Ox is a Yacc/Lex/C preprocessor, and is designed to bring attribute grammars to the mainstream of Unix-based language development. Ox inherits all of the familiar syntax and semantics of Yacc, Lex, and C, so it is a good choice for language designers, experimenters, and developers familiar with those tools. It is relatively easy to convert programs between Ox code and "pure Yacc/Lex/C" code. Ox is carefully engineered for reliability, portability, compatibility, simplicity, and efficiency. Ox can be used with Bison, Flex, and C++. Use of Ox is free. Code generated by Ox is the property of the Ox user. The distribution is available by anonymous ftp from the directory `/pub/ox' on: ftp.cs.iastate.edu The Ox G1.04 distribution includes: * source code (Ox is written in Yacc, Lex, and C) * tutorial introduction (new, informal, 19 pages). This emphasizes examples and helps you cover the main points quickly. If you already know Yacc, Lex, and AGs, you are soon ready to begin using Ox with your favorite Yacc/Lex parser. * user reference manual (indexed, up-to-date, 57 pages) * on-line manual * small examples (files containing all of the examples from the user reference manual and the tutorial introduction) * Ox-ready Yacc/Lex parsers for C, C++, Pascal, Ada, and FORTRAN * a large example (block-structured imperative-language compiler suitable for instruction and experimentation) with documentation Ox is designed and implemented by Kurt Bischoff, in association with Kelvin Nilsen, Department of Computer Science, Iowa State University. Questions about Ox should be sent to: ox-request@cs.iastate.edu ------------- Kurt Bischoff, bischoff@cs.iastate.edu Sat Apr 16 20:05:07 CDT 1994