Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Tom Shields Newsgroups: comp.compilers Subject: Announcing Ox release 1.6.1 Date: Thu, 7 Nov 2019 15:30:41 -0600 Organization: Compilers Central Lines: 90 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <19-11-001@comp.compilers> Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3601.0.10\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="93759"; mail-complaints-to="abuse@iecc.com" Keywords: tools, available, attribute Posted-Date: 07 Nov 2019 16:41:23 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:2378 Ox version 1.6.1 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 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 postdecoration 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.6.1 (29 October 2019) ** Enhancements Ox now treats multiple Yacc `%union' declarations as does `bison'. An attribute reference with a missing trailing '@' is now accepted (with a warning) in the evaluation expression of an attribute definition An attribute occurrence in an attribute definition explicit and mixed mode dependent list, and in an explicit mode dependee list, may now be enclosed within '@' symbols. ** Internals The Ox parser and lexers were restructured: - Lexical information is now passed to the parser via Yacc attributes, rather than via global variables. - Code related to the lexical analysis of AG specifications was moved out of the parser and into the lexers. - AG specification transformation code, generating Yacc & Lex compliant specifications, was moved out of the lexers and into the parser. - Semantic tree traversal code generation was repackaged. Message generation was reimplemented to use printf-style format strings with variable argument lists. The Ox parser now implements `error' token assisted error recovery, and `bison' location processing. The parser specification also uses bison 3.0+ extensions to improve syntax error diagnostics, and uses a custom skeleton (derived from the default C skeleton in bison 3.4) to customize format of syntax error messages. The Ox parser will now only build from scratch with bison 3.4+. ** Bug fixes Corrected handling of pre-Standard C string continuations. Ox now removes all output files after fatal errors, unless the "-j" command-line option is used. Ox now diagnoses multiple @revorder dynamic traversal modifiers correctly. Corrected a segfault caused by contorted usage of `@revdirection'. Corrected a segfault caused by a duplicated attribute. Corrected the Ox "-n" command-line option (neutralize semantic actions) implementation to always generate compilable code. ** Documentation None. ** Test suite Test cases for syntactic and semantic errors were added to improve code coverage. The selected lexer and parser generators are now run on all Ox-generated lexer & parser files, with the exception of the stripped files. ** Build system The `configure' script now includes version information in the configuration summary.