Esempio n. 1
0
 def call_init(tname, params=[]):
   args = []
   try:
     cls = class_lookup(tname)
     inits = cls.mtd_by_name(tname) # AttributeError if cls is NoneType
     for init in inits:
       _args = method.sig_match(init.params, params)
       # try to find best matched one
       if len(args) <= len(_args): args = _args
   except (AttributeError, IndexError): pass
   f = exp.gen_E_id(tname)
   args = map(exp.to_expression, args)
   return exp.gen_E_new(exp.gen_E_call(f, args)), args
Esempio n. 2
0
 def call_init(tname, params=[]):
     args = []
     try:
         cls = class_lookup(tname)
         inits = cls.mtd_by_name(tname)  # AttributeError if cls is NoneType
         for init in inits:
             _args = method.sig_match(init.params, params)
             # try to find best matched one
             if len(args) <= len(_args): args = _args
     except (AttributeError, IndexError):
         pass
     f = exp.gen_E_id(tname)
     args = map(exp.to_expression, args)
     return exp.gen_E_new(exp.gen_E_call(f, args)), args
Esempio n. 3
0
def parse_enum(node):
  _kind = node.getText()
  cls = Clazz(kind=_kind)
  cls.name = node.getChild(0).getChild(0).getText()
  _nodes = node.getChildren()[1:] # exclude name
  constants = util.implode_id(util.mk_v_node_w_children(_nodes)).split(',')
  for c in constants:
    # define representative field
    fld = field.Field(clazz=cls, mods=C.PBST, typ=cls.name, name=c)
    cls.add_fld(fld)
    # initialize it in <clinit>
    f = exp.gen_E_id(cls.name)
    init_e = exp.gen_E_new(exp.gen_E_call(f, []))
    init_s = st.gen_S_assign(exp.gen_E_id(c), init_e)
    cls.clinit_fld(fld, [init_s])
  return cls
Esempio n. 4
0
def parse_enum(node):
    _kind = node.getText()
    cls = Clazz(kind=_kind)
    cls.name = node.getChild(0).getChild(0).getText()
    _nodes = node.getChildren()[1:]  # exclude name
    constants = util.implode_id(util.mk_v_node_w_children(_nodes)).split(',')
    for c in constants:
        # define representative field
        fld = field.Field(clazz=cls, mods=C.PBST, typ=cls.name, name=c)
        cls.add_fld(fld)
        # initialize it in <clinit>
        f = exp.gen_E_id(cls.name)
        init_e = exp.gen_E_new(exp.gen_E_call(f, []))
        init_s = st.gen_S_assign(exp.gen_E_id(c), init_e)
        cls.clinit_fld(fld, [init_s])
    return cls