Example #1
0
 def visit(self, node):
     for field, value in dka.iter_fields(node):
         if field.isSymbolField():
             if value in self.symmapping:
                 setattr(node, field.name, self.symmapping[value])
             else:
                 if self.strict:
                     assert()
     self.generic_visit(node)
Example #2
0
 def generic_visit(self, node):
     scope = self.currentscope
     
     # Find the symbol fields.
     for fieldinfo, value in dka.iter_fields(node):
         if fieldinfo.isSymbolField():
             kind = getKind(value)
             ### FIXME: ignore function symbols for now;
             ### use-before-declare semantics is troublesome.
             if kind is KIND_FSYM:
                 self.lookupOrDefineAndSetSymbol(node, fieldinfo.name)
                 continue
             
             # Make sure the variable is defined.
             if not self.isDefined(value):
                 raise ScopeError('Variable \'{}\' used before defined'.format(value.name))
             
             self.lookupAndSetSymbol(node, fieldinfo.name)
     
     # Descend into children as normal.
     return super().generic_visit(node)
Example #3
0
 def generic_visit(self, node):
     for fieldinfo, value in dka.iter_fields(node):
         if fieldinfo.isSymbolField():
             self.syms.add(value)
     super().generic_visit(node)
Example #4
0
 def generic_visit(self, node):
     for fieldinfo, value in dka.iter_fields(node):
         if fieldinfo.isSymbolField():
             if value in self.symmapping:
                 assert()
     return super().generic_visit(node)
Example #5
0
 def visit(self, node):
     for field, value in dka.iter_fields(node):
         if field.isSymbolField() and value.hasflag(dha.FLAG_INV):
             if value not in self.syms:
                 self.syms.append(value)
     self.generic_visit(node)
Example #6
0
 def visit(self, node):
     for field, value in dka.iter_fields(node):
         if field.isSymbolField():
             if value not in self.syms:
                 self.syms.append(value)
     self.generic_visit(node)