summaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2021-07-12 16:57:10 +0400
committerAndrew <saintruler@gmail.com>2021-07-12 16:57:10 +0400
commit95ab5fec4a930114fabeef77f7a458c8dd163142 (patch)
treeccec54fdcbb15276689249d70381fe87fda53f97 /main.py
parent49df60f32aca6428706bc895b7e48ab2d68444b5 (diff)
Added ability to call functions as a statement.
Diffstat (limited to 'main.py')
-rw-r--r--main.py14
1 files changed, 8 insertions, 6 deletions
diff --git a/main.py b/main.py
index 0ba9d47..e21d0c8 100644
--- a/main.py
+++ b/main.py
@@ -31,7 +31,8 @@ def factorial(n):
runtime_functions = {
- "factorial": factorial
+ "factorial": factorial,
+ "print": print,
}
# END OF RUNTIME
@@ -45,8 +46,8 @@ def _eval(node):
return runtime.get(node.value)
elif node.type == NodeType.FUNCALL:
- fun_name = node.value[0]
- args = list(map(_eval, node.value[1]))
+ fun_name = node.left.value
+ args = list(map(_eval, node.right.value))
return runtime_functions.get(fun_name)(*args)
elif node.type == NodeType.OPERATOR:
@@ -64,9 +65,10 @@ def main(*argv):
data = argv[0]
else:
# data = "2 + 3 * 4"
- data = "let a = 2 + 3; let e = 4;"
+ # data = "let a = 2 + 3; let e = 4;"
# data = "(3 + 3 * 2) * -4"
# data = "(2 + factorial(4, )) * 9"
+ data = "print(2);"
tokens = tokenize(data)
# print(tokens)
@@ -74,8 +76,8 @@ def main(*argv):
for statement in statements:
_eval(statement)
# node, _ = parse_expr(tokens, 0)
- # print(expr_eval(node))
- print(1)
+ # print(_eval(node))
+ pass
if __name__ == "__main__":