anchor.diff:  scan_string(Line, _Column, [$\n|Rest], Term, Acc) ->
     scan_string(Line+1, 1, Rest, Term, [$\n|Acc]);
   scan_string(Line, _Column, [$\r, $\n|Rest], Term, Acc) ->
  -  scan_string(Line+1, 1, Rest, Term, [$\n |Acc]);
  -scan_string(Line, Column, [$\\, Term|Rest], Term, Acc) ->
  -  scan_string(Line, Column+2, Rest, Term, [Term|Acc]);
  +  scan_string(Line+1, 1, Rest, Term, [$\n|Acc]);
  +scan_string(Line, Column, [$\\, C|Rest], [C] = Term, Acc) ->
  +  scan_string(Line, Column+2, Rest, Term, [C|Acc]);
   scan_string(Line, Column, [$\\, Char|Rest], Term, Acc) ->
     scan_string(Line, Column+2, Rest, Term, [Char, $\\|Acc]);
   %% Catch all clause
  
positive.code: %% Error
  
  format_error({missing_terminator, Close, Open, OpenLine}) ->
    io_lib:format("missing terminator: ~ts (for \"~ts\" opening at line ~B", [Close, Open, OpenLine]);
  format_error({invalid_n_base_char, Char, Base, Line}) ->
    io_lib:format("invalid char: ~tc for ~B-base number at line ~B", [Char, Base, Line]);
  format_error({invalid_eof, escape}) ->
  
negative.code: escape_char(List) ->
    {ok, <<Char/utf8>>} = unescape_chars(list_to_binary(List)),
    Char.
  
  unescape_token(Token) ->
    unescape_token(Token, fun unescape_map/1).
  