def read2():
expr = ""
while expr != "quit":
expr = raw_input("Lisp> ")
print parse(expr)
read2()
^^^^^^^^^^^^^^^^^
print "Good session!"
You shouldn't call read2() inside read2()... just remove that line and retry... Each time you call read2() recursively, a new expr is initialized to "", so the condition never becomes true -- http://mail.python.org/mailman/listinfo/python-list
