anchor.diff:    {col,{?OP(O,R,N),?OP(O,G,N),?OP(O,B,N),A}};
   
   calculate(LN, Op, {Type, _}, {col, _}) ->
  -  erlang:error("Cannot '" + [Op] + "' a " ++ script_var_name(Type) ++
  -    "and a color together- on line " ++ integer_to_list(LN));
  +  erlang:error("Cannot '" + [Op] + "' a '" ++ Type ++
  +    "' and a color together- on line " ++ integer_to_list(LN));
   calculate(LN, Op, {col, _}, {Type, _}) ->
  -  erlang:error("Cannot '" + [Op] + "' a " ++ script_var_name(Type) ++
  -    "and a color together- on line " ++ integer_to_list(LN));
  -
  +  erlang:error("Cannot '" + [Op] + "' a '" ++ Type ++
  +    "' and a color together- on line " ++ integer_to_list(LN));
  +
  +% Number to number
   calculate(_LN, O, {num, N1}, {num, N2}) ->
     {num, ?OP(O,N1,N2)};
   
  -
  -calculate(_,_,A,_) ->
  -  A.
  +% Number to size
  +calculate(_LN, O, {num, N1}, {Type, N2}) when is_integer(N2) or is_float(N2) ->
  +  {Type, ?OP(O,N1,N2)};
  +calculate(_LN, O, {Type, N1}, {num, N2}) when is_integer(N1) or is_float(N1) ->
  +  {Type, ?OP(O,N1,N2)};
  +
  +% Size to size - simple case where they match first
  +calculate(_LN, O, {Type, N1}, {Type, N2}) when is_integer(N1) or is_float(N1) ->
  +  {Type, ?OP(O,N1,N2)}.
  +
  +%calculate(_LN, O, {T1, N1}, {T2, N2}) when
  +%    (is_integer(N1) or is_float(N1)) and
  +%    (is_integer(N2) or is_float(N2)) ->
  +
  +
  +
   
   
   translate_value({col, {R, G, B, 1}}) ->
  
positive.code: -module(zss_parser).
  
  -export([parse/1, evaluate_expression/2]).
  
  -define(E_FLUSH(Tok),
    case script_var(lists:reverse(TAcc)) of
      nothing ->
        tokenize_expression(T, LN, break, [], [Tok | Acc]);
      {str, S} ->
        case get("V" ++ S) of
          undefined ->
            erlang:error(S ++ " undefined on line " ++ integer_to_list(LN));
          SavedVal ->
            tokenize_expression(T, LN, break, [], [Tok | [{val, SavedVal} | Acc]])
        end;
      Val ->
        tokenize_expression(T, LN, break, [], [Tok | [{val, Val} | Acc]])
    end).
  
negative.code:   [$#,R1,G1,B1];
  condense_color(V) ->
    V.
  
  % TODO:
  %  Differentiate here between strings and variables based on something else.
  inject_variables(S) ->
    case get("V" ++ S) of
      undefined ->
        {str, S};
      SavedVal ->
        SavedVal
    end.
  