diff options
| author | mryouse | 2022-05-21 03:10:12 +0000 |
|---|---|---|
| committer | mryouse | 2022-05-21 03:10:12 +0000 |
| commit | 50f932837a763878b58d77703b274ff242ea38f8 (patch) | |
| tree | bfa61a72e8bf8da3212ebbedfc34e6ea0ebb4717 /interpreter.py | |
| parent | 09df18182dfae22bbc65b2c07c4f610c595aba19 (diff) | |
implement pipe
Diffstat (limited to 'interpreter.py')
| -rw-r--r-- | interpreter.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index 6a88c57..ee7069c 100644 --- a/interpreter.py +++ b/interpreter.py @@ -278,6 +278,19 @@ def interpretForCount(expr, env): GLOBALS.register("for-count", Builtin(interpretForCount)) +def interpretPipe(expr, env): + if len(expr.args) < 2: + raise Exception("'|' takes at least two expressions") + new_env = Environment(env) + pipe = None + for arg in expr.args: + if pipe is not None: + new_env.register("items", pipe) + pipe = Expr.Literal(evaluate(arg, new_env)) + return pipe + +GLOBALS.register("|", Builtin(interpretPipe)) + def interpretEnv(expr, env_expr, env): ev = evaluate(env_expr, env) return ev # TODO more than this? |
