Skip to content

Version 1.5

Compare
Choose a tag to compare
@cederberg cederberg released this 13 Mar 12:05
· 23 commits to master since this release
  • License modified to GNU LGPL version 3
    The license agreement for this library has been changed to GNU LGPL,
    version 3. This change was made for compatibility reasons and most
    users will remain unaffected.
  • Added Visual Basic.NET code generation
    A Visual Basic.NET source code generator has been contributed by
    Adrian Moore. It uses the same run-time library (DLL) as the C# .NET
    version.
    Bug #8199
  • Added support for case-insensitive parsing
    A CASESENSITIVE grammar declaration has been added to make it
    possible to parse in case-insensitive mode. By default all parsing is
    case-sensitive. Thanks to Adrian Moore for providing a partial implementation.
    Bug #5060
  • Added support for reusing parsers and tokenizers
    A reset() method has been added to both the Parser and the Tokenizer
    classes, allowing to reuse a parser with a new input stream. By reusing a
    single parser and tokenizer for various input files speed and memory
    gains can be made, especially for complex grammars.
    Bug #4500
  • Added factory methods for creating various objects
    New factory methods for creating tokens, productions, tokenizers and
    analyzers have been added. These can be overridden in subclasses to
    provide more specific classes if desired.
  • Improved the tokenizer processing speed
    The tokenizer speed has been improved by using a custom DFA
    implementation for regular expressions. The tokenization phase now
    runs some 20-30% faster in the general case.
    Bug #3603 &
    Bug #8202
  • Changed to use native Java regular expressions
    Since the built-in regular expression library is not used as frequently
    after the implementation of DFA regular expression handling, the native
    Java regular expression classes are now used. This implies improved
    support for advanced regular expression syntax (at a performance
    penalty).
    Bug #3597 &
    Bug #17189
  • Changed .NET parser namespace for C# 2.0
    The C# parser namespace has been modified from PerCederberg.Grammatica.Parser
    to PerCederberg.Grammatica.Runtime due to the new C# 2.0 compiler strictness.
    Bug #14302
  • Changed .NET parser API for better integration
    The .NET parser API has been modified for almost all classes, introducing
    properties and indices instead of getter and setter methods. The old methods
    have been deprecated, but are still available to avoid breaking existing applications.
    Bug #8693
  • Changed built-in regular expression API subtly
    Due to fixes required to be able to reuse tokenizers, the built-in regular
    expression class API had to be changed subtly. In essence, all the methods
    can now throw IOException which breaks a Java compile.
    Bug #4500
  • Fixed possible divide by zero in profiling
    When profiling grammars with small input files, the time measured could
    previously be zero (0). This caused a division by zero exception when
    calculating the number of tokens parsed per second.
    Bug #7998
  • Fixed parse error on some grammar comments
    Grammar comments ending with **/ previously caused a parse error.
    The comment token regular expression has now been corrected to fix this.
    Bug #12767
  • Fixed premature EOF reported in some cases
    The tokenizer previously assumed EOF had been encountered when a full
    look-ahead buffer couldn't be read. Thanks to Jeremy M Stone for finding this.
    Bug #23818
  • Fixed token match priority to use the grammar order
    String tokens were previously always checked and considered first, unless a
    regular expression token matched more characters. This has now been
    changed to depend on the grammar file ordering instead.
    Bug #13009