anchor.diff:  
   -module(es_parse).
   
  --export([toplevel/1]).
  -
  +-export([ toplevel/1
  +        ]).
  +
  +-type sexpr() :: term().
  +-type ast() :: term().
  +
  +%% API -------------------------------------------------------------------------
  +
  +-spec toplevel(sexpr()) -> ast().
   toplevel(Sexpr) ->
     parse(Sexpr, es_env:empty(), true).
  +
  +%% Internals -------------------------------------------------------------------
   
   parse(Sexpr, Env) ->
     parse(Sexpr, Env, false).
  
positive.code:       parse_atom(Symbol, Env);
      _ ->
        case is_self_evaluating(Sexpr) of
  	true ->
  	  {'ES:QUOTE', Sexpr};
  	false ->
  	  erlang:throw({invalid_expression, Sexpr})
        end
    end.
  
  
negative.code:       {'ES:QUOTE', Atom};
      _ ->
        case es_env:lookup(Env, Atom) of
          {value, _} ->
            {'ES:LOCVAR', Atom};
          none ->
            {'ES:GLOVAR', Atom}
        end
    end.
  
  