anchor.diff:  stringify1([T | Tokens]) ->
       [io_lib:format(" ~s", [token_src(T)]) | stringify1(Tokens)].
   
  -stringify(L) ->
  -    [$\s | S] = lists:flatten(stringify1(L)),
  -    [{string, 1, S}].
  +%% stringify(L) ->
  +%%    [$\s | S] = lists:flatten(stringify1(L)),
  +%%    [{string, 1, S}].
  +
  +stringify(Ts, L) ->
  +    [$\s | S] = lists:flatten(stringify1(Ts)),
  +    [{string, L, S}].
   
   %% epp_request(Epp)
   %% epp_request(Epp, Request)
  
positive.code: %%% the information from St#epp.uses is traversed, and if a circularity
  %%% is detected, an error message is thrown.
  
  scan_define_cont(F, St, M, Def) ->
      Ms = dict:store(M, Def, St#epp.macs),
      U = dict:store(M, macro_uses(Def), St#epp.uses),
      scan_toks(F, St#epp{uses=U, macs=Ms}).
  
  macro_uses(undefined) ->
      undefined;
  
negative.code: 	    check_uses(Rest, Anc, U, Lm)
      end.
      
  get_macro_uses({M,Arity}, U) ->
      case dict:find(M, U) of
  	error ->
  	    [];
  	{ok, L} ->
  	    proplists:get_value(Arity, L, proplists:get_value(none, L, []))
      end.
  
  
  %% Macro expansio
  expand_macros([{'?',_Lq},{atom,_Lm,M}=MacT|Toks], Ms) ->
      expand_macros(atom, MacT, M, Toks, Ms);
  %% Special macros
  expand_macros([{'?',_Lq},{var,Lm,'LINE'}|Toks], Ms) ->
      [{integer,Lm,Lm}|expand_macros(Toks, Ms)];
  expand_macros([{'?',_Lq},{var,_Lm,M}=MacT|Toks], Ms) ->
      expand_macros(atom, MacT, M, Toks, Ms);
  %%Illegal macros
  expand_macros([{'?',_Lq},{Type,Lt}|_Toks], _Ms) ->
       throw({error,Lt,{call,[$?|atom_to_list(Type)]}});
  