anchor.diff:  number -> float : handle_literal(number_value('$1'), '$1', [{original, ?exprs('$1')}]).
   
   %% Aliases and properly formed calls. Used by map_expr.
  -max_expr -> atom : handle_literal(?exprs('$1'), '$1').
  -max_expr -> atom_safe : build_quoted_atom('$1', true).
  -max_expr -> atom_unsafe : build_quoted_atom('$1', false).
  +max_expr -> atom : handle_literal(?exprs('$1'), '$1', []).
  +max_expr -> atom_safe : build_quoted_atom('$1', true, []).
  +max_expr -> atom_unsafe : build_quoted_atom('$1', false, []).
   max_expr -> parens_call call_args_parens : build_identifier('$1', '$2').
   max_expr -> parens_call call_args_parens call_args_parens : build_nested_parens('$1', '$2', '$3').
   max_expr -> dot_alias : '$1'.
  
positive.code:     end,
    {{'.', Meta, ['Elixir.String', to_charlist]}, Meta, [{'<<>>', MetaWithExtra, string_parts(Args)}]}.
  
  build_quoted_atom({_, _Location, [H]} = Token, Safe) when is_binary(H) ->
    Op = binary_to_atom_op(Safe),
    handle_literal(erlang:Op(H, utf8), Token);
  build_quoted_atom({_, Location, Args}, Safe) ->
    Meta = meta_from_location(Location),
    {{'.', Meta, [erlang, binary_to_atom_op(Safe)]}, Meta, [{'<<>>', Meta, string_parts(Args)}, utf8]}.
  
  binary_to_atom_op(true)  -> binary_to_existing_atom;
  binary_to_atom_op(false) -> binary_to_atom.
  
negative.code: 
  %% Blocks
  
  do_block -> do_eoe 'end' :
                [[{handle_literal(do, '$1', [{keyword, true}]), handle_literal(nil, '$1')}]].
  do_block -> do_eoe stab end_eoe :
                [[{handle_literal(do, '$1', [{keyword, true}]), build_stab(reverse('$2'))}]].
  do_block -> do_eoe block_list 'end' :
                [[{handle_literal(do, '$1', [{keyword, true}]), handle_literal(nil, '$1')} | '$2']].
  do_block -> do_eoe stab_eoe block_list 'end' :
                [[{handle_literal(do, '$1', [{keyword, true}]), build_stab(reverse('$2'))} | '$3']].
  
  eoe -> eol : '$1'.
  eoe -> ';' : '$1'.
  