- Removed the ProductionIndex, ProductionKey, and ReductionRuleId types, and replaced them with the ProductionRuleId type; modified existing code to use ProductionRuleId.
- Modified the LrTableGenState type -- it's no longer a record, but a tuple of LrParserTable and the new LrTableGenEnvironment type. This allows the parser table to be created on-the-fly, and the "environment" part of the tuple holds various lookup tables needed while creating the table.
- Optimized the 'createTableImpl' functions in the Lr0 and Lr1 modules so they use a proper worklist-based algorithm; this greatly improves their efficiency, as the original implementation performed many redundant calculations.
- NOTE : These changes haven't yet been tested -- they must be verified before merging them into the 'master' branch.
- Pass in the production-rule-id map to some table-creating functions which now require it.
- Added a method 'Grammar.ProductionRuleIds' to create the production-rule-id map for a grammar.