anchor.diff:  -define(FLUSH(Other),
     case CurrTAcc of
       [] -> [Other | AllTAcc];
  -    _ -> [[Other, {string, ?LN, lists:reverse(CurrTAcc)}] | AllTAcc]
  +    _ ->
  +      case State of
  +        {true} ->
  +          [[{attr, ?LN, Other}, {attr, ?LN, string:strip(lists:reverse(CurrTAcc))}] |
  +            AllTAcc];
  +        {false} ->
  +          [[{sel, ?LN, Other}, {sel, ?LN, string:strip(lists:reverse(CurrTAcc))}] |
  +            AllTAcc]
  +      end
     end).
   -define(SFLUSH,
     case CurrTAcc of
       [] -> AllTAcc;
  -    _ -> [{string, ?LN, lists:reverse(CurrTAcc)} | AllTAcc]
  +    _ ->
  +      case State of
  +        {true} ->
  +          [{attr, ?LN, string:strip(lists:reverse(CurrTAcc))} | AllTAcc];
  +        {false} ->
  +          [{sel, ?LN, string:strip(lists:reverse(CurrTAcc))} | AllTAcc]
  +      end
     end).
   -define(LN, get(line_num)).
   
  
positive.code: 
  % Starting an attribute
  line_tokens([?T_ATTR_ST | T], _, [], AllTAcc, _State) ->
    line_tokens(T, ?T_ATTR_ST, [], [{start_attrib, ?LN} | AllTAcc], {true});
  line_tokens([?T_ATTR_ST | T], $ , CurrTAcc, AllTAcc, _State) ->
    line_tokens(T, ?T_ATTR_ST, [], ?FLUSH({start_attrib, ?LN}), {true});
  
  % Parent separator
  line_tokens([?T_PAR_SEP | T], _, CurrTAcc, AllTAcc, {false}) ->
    line_tokens(T, ?T_PAR_SEP, [], ?FLUSH({parent_sep, ?LN}), {false});
  
  % Whitespace.  Flush token.
  line_tokens([$\n | T], _, CurrTAcc, AllTAcc, State) ->
    line_tokens(T, $\n, [], ?SFLUSH, State);
  line_tokens([H | T], _Last, CurrTAcc, AllTAcc, {false}) when
      ((H >= $\x{0009}) and (H =< $\x{000D}))
      or (H == $\x{0020}) or (H == $\x{00A0}) ->
    line_tokens(T, H, [], ?SFLUSH, {false});
  
  line_tokens([H | T], _Last, CurrTAcc, AllTAcc, State) ->
    line_tokens(T, H, [H | CurrTAcc], AllTAcc, State).
  
negative.code: line_tokens([?T_STR_MLT_ST_2 | T], ?T_STR_MLT_ST_1,
      [_ | CurrTAcc], AllTAcc, State) ->
    {Str, Remaining} = pull_inner(T, fun line_pull_in_str/1),
    line_tokens(Remaining, string, [], ?FLUSH(Str), State);
  
  % Inline comment - pretend we're at the end of the string
  line_tokens([?T_IGN_INL_2 |_], ?T_IGN_INL_1, [_ | CurrTAcc], AllTAcc, State) ->
  