A prompt-read-eval-print loop.
(prompt='lispy> ', inport=InPort(sys.stdin), out=sys.stdout)
| 105 | repl(None, InPort(open(filename)), None) |
| 106 | |
| 107 | def repl(prompt='lispy> ', inport=InPort(sys.stdin), out=sys.stdout): |
| 108 | "A prompt-read-eval-print loop." |
| 109 | sys.stderr.write("Lispy version 2.0\n") |
| 110 | while True: |
| 111 | try: |
| 112 | if prompt: sys.stderr.write(prompt) |
| 113 | x = parse(inport) |
| 114 | if x is eof_object: return |
| 115 | val = eval(x) |
| 116 | if val is not None and out: print(to_string(val), file=out) |
| 117 | except Exception as e: |
| 118 | print('%s: %s' % (type(e).__name__, e)) |
| 119 | |
| 120 | ################ Environment class |
| 121 |