diff options
| author | mryouse | 2022-05-21 03:37:15 +0000 |
|---|---|---|
| committer | mryouse | 2022-05-21 03:37:15 +0000 |
| commit | 310a53dc06a166c5ab448fa16461b110329d1c1c (patch) | |
| tree | 15d3513e3db68f77af9517521d3e1049bca6bb78 | |
| parent | 4393c6a9a138df2e50130f0310e07c1cae887534 (diff) | |
implement concat
| -rw-r--r-- | interpreter.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index 4677432..841f5cf 100644 --- a/interpreter.py +++ b/interpreter.py @@ -263,6 +263,20 @@ def interpretToString(expr, env): GLOBALS.register("->string", Builtin(interpretToString, 1)) +def interpretConcat(expr, env): + # concat str1 str2...strN + if len(expr.args) < 2: + raise Exception("'concat' takes at least two arguments") + out = "" + for arg in expr.args: + tmp = evaluate(arg, env) + if not isinstance(tmp, str): + raise Exception("'concat' arguments must be strings") + out += tmp + return out + +GLOBALS.register("concat", Builtin(interpretConcat)) + def interpretForCount(expr, env): # for-count int exprs num = evaluate(expr.args[0], env) |
