Announcing Ox release 1.11.1

Tom Shields <>
Thu, 27 Jul 2023 20:17:21 -0500

          From comp.compilers

Related articles
Announcing Ox release 1.11.1 (Tom Shields) (2023-07-27)
| List of all articles for this month |

From: Tom Shields <>
Newsgroups: comp.compilers
Date: Thu, 27 Jul 2023 20:17:21 -0500
Organization: Compilers Central
Injection-Info:; posting-host=""; logging-data="4607"; mail-complaints-to=""
Keywords: yacc, parse, attribute, tools
Posted-Date: 30 Jul 2023 15:42:04 EDT

Ox version 1.11.1 is now available on SourceForge (

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.


* Noteworthy changes in release 1.11.1 (27 July 2023)

** Internals

Code generation for attribute references across the lexical analysis, syntactic analysis, decoration, and post-decoration traversal phases of an evaluator was consolidated into a single function for maintainability.

** Test suite

Bison version >= 3.5.4 is required for the 'bison-3.x-calc++' test case, so it was renamed 'bison-3.5.4-calc++'.

Test case 'bison-3.5.4-calc++-treeviz' was added.

Test data for test case 'oxpt' was added; the test run script was updated to run the generated evaluator and check its output.

The 'oxpt' test case lexer source was upgraded to work correctly with Lex, Flex or RE/flex (but only for RE/flex versions >= 3.3.4); RE/flex versions prior to 3.3.4 contained a bug that dropped the first character of the second, and subsequent, input file(s) opened with 'yyrestart ()' (or the equivalent).

Test case 'msta-a68decls' was modified to generate output, so that a failed evaluator build cannot pass the evaluator execution tests

** Bug fixes

An error introduced in the Ox release 1.11 L-file/Y-file source text 'pass through' refactoring was corrected: if the Y-file omits a second '%%' marker (because there is nothing in the "user subroutines section"), the generated parser specification file did not contain the '%%' marker needed prior to the Ox-generated code intended for the "user subroutines section”.

** Documentation

Typographical errors in the Ox manpage were corrected: 'basebase' was replaced with 'basename'.

** Build System

Handling of the Ox '--enable-lex' command line option was corrected when the environment variables 'FLEX' or 'REFLEX' are set.

Handling of the Ox '--enable-yacc' command line option was corrected when the environment variables 'BISON', 'BTYACC', 'BTYACC' or 'MSTA' are set.

The requirement that RE/flex version >= 3.3.4 is available in order to run the 'oxpt' test case evaluator against the new test data is enforced.

The requirement that RE/flex version >= 3.3.6 is available to build the Ox lexer C++ source from the Ox lexer specifications is enforced.

Post a followup to this message

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