diff options
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? | 
