Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
  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
Ejemplo n.º 3
0
 def getType(self):
   try:
     return Type(env.getVarType(self.node.name))
   except SymbolError, e:
     e.setToken(self.token)
     e.report()
Ejemplo n.º 4
0
 def getType(self):
   self.node.static = "%this"
   return Type(env.getVarType('this'))
Ejemplo n.º 5
0
 def getMethod(self):
   c = env.getVarType('super')
   n = self.node.method.name
   return c, n, env.getMethodType(c, n)