Context free grammars.
A symbol is presented to the user as an int (internally, it is an object). This has several advantegous over Object symbols: 1. ordering, enumeration; 2. effciency.
TODO: o provide moves, i.e. (prod,ofs). o cleanup o some methods have overlapping functionality o improved method names o Grammar -> CFG?