anchor.diff:  
   process_incr_decr([], Processed) ->
       Processed;
  -process_incr_decr([{<<"++">>,_},#variable{}=V|Rest], Processed) ->
  +process_incr_decr([{<<"++">>,_,_Pos},#variable{}=V|Rest], Processed) ->
       process_incr_decr(Rest, Processed ++ [{pre_incr, V}]);
  -process_incr_decr([{<<"--">>,_},#variable{}=V|Rest], Processed) ->
  +process_incr_decr([{<<"--">>,_,_Pos},#variable{}=V|Rest], Processed) ->
       process_incr_decr(Rest, Processed ++ [{pre_decr, V}]);
  -process_incr_decr([#variable{}=V,{<<"++">>,_}|Rest], Processed) ->
  +process_incr_decr([#variable{}=V,{<<"++">>,_,_Pos}|Rest], Processed) ->
       process_incr_decr(Rest, Processed ++ [{post_incr, V}]);
  -process_incr_decr([#variable{}=V,{<<"--">>,_}|Rest], Processed) ->
  +process_incr_decr([#variable{}=V,{<<"--">>,_,_Pos}|Rest], Processed) ->
       process_incr_decr(Rest, Processed ++ [{post_decr, V}]);
   process_incr_decr([A|Rest], Processed) ->
       process_incr_decr(Rest, Processed ++ [A]).
  
positive.code: 
  gen_op([], Stack) ->
      Stack;
  gen_op([{<<126>>,{_,_}}|Rest], [A|Stack]) ->
      gen_op(Rest, [{operation_bnot, A, {{line,0},{column,0}}}|Stack]);
  gen_op([{<<"!">>,{_,_}}|Rest], [A|Stack]) ->
      gen_op(Rest, [{operation_not, A, {{line,0},{column,0}}}|Stack]);
  gen_op([{Op,{_,_}}|Rest], [B,A|Stack]) ->
      gen_op(Rest, [operator(Op,A,B)|Stack]);
  gen_op([{<<"-">>,{_,_}}|Rest], [#int{}=I]) ->
      gen_op(Rest, [#int{int=-I#int.int}]);
  gen_op([{<<"-">>,{_,_}}|Rest], [#float{}=F]) ->
      gen_op(Rest, [#float{float=-F#float.float}]);
  gen_op([A|Rest], Stack) ->
      gen_op(Rest, [A|Stack]).
  
  
negative.code: shunting_yard([{_,{_,P1}}=Op|Rest], [{_,{_,P2}}|_]=OpS, Postfix)
          when P1 < P2 ->
      shunting_yard(Rest, [Op|OpS], Postfix);
  shunting_yard([{_,{_,_},_}=Op|Rest], [open|_]=OpS, Postfix) ->
      shunting_yard(Rest, [Op|OpS], Postfix);
  shunting_yard([A|Rest], OpS, Postfix) ->
      shunting_yard(Rest, OpS, Postfix ++ [A]).
  
  add_line(true, _) -> true;
  add_line(false, _) -> false;
  add_line(#array{}=A, {_,Row,Col}) -> A#array{line={{line,Row},{column,Col}}};
  add_line(#eval{}=E, {_,Row,Col}) -> E#eval{line={{line,Row},{column,Col}}};
  add_line(#print{}=P, {_,Row,Col}) -> P#print{line={{line,Row},{column,Col}}};
  