| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| oxml2m4-1.3 | 2025-12-12 | ||
| libnew-1.2 | 2025-12-12 | ||
| ox-1.12.2.tar.bz2 | 2025-12-13 | 3.3 MB | |
| ox-1.12.2.zip | 2025-12-13 | 6.3 MB | |
| ox-1.12.2.tar.gz | 2025-12-13 | 5.4 MB | |
| README-1.12.2.txt | 2025-12-12 | 3.4 kB | |
| Totals: 6 Items | 14.9 MB | 14 | |
Ox is an attribute grammar evaluator generator.
Ox was originally designed and implemented by Kurt Bischoff, in association with
Kelvin Nilsen, Department of Computer Science, Iowa State University.
Use of Ox is free, and the attribute grammar evaluator code generated by Ox is
the property of the Ox user.
This is the Ox distribution; the following files/directories may be of interest:
* ./README - This file.
* ./NEWS - List of user-visible changes, by version number.
* ./INSTALL - Basic installation information.
* ./COPYING - The Ox copyright and license.
* ./demo/ - A collection of small examples of evaluators built using Ox
(including most of those from the reference manual and the
tutorial). See './demo/README'.
* ./docs/ - The Ox User Reference Manual, the Ox Tutorial Introduction, and
the on-line manual.
* ./gppl/ - Source code for a compiler for a small (83 grammar rules)
block-structured imperative programming language named GPPL,
implemented using Ox. See './gppl/README'.
* ./source/ - The Ox source code (Yacc, Lex and C++).
* ./testsuite/ - Regression tests. See './testsuite/README' for details.
Ox generalizes the function of Yacc in the way that an attribute grammar
generalizes a context-free grammar. Ordinary Yacc and Lex specifications may be
augmented with definitions of synthesized and inherited attributes written in
C/C++ syntax. Ox checks these specifications for consistency and completeness,
and generates from them a program that builds and decorates attributed parse
trees. The user may specify post-decoration 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.
The './source/' directory, as distributed, will build with any C++ compiler
suite supporting at least the C++ 2020 standard. The Ox parser specifications
make use of Bison features found in versions >= 3.8.2. Two versions of the Ox
lexer specifications are currently included in the distribution: one set
specific to Flex and one set specific to RE/flex. The Flex version of the
specifications make use of features found in versions >= 2.6.0; the RE/flex
version of the specifications make use of features found in versions >= 3.3.6.
The header file 'FlexLexer.h' from the Homebrew distribution of Flex used to
generate the distributed Ox lexer Flex C++ source files is included with the Ox
distribution because alternate versions of 'FlexLexer.h' may not work with the
distributed Ox C++ source. Header files from the Homebrew distribution of
RE/flex used to generate the distributed Ox lexer RE/flex C++ source files, as
well as the subset of the RE/flex run-time library used by Ox, are also included
for the same reason.
The regression tests, the example evaluators in the './demo/' directory, and the
GPPL compiler will build with any combination of the supported Lex and Yacc
compatible variants. Some of the regression tests require the Flex lexer
generator and/or a specific Yacc compatible parser generator; those test cases
are only executed if the required tool is available.