Grammatica Version Information
Version 1.0 (2003-05-14):
-
Improved grammar error reporting
Error messages printed by Grammatica have been much
improved in various ways. First, the exception traces are
no longer printed by default. Secondly, the faulting line
is printed on many errors (as done by javac). Thirdly,
ambiguity errors are now reported with a list of conflicting
tokens, making them easier to understand.
-
Corrected parse tree analyzer child handling
A bug in the base Analyzer class caused the child()
methods not to be called when processing a parse tree after
creation (both for C# & Java). When analyzing through
callbacks things did work as expected, though.
Version 0.4 (2003-05-08):
-
Added creation of C# parsers (for .NET)
The parser runtime library has been ported to C#, so it
is now possible to generate parsers for .NET languages. A C#
parser output has also been added to the main program.
-
Added unit tests for generated parsers
Validation of the parsers generated for both C# and
Java has been automated in unit tests. A bug in the previous
release was detected through these tests (see below).
-
Added a first draft reference manual
A first short reference manual has been added to the
documentation. The reference manual is generated to HTML from
XML just as the release notes.
-
Corrected parse exception creation bug
When creating a parse exception, the LL(k) parser in
some situations caused a NullPointerException. This has now
been corrected.
Version 0.3 (2003-05-04):
-
Created XML generated documentation
The release documentation is now available in both text
and HTML format. Both formats are generated with XSLT from a
single source.
-
Added look-ahead loop detection
The look-ahead calculation now detects grammar loops
and all grammar ambiguities. It should no longer be possible
to cause infinite loops with a malformed grammar.
-
Added ambiguity resolution inside alternatives
Some ambiguities inside productions couldn't previously
be resolved by the LL(k) parser. Productions like
["one"] "one" "two"
contain an ambiguity between
the first element and the second, but it is not inherent. This
is now handled correctly by adding look-ahead sets for
individual production elements.
-
Added expected tokens to parse errors
The parse error exceptions now contains a list of the
expected tokens for the unexpected token errors.
-
Added automatic unit tests for the parser
A JUnit class testing the LL(k) parser has been added.
These tests are executed upon every build to verify the
integrity of the parser.
Version 0.2 (2003-04-20):
-
Addition of an internal regular expression library
This improves tokenizer performance by at least 100%
compared to using the GNU RegExp library.
-
Addition of an analyzer framework with parser callbacks
A code generator has also been added to create default
methods for all tokens and productions in the grammar.
-
Major refactorings of the tokenizer and parser classes
Various other classes have also been improved to simplify
future feature additions.
Version 0.1 (2003-03-29):
-
Initial release
The first alpha release. This version was only available
to a limited audience.