Example #1
0
 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),)
Example #2
0
 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])