def main(): interpreter = Interpreter() while True: try: buffer = get_input('eLisp> ') except EOFError: print() break lexer = Lexer(buffer) try: exprs = Parser(lexer).parse() if not exprs: continue expr = exprs[0] if is_load(expr): load(interpreter, expr) continue result_expr = interpreter.interpret(expr) if procedure.is_compound_procedure(result_expr): print (procedure.get_procedure_repr(result_expr)) else: print (result_expr) except Exception as e: print (str(e)) continue
def _apply(self, proc, args): if procedure.is_primitive_procedure(proc): return procedure.apply_primitive_procedure(proc, args) elif procedure.is_compound_procedure(proc): return self._eval_sequence( procedure.procedure_body(proc), extend_environment( procedure.procedure_parameters(proc), args, procedure.procedure_environment(proc)))