anchor.diff:  
   tz({attr,"",{Tag,As}},S)when ?endv(S)   -> {{etag,dc(Tag),As},S};
   tz({attr,A,{T,As}},S)when ?endv(S)      -> {{eatt,{dc(A),T,As}},ws(S)};
  -tz({attr,A,TAs},[X|Str])                -> {{attr,A++[X],TAs},Str};
  +tz({attr,A,TAs},[X|Str])when ?ok(X)     -> {{attr,A++[X],TAs},Str};
   
   tz({eatt,ATAs},"="++Str)                -> {{val,ATAs},ws(Str)};
  -tz({eatt,{A,Tag,As}},S)                 -> {{attr,"",{Tag,As++[{A,""}]}},ws(S)};
  +tz({eatt,{A,T,As}},S)                   -> {{attr,"",{T,As++[{A,""}]}},ws(S)};
   
   tz({val,ATAs},[X|Str])when ?sq(X)       -> {{sqval,"",ATAs},Str};%singlequoted
   tz({val,ATAs},[X|Str])when ?dq(X)       -> {{dqval,"",ATAs},Str};%doublequoted
  
positive.code:      {"<tag catt xatt=\"\" batt>",
        [{tag,"tag",[{"catt",""},{"xatt",""},{"batt",""}]},
         {end_tag,"tag"}]},
       {"<P a=b c=d>hej<!-- tobbe --><b>svejsan</b>foo</p>grump<x x=y />",
        [{tag,"p",[{"a","b"},{"c","d"}]},
         {text,"hej"},
  
negative.code: ff(What,Str) ->
    case ff(Str,ff(What),[1,2]) of
      [Scr,Rest] -> {{tag,""},ws(Rest),{text,Scr}};
      [] -> {{text,Str},"",eof}
    end.
  
  ff(script)-> "(.*)<(\\s*/\\s*script\\s*>.*)\$";
  