anchor.diff:  
   code_value(Text, {_Level,Row,Col}=Pos, Parsed) ->
       {Rest, NewPos, Code} = code(Text, code_value_level(Pos), []),
  -    document(Rest, NewPos, [#print{text=Code,row=Row,col=Col}|Parsed]).
  +    document(Rest, NewPos, [#print{expression=Code,line={Row,Col}}|Parsed]).
   
   code_block(<<"{",Rest/binary>>, Pos, Parsed) ->
       code(Rest, code_block_level(add_pos(Pos,1)), Parsed);
  
positive.code: code(<<";",Rest/binary>>, {code_statement,_,_}=Pos, Parsed) ->
      {Rest, normal_level(add_pos(Pos,1)), Parsed};
  code(<<I:8,F:8,SP:8,Rest/binary>>, Pos, Parsed)
          when (I =:= $i orelse I =:= $I)
          andalso (F =:= $f orelse F =:= $F)
          andalso (SP =:= 32 orelse SP =:= $() ->
      st_if(<<SP:8,Rest/binary>>, Pos, Parsed);
  code(<<E:8,L:8,S:8,E:8,SP:8,Rest/binary>>,
       Pos, [#st_if{}|_]=Parsed)
          when (E =:= $e orelse E =:= $E)
          andalso (L =:= $l orelse L =:= $L)
          andalso (S =:= $s orelse S =:= $S)
          andalso (SP =:= 32 orelse SP =:= ${ orelse SP =:= $i orelse SP =:= $I) ->
      st_else(<<SP:8,Rest/binary>>, Pos, Parsed);
  code(<<"?>",Rest/binary>>, {code_value,_,_}=Pos, Parsed) ->
      {Rest, normal_level(add_pos(Pos,2)), Parsed};
  
negative.code:     conditions(Rest, add_pos(Pos,1), Parsed);
  conditions(<<SP:1/binary,Rest/binary>>, Pos, Parsed) when ?IS_NEWLINE(SP) ->
      conditions(Rest, new_line(Pos), Parsed);
  conditions(<<"(",Rest/binary>>, {0,Row,Col}, Parsed) ->
      conditions(Rest, {1,Row,Col+1}, Parsed);
  conditions(<<"(",Rest/binary>>, {Level,Row,Col}, Parsed) ->
      conditions(Rest, {Level+1,Row,Col+1}, add_op(open, Parsed));
  conditions(<<")",Rest/binary>>, {1,_Row,_Col}=Pos, Parsed) ->
      {Rest, normal_level(add_pos(Pos,1)), add_op('end', Parsed)};
  conditions(<<")",Rest/binary>>, {Level,Row,Col}, Parsed) ->
      conditions(Rest, {Level-1,Row,Col+1}, add_op(close, Parsed));
  conditions(<<"$",Rest/binary>>, Pos, Parsed) ->
      {Rest0, Pos0, [Var]} = variable(Rest, add_pos(Pos,1), []),
      conditions(Rest0, Pos0, add_op(Var, Parsed));
  conditions(<<Op:3/binary,Rest/binary>>, Pos, Parsed) when ?IS_OP3(Op) ->
      conditions(Rest, add_pos(Pos,3), add_op({Op,precedence(Op)}, Parsed));
  conditions(<<Op:2/binary,Rest/binary>>, Pos, Parsed) when ?IS_OP2(Op) ->
      conditions(Rest, add_pos(Pos,2), add_op({Op,precedence(Op)}, Parsed));
  conditions(<<Op:1/binary,Rest/binary>>, Pos, Parsed) when ?IS_OP1(Op) ->
      conditions(Rest, add_pos(Pos,1), add_op({Op,precedence(Op)}, Parsed));
  conditions(<<A:8,_/binary>> = Rest, Pos, Parsed) when ?IS_NUMBER(A) ->
      {Rest0, Pos0, [Number]} = number(Rest, Pos, []),
      conditions(Rest0, Pos0, add_op(Number, Parsed));
  