Release notes for 0.14

Parenthesized groups

RHS in grammar rules now can used parentheses to group element. These groups behave similar to any other rule reference. E.g. repetitions and assignments can be applied.

Previously:

S: a_then_b*[comma] c;
a_then_b: a b;
...

Now you can write:

S: (a b)*[comma] c;
...

You can nest groups, combine with choice operator etc.

S: ( (a c)+ | b)*[comma] c;

For more info see a new section in the docs.

GLR forest

GLR now returns Forest object. This object represents all the possible solutions. Forest can be iterated, indexed, yielding lazy parse trees.

See more info in the docs.

Extensions to pglr command

pglr trace now provides --frontier flag to organize GSS nodes into frontiers. See the docs.

pglr parse is added for parsing input strings and files and producing forests and trees as either string or graphical dot representation. See the docs.

Support for visitor

Visitor pattern is supported as a visitor function enabling depth-first processing of tree-like structures. See the docs.

New examples

Several new examples are added:

Performance tests

New performance tests based on new example grammars are provided in tests/perf. Run runall.sh and read the reports in tests/perf/reports.