anchor.diff:        Term :: term(),
         ErrorInfo :: error_info().
   parse_term(Tokens) ->
  +    ?ANNO_CHECK(Tokens),
       A = erl_anno:new(0),
       case parse([{atom,A,f},{'(',A},{')',A},{'->',A}|Tokens]) of
   	{ok,{function,_Af,f,0,[{clause,_Ac,[],[],[Expr]}]}} ->
  
positive.code:       AbsForm :: abstract_form(),
        ErrorInfo :: error_info().
  parse_form([{'-',A1},{atom,A2,spec}|Tokens]) ->
      parse([{'-',A1},{'spec',A2}|Tokens]);
  parse_form([{'-',A1},{atom,A2,callback}|Tokens]) ->
      parse([{'-',A1},{'callback',A2}|Tokens]);
  parse_form(Tokens) ->
      parse(Tokens).
  
  -spec parse_exprs(Tokens) -> {ok, ExprList} | {error, ErrorInfo} when
  
negative.code: %% keep track of annotation info in tokens
  -define(anno(Tup), element(2, Tup)).
  
  %-define(DEBUG, true).
  
  -ifdef(DEBUG).
  %% Assumes that erl_anno has been compiled with DEBUG=true.
  -define(ANNO_CHECK(Tokens),
          [] = [T || T <- Tokens, not is_list(element(2, T))]).
  -else.
  -define(ANNO_CHECK(Tokens), ok).
  -endif.
  
  %% Entry points compatible to old erl_parse.
  %% These really suck and are only here until Calle gets multiple
  %% entry points working.
  