anchor.diff:          (?IS_SPACE(SP) orelse SP =:= ${) ->
       {Rest0, Pos0, [DoWhile]} = st_do_while(Rest, add_pos(Pos,3), []),
       code(Rest0, copy_level(Pos,Pos0), [DoWhile|Parsed]);
  +code(<<F:8,O:8,R:8,E:8,A:8,C:8,H:8,SP:8,Rest/binary>>, Pos, Parsed)
  +        when ?OR(F,$f,$F) andalso ?OR(O,$o,$O) andalso ?OR(R,$r,$R)
  +        andalso ?OR(E,$e,$E) andalso ?OR(A,$a,$A) andalso ?OR(C,$c,$C)
  +        andalso ?OR(H,$h,$H)
  +        andalso (?IS_SPACE(SP) orelse ?IS_NEWLINE(SP) orelse SP =:= $() ->
  +    {Rest0, Pos0} = remove_spaces(<<SP:8,Rest/binary>>,Pos),
  +    {Rest1, Pos1, NewParsed} = st_foreach(Rest0, Pos0, Parsed),
  +    code(Rest1, copy_level(Pos, Pos1), NewParsed);
   code(<<F:8,O:8,R:8,SP:8,Rest/binary>>, Pos, Parsed)
           when ?OR(F,$f,$F) andalso ?OR(O,$o,$O) andalso ?OR(R,$r,$R)
           andalso (?IS_SPACE(SP) orelse ?IS_NEWLINE(SP) orelse SP =:= $() ->
  
positive.code: expression(<<>>, Pos, _Parsed) ->
      throw_error(eparse, Pos, <<>>).
  
  variable(<<A:8,Rest/binary>>, Pos, [])
          when ?IS_ALPHA(A) orelse A =:= $_ orelse A >= 16#7f ->
      Var = add_line(#variable{name = <<A:8>>}, Pos),
  
negative.code: add_line(#array_element{}=A, {_,R,C}) ->
      A#array_element{line={{line,R},{column,C}}};
  add_line(#for{}=F, {_,R,C}) -> F#for{line={{line,R},{column,C}}};
  add_line(#foreach{}=F, {_,R,C}) -> F#foreach{line={{line,R},{column,C}}};
  add_line(#operation{}=O, {_,R,C}) -> O#operation{line={{line,R},{column,C}}};
  add_line(#concat{}=O, {_,R,C}) -> O#concat{line={{line,R},{column,C}}};
  add_line(#while{}=W, {_,R,C}) -> W#while{line={{line,R},{column,C}}}.
  