Example #1
0
    def __init__(self):
        bt = builtin.builtins.copy()
        bt.update(specialforms.specialforms)
        bt.update({"eval": lambda *args: self.run(args), "#intp": self})

        self.vars = inheritdict.idict(None, bt).push()

        self.file = None
        self.macros = macros
        self.call_stack = [self]
        self._lispprint = lambda: "#main"
        self._catches = {}

        if not Lisp.stdlib:
            self.run(info.lib("basics"))
            if Lisp.run_stdlib:
                Lisp.run_stdlib = False
                self.run(info.lib("stdlib")) # Assuming no error
                Lisp.run_stdlib = True
        else:
            self.vars = Lisp.stdlib

        if debug > 0:
            print "StdLib:: Standard library loaded"

        self.vars.stop = True
        self.vars = self.vars.push()
Example #2
0
def _class(self, inheritfrom, *body):
    d = {}
    self.vars = inheritdict.idict(self.vars, d)

    try:
        self.eval(["block"] + list(body))
        
        if "__init__" in d:
            k = d["__init__"]
            def __init__(*args, **kwargs):
                k(*args, **kwargs)
            d["__init__"] = __init__
        
        if "__div__" in d:
            d["__truediv__"] = d["__div__"]
    
        bases = map(self.eval, inheritfrom)
        return type("", tuple(bases), d)
    finally:
        self.vars = self.vars.pop()