Today is a big release day: Phorward Library v0.22 including updated documentation is there, together with UniCC 1.4 coming with support for C++ as target!
What's new to the Phorward Library?
- Parsing tools
- Revised all modules, separating the grammar definition entirely from the
parsing algorithm, lexer, parser and abstract syntax tree. This allows for
a much higher modularity. The
pppar object now represents the internal
LALR parser that can be executed on arbitrary input, with a combined lexical
analyzer implemented using
- Revised and simplified LR parser driver, now working on state machine, and
not the data-structures from lr.c anymore.
- Created better definition language called PBNF (Phorward BNF, pbnf.c)
- Frontends for BNF, EBNF and a Phorward-style BNF (PBNF) as input grammars
using the functions pp_gram_from_bnf(), pp_gram_from_ebnf() and
- Implied precedence & associativity for LALR conflict resolution, which can
be used via
>> (right-associative) and
^^ (non-associative) in the pbnf language.
- Regular expressions
- Internal revisions and renamings.
- Cleaning data structures from temporal and ephemeral values.
start in the
- Trace facilities
- Evalutation of the TRACEFUNCTION environment variable to switch trace output
also on function-level, rather than module level.
- New LOG macro to allow for printf-style formatted output.
- Improved the plex command-line utility, it now recognizes
correctly, allows for escape sequences and can read from stdin.
- Improved the pregex command-line utility to use the input parameter as is,
if the parameter is not the name of a file.
- Removed warnings and unused static functions from the entire library.
- Fixing & refactoring in p_ccl_parseshorthand() that caused invalid dfa state
machines generated from regular expressions on some 32-bit machine
- plex_tokenize() ran under some circumstances into an endless-loop.
- Documentation updated
And what's new to UniCC?
- Compiled and linked against libphorward 0.22
- C++ target forked from the C target startet
- action_prefix value can be defined in target language templates to
@-prefix for action code variables by any other desired
prefix. This change has been done to make target language processing easier
for languages where the
@-sign is part of the target language syntax.