def define(self, idType, shadow=False, static=""): if not shadow: try: env.getVarType(self.node.name) except SymbolError, e: e.ignore() else: e = SymbolError("The variable '%s' is already defined and may not shadow" % self.node.name, self.token) e.report() return
def getMethod(self): if isinstance(self.node.method, tree.Identifier): c = env.getVarType('this') n = self.node.method.name elif isinstance(self.node.method, tree.Dot): c = self.node.method.parent.getType().name n = self.node.method.child.name else: print "WARNING: I missed something. What else can a method call be made of?" try: m = env.getMethodType(c,n) return c, n, m except SymbolError, e: if getattr(c, 'suppress_errors', False): e.ignore() else: e.setToken(self.token) e.report() return None
def getType(self): try: return Type(env.getVarType(self.node.name)) except SymbolError, e: e.setToken(self.token) e.report()
def getType(self): self.node.static = "%this" return Type(env.getVarType('this'))
def getMethod(self): c = env.getVarType('super') n = self.node.method.name return c, n, env.getMethodType(c, n)