Navigation Menu

Skip to content

Commit

Permalink
Add in some basic error recovery. Cleanup more code
Browse files Browse the repository at this point in the history
  • Loading branch information
Whiteknight committed May 17, 2011
1 parent 90b8b62 commit 232fe78
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions src/winxed/Repl.winxed
Expand Up @@ -30,12 +30,17 @@ namespace Rosella { namespace Winxed

while (state.keep_running)
{
var input = stdin.readline_interactive("\nWinxed-Rosella> ");
if (input == null)
break;
if (!self.run_command(input, state)) {
var result = self.eval(input, state);
self.print_result(result, state);
try {
var input = stdin.readline_interactive("\nWinxed-Rosella> ");
if (input == null)
break;
if (!self.run_command(input, state)) {
var result = self.eval(input, state);
self.print_result(result, state);
}
} catch (e) {
say(sprintf("\t>>> Error: '%s'", [e["message"]]));
say("\t>>> Error is recoverable. Continuing. Type '%quit' to exit");
}
}
}
Expand Down Expand Up @@ -94,15 +99,15 @@ namespace Rosella { namespace Winxed

function print_hash_result(var result, var state)
{
self.sprintf("Result = {");
say("\t>>> Result = {");
for (string key in result)
self.sprintf("\t'%s' => '%s' (%s)", key, result[key], string(typeof(result[key])));
self.sprintf("}");
say(sprintf("\t>>>\t'%s' => '%s' (%s)", [key, result[key], string(typeof(result[key]))]));
say("\t>>> }");
}

function print_scalar_result(var result, var state)
{
self.sprintf("Result = '%s'", result);
say(sprintf("\t>>> Result = '%s'", result));
}

function eval(string code, var state)
Expand Down Expand Up @@ -137,11 +142,5 @@ function __REPL_line_%d(var state) {
}
return self.compiler.compile(func_c);
}

function sprintf(string fmt, var args [slurpy])
{
print("\t>>> ");
say(sprintf(fmt, args));
}
}
}}

0 comments on commit 232fe78

Please sign in to comment.