Ox generalizes Yacc and Lex for attribute grammars

Kurt Bischoff <bischoff@cs.iastate.edu>
Tue, 16 Nov 1993 00:10:21 GMT

          From comp.compilers

Related articles
Ox generalizes Yacc and Lex for attribute grammars thomas.evans.shields@gmail.com (Tom Shields) (2019-02-06)
Ox generalizes Yacc and Lex for attribute grammars bischoff@cs.iastate.edu (Kurt Bischoff) (1993-11-16)
Re: Ox generalizes Yacc and Lex for attribute grammars a_tucker@paul.spu.edu (Andrew Tucker) (1993-11-16)
Re: Ox generalizes Yacc and Lex for attribute grammars wjw@eb.ele.tue.nl (1993-11-17)
Re: Ox generalizes Yacc and Lex for attribute grammars etxmow@garbo.ericsson.se (1993-11-17)
Re: Ox generalizes Yacc and Lex for attribute grammars bevan@cs.man.ac.uk (Stephen J Bevan) (1993-11-17)
Re: Ox generalizes Yacc and Lex for attribute grammars rad@cs.ucsb.edu (1993-11-18)
Re: Ox generalizes Yacc and Lex for attribute grammars cspt@giraffe.ru.ac.za (1993-11-19)
[1 later articles]
| List of all articles for this month |

Newsgroups: comp.compilers
From: Kurt Bischoff <bischoff@cs.iastate.edu>
Keywords: tools, attribute, available
Organization: Compilers Central
Date: Tue, 16 Nov 1993 00:10:21 GMT

                  This announces the first general release of 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.01 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
--


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.