ruby: slicc: derive DataMember class from Var instead of PairContainer

The DataMember class in Type.py was being derived from PairContainer.  A
separate Var object was also created for the DataMember.  This meant some
duplication of across the members of these two classes (Var and DataMember).
This patch changes DataMember from Var instead.  There is no obvious reason to
derive from PairContainer which can only hold pairs, something that Var class
already supports.  The only thing that DataMember has over Var is init_code,
which is being retained.  This change would later on help in having pointers
in DataMembers.
This commit is contained in:
Nilay Vaish 2015-09-18 13:27:47 -05:00
parent b3eb0d1423
commit 216529bf18

View file

@ -31,11 +31,11 @@ from slicc.util import PairContainer
from slicc.symbols.Symbol import Symbol
from slicc.symbols.Var import Var
class DataMember(PairContainer):
def __init__(self, ident, type, pairs, init_code):
super(DataMember, self).__init__(pairs)
self.ident = ident
self.type = type
class DataMember(Var):
def __init__(self, symtab, ident, location, type, code, pairs,
machine, init_code):
super(DataMember, self).__init__(symtab, ident, location, type,
code, pairs, machine)
self.init_code = init_code
class Enumeration(PairContainer):
@ -126,12 +126,11 @@ class Type(Symbol):
if ident in self.data_members:
return False
member = DataMember(ident, type, pairs, init_code)
self.data_members[ident] = member
member = DataMember(self.symtab, ident, self.location, type,
"m_%s" % ident, pairs, None, init_code)
var = Var(self.symtab, ident, self.location, type,
"m_%s" % ident, {}, None)
self.symtab.registerSym(ident, var)
self.data_members[ident] = member
self.symtab.registerSym(ident, member)
return True
def dataMemberType(self, ident):