Modified the expected tables so they match the table from the book, but then modified them slightly for Graham since Graham uses a different ordering than the book (so ids are issued in a different order).
Fixed the test for the LR(0) parser table for Appel grammar 3.23. It now passes.
Fixed the test for the SLR(1) parser table for Appel grammar 3.23. It currently fails because the Slr1.upgrade function doesn't seem to change the LR(0) table at all.
Fixed the LR(1) test for Appel grammar 3.26.
Partially fixed the LALR(1) test for Appel grammar 3.26.
Don't offset the production rules -- start numbering at zero. This fixes an issue discovered while fixing the unit tests.
Implemented a LrParserActionSet.Contains method which can be used in the future to detect possible error conditions.
Fixed the LALR(1) test for Appel grammar 3.26.
All unit tests for Graham now pass.