anchor.diff:  
   eval(Expression) ->
       {ok, Tokens, _} = erl_scan:string(Expression),
  -    {ok, Parsed} = erl_parse:parse_exprs(Tokens),
  -    {value, Result, _} = erl_eval:exprs(Parsed, []),
  -    Result.
  +    case erl_parse:parse_exprs(Tokens) of
  +        {error, {_, _, Msg}} ->
  +            throw(?PRV_ERROR({eval_parse, Expression, Msg}));
  +        {ok, Parsed} ->
  +            try erl_eval:exprs(Parsed, []) of
  +                {value, Result, _} ->
  +                    {ok, Result}
  +            catch
  +                C:E:S ->
  +                    throw(?PRV_ERROR({eval_exprs, Expression, {C, E, S}}))
  +            end
  +    end.
   
   setup_name(State) ->
       {Long, Short, Opts} = rebar_dist_utils:find_options(State),
  
positive.code: -spec format_error(any()) -> iolist().
  format_error({unknown_app, Unknown}) ->
      io_lib:format("Applications list for shell contains an unrecognizable application definition: ~p", [Unknown]);
  format_error(Reason) ->
      io_lib:format("~p", [Reason]).
  
  
negative.code:     Exprs = find_evals_to_run(State),
      lists:map(fun(Expr) ->
          ?INFO("Evaluating: ~p",[Expr]),
          {ok, _} = eval(Expr)
      end, Exprs).
  
  find_evals_to_run(State) ->
  