anchor.diff:      file:write_file(SrcFile, erl_prettypr:format(erl_syntax:form_list (Forms1))).
   
   %% @hidden
  -parse(FileName) ->
  +parse_file(FileName) ->
       {ok, InFile} = file:open(FileName, [read]),
  -    Acc = loop(InFile,[]),
  +    String = parse_file(InFile,[]),
       file:close(InFile),
  -    protobuffs_parser:parse(Acc).
  -
  -%% @hidden
  -loop(InFile,Acc) ->
  +    {ok,String}.
  +
  +%% @hidden
  +parse_file(InFile,Acc) ->
       case io:request(InFile,{get_until,prompt,protobuffs_scanner,token,[1]}) of
           {ok,Token,_EndLine} ->
  -            loop(InFile,Acc ++ [Token]);
  +            parse_file(InFile,Acc ++ [Token]);
           {error,token} ->
               exit(scanning_error);    
           {eof,_} ->
               Acc
       end.
  +
  +parse_string(String) ->
  +    protobuffs_parser:parse(String).
   
   %% @hidden
   filter_forms(Msgs, Enums, [{attribute,L,file,{_,_}}|Tail], Basename, Acc) ->
  
positive.code: scan_file(ProtoFile) ->
      scan_file(ProtoFile,[]).
  
  %%--------------------------------------------------------------------
  %% @doc Generats a built .beam file and header file .hrl
  %%      Considerd option properties: output_include_dir, 
  
negative.code: %% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  %% OTHER DEALINGS IN THE SOFTWARE.
  -module(protobuffs_compile).
  -export([scan_file/1, scan_file/2, scan_string/1, scan_string/2, generate_source/1, generate_source/2]).
  
  -record(collected,{enum=[], msg=[], extensions=[]}).
  
  