aboutsummaryrefslogtreecommitdiff
path: root/python/step1_read_print.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/step1_read_print.py')
-rw-r--r--python/step1_read_print.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/python/step1_read_print.py b/python/step1_read_print.py
new file mode 100644
index 0000000..165dfa3
--- /dev/null
+++ b/python/step1_read_print.py
@@ -0,0 +1,32 @@
+import sys, traceback
+import mal_readline
+from mal_types import (pr_str, sequential_Q, symbol_Q, coll_Q, list_Q,
+ vector_Q, hash_map_Q, new_symbol, new_function,
+ new_list, new_vector, new_hash_map, Env, types_ns)
+from reader import (read_str, Blank)
+
+# read
+def READ(str):
+ return read_str(str)
+
+# eval
+def EVAL(ast, env):
+ #print("EVAL %s" % ast)
+ return ast
+
+def PRINT(exp):
+ return pr_str(exp)
+
+# repl
+def REP(str):
+ return PRINT(EVAL(READ(str), {}))
+
+while True:
+ try:
+ line = mal_readline.readline("user> ")
+ if line == None: break
+ if line == "": continue
+ print(REP(line))
+ except Blank: continue
+ except Exception as e:
+ print "".join(traceback.format_exception(*sys.exc_info()))