anchor.diff:  
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% Parsing real pages
  +file_parse(File) ->
  +  {ok,B} = file:read_file(File),
  +  lists:reverse(sax(B,fun(T,A)-> [T|A] end, [])).
  +
  +wget_parse(Url) ->
  +  sax(wget(Url),fun(T,A)-> A++[T] end, []).
  +
  +wget_print(Url) ->
  +  io:fwrite("~s~n",[wget(Url)]).
  +
   wget(Url) ->
     inets:start(),
     {ok, {_Rc, _Hdrs, Body}} = http:request(get, {Url, []}, [], []),
     Body.
  -
  -file_parse(File) ->
  -  {ok,B} = file:read_file(File),
  -  sax(B,fun(T,A)-> [T|A] end, []).
  -
  -wget_parse(Url) ->
  -  sax(wget(Url),fun(T,A)-> A++[T] end, []).
  -
  -wget_print(Url) ->
  -  io:fwrite("~s~n",[wget(Url)]).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% ad-hoc unit test
  
positive.code: 
  ff(What,Str) -> ff(What,Str,[]).
  
  ff(What,<<>>,A) -> {{text,lists:reverse(A)},"",eof};
  ff(What,?m("<",Str),A) -> {{tag,""},Str,{text,lists:reverse(A)}};
  ff(What,?d(H,Str),A) -> ff(What,Str,[H|A]).
  
  % ff(What,Str) ->
  %   case ff(Str,ff(What),[1,2]) of
  
negative.code: -define(ev(X), ?ws(X); X==$>; X==$=).
  
  tokenize(Str) when is_integer(hd(Str))-> tokenize(list_to_binary(Str));
  tokenize(Str) when is_binary(Str) -> tokenize({text,Str,{text,""}});
  
  tokenize({text,Str,Token}) ->
    case ff(text,Str) of
      {{tag,""},EStr,{text,Txt}} -> 
        try [Token,{text,Txt}]++tokenize(t({tag,""},ws(EStr)))
        catch _:_ -> TB = list_to_binary(Txt),
                     tokenize({text,<<TB/binary,"&lt;",EStr/binary>>,Token})
        end;
  