anchor.diff:  
   precedence(<<"clone">>) -> {no_assoc, 1};
   precedence(<<"new">>) -> {no_assoc, 1};
  -precedence(<<"[">>) -> {left, 2}; %% array
  +%precedence(<<"[">>) -> {left, 2}; %% array
   precedence(<<"**">>) -> {right, 3}; %% arith
   precedence(<<"++">>) -> {right, 4};
   precedence(<<"--">>) -> {right, 4};
  
positive.code:     {Rest0, Pos0, String} = string(Rest, Pos, []),
      expression(Rest0, Pos0, add_op(String, Parsed));
  %% TODO support for list(...) = ...
  expression(<<"=>",Rest/binary>>, {array_def,_,_}=Pos, [{op,_}=Op]) ->
      expression(Rest, add_pos(Pos,2), [{op,[]},add_op('end', [Op])]);
  expression(<<"=",Rest/binary>>, Pos, [{op,[#variable{}=V]}|_]) ->
      NewPos = code_statement_level(add_pos(Pos,1)),
  
negative.code: expression(<<A:8,_/binary>> = Rest, {arg,_,_}=Pos, Parsed) when A =:= $,
                                                             orelse A =:= $) ->
      {Rest, add_pos(Pos,1), add_op('end', Parsed)};
  expression(<<A:8,_/binary>> = Rest, {{array_def,0},_,_}=Pos, [Parsed])
          when A =:= $, orelse A =:= $) ->
      {Rest, add_pos(Pos,1), add_op('end', [Parsed])};
  expression(<<A:8,_/binary>> = Rest, {{array_def,0},_,_}=Pos, Parsed)
          when A =:= $, orelse A =:= $) ->
      [Arg,Idx] = Parsed,
      {Rest, add_pos(Pos,1), [Idx,add_op('end', [Arg])]};
  expression(<<A:8,_/binary>> = Rest, {{array_def,54},_,_}=Pos, [Parsed])
          when A =:= $, orelse A =:= $] ->
      {Rest, add_pos(Pos,1), add_op('end', [Parsed])};
  expression(<<A:8,_/binary>> = Rest, {{array_def,54},_,_}=Pos, Parsed)
          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) ->
  