Allow terminal to be defined as a string to match a string, rather than a token production. (reverse-merged from commit f21fb7d5a07d4793b2db5dcb7f6822d489f2b1b8)
Guard on delegation of production and terminal method calls.
Fix rule FF.2 to add from first_rule even if comprehension has no firsts.
On end of input, allow remaining terms, if they are optional.
Create Terminal class, which can take a mapping, to transform case-insensitively matched terms to their canonical form, and to do unescaping.
Be more liberal in creating FIRST rules.