diff options
| author | mryouse | 2022-07-09 01:59:47 +0000 |
|---|---|---|
| committer | mryouse | 2022-07-09 01:59:47 +0000 |
| commit | f6815e804fb35621e84031ef880d183140b7a523 (patch) | |
| tree | ceaeab2d47f1de6815f93b1d8f32d4506dd25ed8 /neb | |
| parent | 5dc837bfc3412b70e9008cf38e6226a61afbcaa3 (diff) | |
implement 'try'
Diffstat (limited to 'neb')
| -rw-r--r-- | neb/std/core.py | 10 |
1 files changed, 10 insertions, 0 deletions
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"))) |
