Announcing Ox release 1.9.2

Tom Shields <thomas.evans.shields@gmail.com>
Mon, 22 Feb 2021 18:33:18 -0600

          From comp.compilers

Related articles
Announcing Ox release 1.9.2 thomas.evans.shields@gmail.com (Tom Shields) (2021-02-22)
| List of all articles for this month |

From: Tom Shields <thomas.evans.shields@gmail.com>
Newsgroups: comp.compilers
Date: Mon, 22 Feb 2021 18:33:18 -0600
Organization: Compilers Central
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="57269"; mail-complaints-to="abuse@iecc.com"
Keywords: tools, parse, available
Posted-Date: 22 Feb 2021 21:10:32 EST

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.



Post a followup to this message

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