diff options
| author | Joel Martin <github@martintribe.org> | 2014-03-24 16:32:24 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-03-24 16:32:24 -0500 |
| commit | 3169070063b2cb877200117ebb384269d73bcb93 (patch) | |
| tree | 23de3db1ea5c37afd21a45b6ed7771f56a08c0c4 /python/step0_repl.py | |
| download | mal-3169070063b2cb877200117ebb384269d73bcb93.tar.gz mal-3169070063b2cb877200117ebb384269d73bcb93.zip | |
Current state of mal for Clojure West lighting talk.
Diffstat (limited to 'python/step0_repl.py')
| -rw-r--r-- | python/step0_repl.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/python/step0_repl.py b/python/step0_repl.py new file mode 100644 index 0000000..8d42c33 --- /dev/null +++ b/python/step0_repl.py @@ -0,0 +1,32 @@ +import sys, traceback +import mal_readline + +# read +def READ(str): + return str + +# eval +def EVAL(ast, env): + # try it as an expression then a statement + try: + return eval(ast) + except SyntaxError: + exec compile(ast, '', 'single') in globals() + return None + +# print +def PRINT(exp): + return 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 Exception as e: + print "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])) |
