anchor.diff:          get_erlang/2,
           print_erlang/2,
           erl_to_ast/1,
  +        erlmod_to_ast/2,
  +        mod_to_ast/2,
           run/0,
           run/1]).
   
  
positive.code: compile(Name, Dir) ->
      Module = get_code(build_module(Name)),
      Path = filename:join([Dir, get_module_beam_name(Name)]),
  
      Device = case file:open(Path, [binary, write]) of
          {ok, Return} -> Return;
          {error, _Reason} = Error -> throw(Error)
      end,
  
      file:write(Device, Module).
  
  build_module(Name) ->
      {Publics, Ast, Attrs} = tree_to_ast(file, Name),
  
      [{attribute, 1, module, get_module_name(Name)}|
          [{attribute, 1, export, Publics}|Attrs]] ++ Ast.
  
  print_module(Name) ->
      io:format("~p~n", [build_module(Name)]).
  
negative.code: get_lex(file, Path) ->
      Program = file_to_string(Path),
  
      IsFn  = lists:suffix(".fn",  Path),
      IsIfn = lists:suffix(".ifn", Path),
  
      if
          IsFn  -> get_lex(string, Program);
          IsIfn -> get_lex(istring, Program);
          true  -> exit(io_lib:format("Invalid file extension in '~s' (.fn or .ifn expected)~n", [Path]))
      end.
  
  print_lex(From, String) ->
  