• Announcing Ox release 1.10.2

    From Tom Shields@21:1/5 to All on Fri May 6 20:35:08 2022
    Ox version 1.10.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.10.2 (29 April 2022)

    ** Enhancements

    The spanning location, rather than the line, is reported in a diagnostic message, using the 'bison' format "file:line#.column#-line#.column#”.

    Diagnostic messages are reworded to reduce verbosity.

    Macro formal parameter substitution now occurs for all components of an attribute reference.


    ** Internals

    The bison-generated and maintained 'position' and 'location' class values, rather than global input file name and line number values, are now used throughout.

    The 'YYLEX_DEBUG' macro, and the associated tracing version of the 'yylex
    ()’ facade, was eliminated; the 'bison' and 'flex' debugging traces are more informative.

    The interpretation of the 'YYDEBUG' environment variable is changed:
    - YYDEBUG == 1 => trace the parsers
    - YYDEBUG == 2 => trace the lexers
    - YYDEBUG == 3 => trace both the lexers and parsers


    ** Bug fixes

    The column position calculations were corrected, and now conform to the
    'bison' convention that the end column is 1 past the last matched position, with the exception that the position of an EOL character is the next line at column 0.

    The invocations of 'yyyDecorate ()', 'yyyExecuteRRsection ()' and 'yyyDoTraversals ()’ at the end of the parse are inhibited if 'yyyabort ()' has been called. The attributed parse tree is almost certainly in an inconsistent state in this case.

    An obscure bug (introduced in ox release 1.9.3) in the start condition initialization in the lexer that strips out Ox constructs was corrected.


    ** Build system

    If the '--enable-maintainer-mode’ configure option is used, terminate with
    an error if the $FLEX version is < 2.6.0, or the $BISON version is < 3.8.2.
    The Ox lexer or parser source cannot be generated by these older versions.

    If the '--enable-maintainer-mode’ configure option is NOT used, suppress the build rules for generation of lexer and parser C++ source files.

    The '--enable-maintainer-mode=dynamic’ configure option is not supported in the Windows host environments.

    The configure script now searches for 'gm4' before 'm4'. The GNU version of 'm4' is required to generate the Ox parser source files from './source/agc-parser.m4', and 'm4' is not always the GNU version.

    The 'LEXGEN_INCLUDE_DIR' configure environment variable is now available to specify a non-standard location for Lexer Generator include files, if any.

    Redundant information in the configuration summary was removed.

    The deprecated '--bison-bridge' configure option was removed.

    The configure script now defaults to a C++ compiler for $LINT.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)