anchor.diff:  -module(refac_scan).
   
   -export([format_error/1, reserved_word/1, string/1, string/2,
  -	 string/3, tokens/3]).
  +	 string/4, tokens/3]).
  +
  +-compile(export_all).
   
   -import(lists, [member/2, reverse/1]).
   
   -define(DEFAULT_TABWIDTH, 8).
  +-define(DEFAULT_FILEFORMAT, unix).
   
   format_error({string, Quote, Head}) ->
       ["unterminated " ++
  
positive.code: %%       CurrentPos,ContState,ErrorStack,ContFunArity5}
  
  %% definitely should sperate {Line, Col} and TabWidth;; HL.
  tokens([], Chars, {{Line, Col}, TabWidth}) ->
      tokens({[], [], [], {Line, Col}, io, [], TabWidth, fun scan/7}, Chars, {{Line, Col}, TabWidth});
  tokens({Cs, _Stack, _Toks, {Line, Col}, eof, TabWidth, _Fun}, eof, {_, TabWidth}) ->
      {done, {eof, {Line, Col}}, Cs};
  tokens({Cs, Stack, Toks, {Line, Col}, _State, Errors,TabWidth,Fun}, eof, {_, TabWidth}) ->
      Fun(Cs ++ eof, Stack, Toks, {Line, Col}, eof, Errors, TabWidth);
  tokens({Cs, Stack, Toks, {Line, Col}, State, Errors,TabWidth,Fun},Chars, {_, TabWidth}) ->
      Fun(Cs ++ Chars, Stack, Toks, {Line, Col}, State,Errors, TabWidth).
  
  %% Scan loop.
  %%
  
negative.code: %%	{error,{ErrorPos,?MODULE,What},EndPos}
  
  string(Cs) ->
      string(Cs, {1, 1}, ?DEFAULT_TABWIDTH, ?DEFAULT_FILEFORMAT).
  
  
  string(Cs, {Line, Col}) -> string(Cs, {Line, Col}, ?DEFAULT_TABWIDTH, ?DEFAULT_FILEFORMAT).
  
  string(Cs, {Line, Col}, TabWidth, FileFormat)
      when is_list(Cs), is_integer(Line), is_integer(Col), is_integer(TabWidth) ->
      %     %% Debug replacement line for chopping string into 1-char segments
      %     scan([], [], [], Pos, Cs, []).
      scan(Cs, [], [], {Line, Col}, [], [],TabWidth,FileFormat).
  
  
  %% tokens(Continuation, CharList, StartPos) ->
  