anchor.diff:  tz({'!',DT},?m(">",Str))                  -> {text,Str,{'!',DT}};
   tz({'!',DT},?d(X,Str))                    -> {{'!',DT++[X]},Str};
   tz({'!',_}, <<>>)                         -> throw(incorrect_sgml);
  +
  +tz({'!--',DT},?m("-->", Str))              -> {text,Str,{'!--',DT}};
  +tz({'!--',DT},?d(X,Str))                   -> {{'!--',DT++[X]},Str};
   
   tz({que,DT},?m("?>",Str))                 -> {text,Str,{que,DT}};
   tz({que,DT},?d(X,Str))                    -> {{que,DT++[X]},Str};
  
positive.code: build_ast2([{'!', Params}|T], Ast, Tags, {N, NT}) ->
      %io:format("! ~w, ~w, ~w, +1~n", [Params, Ast, Tags]),
      build_ast2(T, [{'!', Params}|Ast], Tags, {N + 1, NT});
  build_ast2([{que, Params}|T], Ast, Tags, {N, NT}) ->
      %io:format("! ~w, ~w, ~w, +1~n", [Params, Ast, Tags]),
      build_ast2(T, [{que, Params}|Ast], Tags, {N + 1, NT});
  
negative.code: tz(nil,?d(_,Str))                         -> {nil,Str};
  tz(nil, <<>>)                         	  -> throw(incorrect_sgml);
  
  tz({tag,""},?m("!--",Str))                -> {{'!--',""},Str};
  tz({tag,""},?m("!",Str))                  -> {{'!',""},ws(Str)};
  tz({tag,""},?m("?",Str))                  -> {{que,""},ws(Str)};
  tz({tag,""},?m("/",Str))                  -> {{end_tag,""},ws(Str)};
  