Revision History | |
---|---|
Revision 0.2.1a | 2009-01-19 |
Added changes for the version 0.2.1a. | |
Revision 0.2.1 | 2009-01-19 |
Added changes for the version 0.2.1. | |
Revision 0.2.0 | 2006-02-05 |
This is the first version of the document. |
Abstract
This document contains the history of changes.
Table of Contents
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).
.