Project history

Constantine Plotnikov

Revision History
Revision 0.2.1a2009-01-19

Added changes for the version 0.2.1a.

Revision 0.2.12009-01-19

Added changes for the version 0.2.1.

Revision 0.2.02006-02-05

This is the first version of the document.

Abstract

This document contains the history of changes.


Table of Contents

1. Version 0.2.1a
2. Version 0.2.1
3. Version 0.2.0

1. Version 0.2.1a

  • The minor changes to the samples noticed during release process.

2. Version 0.2.1

  • The tutorial has been added.

  • Versions of core grammars doctypes and their namespaces changed to 0.2.1.

  • The documentation is significantly updated.

  • The XSLT script that converts 0.2.0 grammar to 0.2.1 grammars is added. The script is able to handle most of the changes except for changes in the lexical level. In some places a space should be inserted manually.

  • Copyright header on files is updated to reflect the year changes.

  • EMF libraries are no more redistributed since parser does not depend on them. EMF related code is not distributed, but it still available from SVN. The code will be likely returned to the project later.

  • The project switched to Java 5. Generics and Enumerations are used in interfaces where applicable. As result, the binary compatibility with the previous release is broken. However client code will likely recompile without significant problems.

  • The project switched from EMF-based grammar model to lightweight grammar model based on the fields. This improved performance and removed EMF as core parser dependency. EMF is still supported as optional component. This change also simplifies maintenance of the grammar model since changes could be done significantly faster. There is no code generation cycle and refactoring works without problems.

  • To support work with new grammar model a class FieldTermParser has been added.

  • Imports are now optional when referring contexts in the same grammar. The contexts from the same grammar could be referred directly by the name.

  • First-choice construct has been introduced. Its uses "/" symbol. The parser tries to match the first part and if it fails, it tries to match the second alternative. The operator has the precedence level 200. The choice operator "|" is still supported and now has the precedence level 300.

  • Operator definition syntax has been slightly changed. Now composite and simple objects are mapped to single syntax. Composite is option specified by "composite" modifier and omitting operator text (and possibly precedence).

    Brackets and section constructs are replaced with pattern operator that interleaves keywords escaped by % and blocks. Also precedence could be specified for all operator kinds including f .

    Object creation keyword is now "^" instead of "object" . Property specification keyword is now "@" instead of "let" .

  • The root object can be now omitted from statement and operator definition. In that case the name is inferred basing on the default (specified using the default modifier on the namespace declaration) namespace and definition name.

  • Backslash \ was added to the set of valid graphics characters. The back quote character ` and dollar character $ are now considered graphics as well.

  • Added support for multiline strings. Multiline strings start with three quote characters of the specified kind and end with three quote characters as well.

  • Added support for prefixed strings. If identifier is followed by a string without white space between them, it considered to be a prefix of the string. For example UTF8"Unicode Text" . This works of multiline strings as well.

  • Suffixes are now specified as identifiers rather than strings. It is now possible to separate suffixes for the number using "|", so float(suffix="f") | float(suffix="f") could be written as float(suffix=f|F). .

3. Version 0.2.0

This is a first public release of framework. Before that there were only unofficial demo versions.