GRAMMATICA VERSION INFORMATION
==============================

Version 1.0 (2003-05-14):
-------------------------

    o 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.

    o 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):
-------------------------

    o 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.

    o 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).

    o 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.

    o 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):
-------------------------

    o 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.

    o 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.

    o 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.

    o Added expected tokens to parse errors
      The parse error exceptions now contains a list of the expected 
      tokens for the unexpected token errors.

    o 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):
-------------------------

    o Addition of an internal regular expression library
      This improves tokenizer performance by at least 100% compared 
      to using the GNU RegExp library.

    o 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.

    o 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):
-------------------------

    o Initial release
      The first alpha release. This version was only available to a 
      limited audience.


_____________________________________________________________________

Grammatica 1.0 (2003-05-14). See http://www.nongnu.org/grammatica for
more information.

Copyright (c) 2003 Per Cederberg. Permission is granted to copy this 
document verbatim in any medium, provided that this copyright notice 
is left intact.
