From f6815e804fb35621e84031ef880d183140b7a523 Mon Sep 17 00:00:00 2001 From: mryouse Date: Sat, 9 Jul 2022 01:59:47 +0000 Subject: implement 'try' --- neb/std/core.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'neb/std/core.py') diff --git a/neb/std/core.py b/neb/std/core.py index cf0686b..9e2e743 100644 --- a/neb/std/core.py +++ b/neb/std/core.py @@ -274,3 +274,13 @@ def interpretBench(symbol, args, env, ns): return ret CORE.register("bench", NebSyntax("bench", interpretBench, [Arg("command", TypeEnum.ANY)], return_type=Type(":any"))) + +def interpretTry(symbol, args, env, ns): + try: + return evaluate(args[0], env, ns) + except NebPanic as e: + new_env = Environment(env) + new_env.register("_panic_", String(f"{e}")) + return evaluate(args[1], new_env, ns) + +CORE.register("try", NebSyntax("try", interpretTry, [Arg("expr", TypeEnum.ANY), Arg("except", TypeEnum.ANY)], return_type=Type(":any"))) -- cgit v1.2.3