Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Announcing Ox release 1.9.2

14 views
Skip to first unread message

Tom Shields

unread,
Feb 22, 2021, 9:10:35 PM2/22/21
to
Ox version 1.9.2 is now available on SourceForge
(sourceforge.net/projects/ox-attribute-grammar-compiler/).

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.


Ox NEWS

* Noteworthy changes in release 1.9.2 (19 February 2021)

** Enhancements

The `bison' '%name-prefix "PREFIX"' and '%define api.prefix {PREFIX}’
directives are recognized and used to correctly prefix references to `bison’
externally visible names.

A new command line option "--language=[C|C++]" enables requesting C and C++ as
the target language, without having to specify the target parser and/or lexer
generator.

The "--byacc" and "--lex" command line options now accept an optional target
language.


** Internals

The Ox grammar specification module is restructured into a separate module for
each supported target parser generator. The single reduce/reduce conflict and
two of the three shift/reduce conflicts in the release 1.9.1 grammar are
eliminated. The multiple grammar specifications are maintained as a single
source file for ease of maintaining the common subset across the targets,
using the `m4' macro processor.

Ox now uses the standard `bison' GLR skeleton.


** Bug fixes

Corrected a memory leak in Ox: a buffer allocated by `getline ()' was not
reclaimed.


** Documentation

Revised the User Reference Manual and manpage for the command line option
changes.


** Build system

By default, Ox is built with all supported target parser generator modules
statically linked into the executable, but can be configured at build-time for
only a single module. Ox can also be configured to dynamically load and link
a module specified on the command line, provided the host OS supports it.

Various compile and link build rules used to override the default
Automake-generated build rules with special case options were eliminated using
a combination of Automake per-library compilation flags, and the fact that the
Test suite had been previously updated to use C++ source file naming
conventions recognized by Automake for those test cases specific to C++.

The build system requires the use of Autoconf version 2.71, or greater.

The build system now uses Libtool version 2.4.6.44-b9b4; version 2.4.6 issues
a warning on Ubuntu Linux.

The build system now uses modules from GNUlib as of 2021-02-16 @ 7:04PM CST.
This version has the fix to a bug reported compiling the `regex' module on
macOS Mojave with the Homebrew GCC v4.9 compiler.

The GNUlib footprint was reduced by removing use of the standard library
functions `asprintf ()' and `stpcpy ()', and by replacing use of the functions
`strndup ()' and `strsep ()' with equivalent code when they are not supported
by the host OS.

0 new messages