CoffeeGrinder, Earley and GLL parsers in Java

CoffeeGrinder implements both Earley and GLL parsers. Both are capable of using ambiguous grammars. CoffeeGrinder parses (grinds?) a sequence of tokens and returns a Shared Packed Parse Forest. Individual parse trees can be obtained from the forest.

This parser is a fairly literal implementation of the parser in §5 of SPPF-Style Parsing From Earley Recognisers. It has been extended slightly to return a little more information in the SPPF and to support parses that match only a prefix of the input sequence.

References

Packages 
Package Description
org.nineml.coffeegrinder.exceptions
CoffeeGrinder exceptions.
org.nineml.coffeegrinder.gll
The GLL parser classes.
org.nineml.coffeegrinder.parser
The parser classes.
org.nineml.coffeegrinder.tokens
The token classes.
org.nineml.coffeegrinder.trees
The tree classes.
org.nineml.coffeegrinder.util
Utility classes.
org.nineml.logging
Logging framework.