anchor.diff:  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([{_,{_,_},_}=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}}};
  
positive.code:         when A =:= $, orelse A =:= $] ->
      [Arg,Idx] = Parsed,
      {Rest, add_pos(Pos,1), [Idx,add_op('end', [Arg])]};
  expression(<<")",Rest/binary>>, {L,_Row,_Col}=Pos, Parsed) when is_number(L) ->
      {Rest, add_pos(Pos,1), add_op('end', Parsed)};
  expression(<<"]",Rest/binary>>, {array,_,_}=Pos, Parsed) ->
  
negative.code: add_line(#variable{}=V, {_,R,C}) -> V#variable{line={{line,R},{column,C}}};
  add_line(#constant{}=O, {_,R,C}) -> O#constant{line={{line,R},{column,C}}};
  add_line(#int{}=I, {_,R,C}) -> I#int{line={{line,R},{column,C}}};
  add_line(#float{}=F, {_,R,C}) -> F#float{line={{line,R},{column,C}}};
  add_line(#text_to_process{}=T, {_,R,C}) ->
      T#text_to_process{line={{line,R},{column,C}}};
  add_line(#text{}=T, {_,R,C}) -> T#text{line={{line,R},{column,C}}};
  