anchor.diff:              set_add(Symbol, LA)
       end.
   
  -%% -> dict-of({Nonterminal, [Terminal]}).
  +%% -> map-of({Nonterminal, [Terminal]}).
   %% The algorithm FIRST/1 from the Dragon Book.
   %% Left corner table, all terminals (including '$empty') that can
   %% begin strings generated by Nonterminal.
  
positive.code:     Rules = map(fun(#rule{symbols = [Lhs | Rhs]}) ->
                          {Lhs,{Lhs, Rhs}}
                  end, RulesList),
      LeftHandTab = dict:from_list(family(Rules)),
      X0 = [{S,H} || {H,{H,Rhs}} <- Rules, 
                     S <- Rhs, 
                     not is_terminal(SymbolTab, S)],
      XL = family_with_domain(X0, St#yecc.nonterminals),
      X = dict:from_list(XL),
      Xref = fun(NT) -> dict:fetch(NT, X) end,
      E = set_empty(),
      LC0 = dict:from_list([{H, E} || {H,_} <- XL]),
      %% Handle H -> a S, where a is a terminal ('$empty' inclusive).
      {Q, LC1} =
          foldl(fun({H,{H,[S | _]}}, {Q0, LC}) ->
  
negative.code:     Symbol2Rule = [{Foo,R} || #rule{symbols = Symbols}=R <- RulesListNoCodes,
                                Foo <- Symbols],
      Pointer2Rule = [{I, R} || {{_Foo,R},I} <- count(1, Symbol2Rule)],
      {maps:from_list(IndexedTab), maps:from_list(Pointer2Rule)}.
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Computing parse action table from list of states and goto table:
  