def hook_tid(self, ast): self.tid = ast.tokens #print "DEBUG TypedefStructStatement", ast.tokens if not self.tid: self.tid_name = anon() self.container = namespace.current() else: c = namespace.current() self.container, self.tid_name = c.interpret_tokens(self.tid) self.tid = (('symbol', self.tid_name),)
def commit(self): if self.mode == 'ns': #ns = namespace.current().find_namespace(self.sym) ns = namespace.resolve(self.sym) namespace.current().namespaces.update(ns.namespaces) namespace.current().symbols.update(ns.symbols) for ftoks, fdic in ns.functions.iteritems(): for fpar, fsta in fdic.iteritems(): namespace.current().add_func(ftoks, fpar, fsta) else: x = namespace.resolve(self.sym) if x is None: print "COULDN'T RESOLVE", self.sym raise InvalidStatement(self.text) #print self.sym name = self.sym[-1][1] if x[0] == namespace.VAR: namespace.current().add_var(name, **x[1]) elif x[0] == namespace.TYPE: namespace.current().add_type(name, **x[1])