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]))