* Add a simple way to specify syntactic ambiguity resolutions in the Grammar (e.g. 'prefer declarations to statements' in C)
* Optimize the lexical DFA so that all compatible starting lex states are merged. Then, when the parse stack has multiple heads, check at runtime that each head's state corresponds to the same starting lex state.
* Fix memory leaks in the graph-structured parse stack.
* Add a NodeIterator class that can be used to traverse the tree efficiently.
* Stop storing nodes' visible children in a separate array. Instead, allow traversing the tree at two different levels of abstraction: one which includes anonymous tokens (the concrete syntax tree) and one that does not (the sufficiently-abstract syntax tree).