def test_lexer(): lexer = lisplexer() lexer.input("""(a (nested) list (of 534 atoms [and :symbols] (and lists))) ;; with comments """) assert 20 == len([tok for tok in lexer]) lexer.input("") assert [tok for tok in lexer] == []
except ImportError: pass else: import os histfile = os.path.join(os.path.expanduser("~"), ".pyclojurehist") try: readline.read_history_file(histfile) except IOError: # Pass here as there isn't any history file, so one will be # written by atexit pass import atexit atexit.register(readline.write_history_file, histfile) parse = lispparser() lexer = lisplexer() def main(): global_scope = Scope() scopechain = [global_scope] while True: try: txt = raw_input("pylisp> ") if re.search('^\s*$', txt): continue else: print(tostring(evaluate(parse(txt), scopechain))) except EOFError: break except KeyboardInterrupt: print # Give user a newline after Cntrl-C for readability