anchor.diff:  type LeftCornerParserAction =
       /// Shift into a state.
       | Shift of ParserStateId
  -    /// Goto a state.
  -    | Goto of ParserStateId
       /// Announce that the free position ("recognition point")
       /// has been reached for the specified rule.
       | Announce of ReductionRuleId
  
positive.code:         match this with
          | Shift stateId ->
              "s" + stateId.ToString ()
          | Goto stateId ->
              "g" + stateId.ToString ()
          | Announce ruleId ->
              "n" + ruleId.ToString ()
          | Accept ->
              "a"
  
  //
  type LeftCornerParserTable<'Nonterminal, 'Terminal
      when 'Nonterminal : comparison
      and 'Terminal : comparison> = {
      //
      Table : Map<ParserStateId * Symbol<'Nonterminal, 'Terminal>, Set<LeftCornerParserAction>>;
      //
      ParserStateCount : uint32;
      //
      ReductionRulesById : Map<ReductionRuleId, 'Nonterminal * Symbol<'Nonterminal, 'Terminal>[]>;
  }
  
  //// Utility functions for generating left-corner parsers.
  //module internal Utilities =
  
negative.code: 
          sb.ToString ()
  
  /// A Left-Corner parser state -- i.e., a set of Left-Corner items.
  type internal LeftCornerParserState<'Nonterminal, 'Terminal
      when 'Nonterminal : comparison
      and 'Terminal : comparison> =
      Set<LeftCornerItem<'Nonterminal, 'Terminal>>
  
  //
  type LeftCornerParserTable<'Nonterminal, 'Terminal
      when 'Nonterminal : comparison
      and 'Terminal : comparison> = {
      //
      ActionTable : Map<ParserStateId * 'Terminal, Set<LeftCornerParserAction>>;
      //
      GotoTable : Map<ParserStateId * 'Nonterminal, ParserStateId>;
      //
      ParserStates : Map<ParserStateId, LeftCornerParserState<'Nonterminal, 'Terminal>>;
      //
      ReductionRulesById : Map<ReductionRuleId, 'Nonterminal * Symbol<'Nonterminal, 'Terminal>[]>;
  }
  
  /// Parser-generators for left-corner grammars.
  [<RequireQualifiedAccess>]
  module internal LeftCorner =
      open FSharpYacc.LR
  
      /// Adapts a LALR(1) parser table into an LC(1) parser table.
      let ofLalr1 (lalr1Table : LrParsingTable<'Nonterminal, 'Terminal, 'Terminal>) =
          raise <| System.NotImplementedException "LeftCorner.ofLalr1"
  
  