B
Balaji
import __main__
tempbuffer= None
permbuffer={}
class E:
def __init__(self):
# print id(self)
self.hasVar = False
def doOperation(self,op,rightOperand):
e = E()
if self.__class__ == E:
e.hasVar = self.hasVar
elif self.__class__ == V or rightOperand.__class__ == V or \
(rightOperand.__class__ == E and rightOperand.hasVar == True):
e.hasVar = True
e.operator = op
e.left = self
e.right = rightOperand
global tempbuffer
global permbuffer
print "bll"
f = copy.copy(e)
print f
r =findNonTempBufferRef(tempbuffer)
print r
if r != 'tempbuffer':
print "hello"
permbuffer[r] =tempbuffer
tempbuffer = f
return e
def relationalOperators(self,op,rightOperand):
print self,rightOperand
e=E()
e.operator =op
e.left=self
e.right=rightOperand
return e
def __neg__(self):
return self
def __radd__(self,e2):
return self.doOperation('+',e2)
def __add__(self,e2):
return self.doOperation('+',e2)
class V(E):
""" This is a variable for MPY"""
def __init__(self):
print "V",
E.__init__(self)
self.hasVar = True
self.val = None
def __str__(self):
if self.val:
# print "self.val *****"
return str(self.val)
else:
return findRefTo(self) or "MPY Error! Printing unnamed variable."
def findRefTo(obj):
import expression # Needed to get access to main.
vnames = vars(__main__)
for name in vnames.keys():
if vnames[name] == obj:
return name
return None
def findNonTempBufferRef(obj):
import expression # Needed to get access to main.
vnames = vars(__main__)
print vnames
for name in vnames.keys():
if vnames[name] == obj:
return name
return None
**************************************************
This my code...
On interpretor if i
create x=V() and y=V() creates two instances of class variable which
inherits from expression class E.
now if i say
x+y
and then c=x+y
and ce=x+y
i think i loose the original one...
i want to store in a permbuffer all asignments made..
after assigning c and ce i want a copy of both in a permbuffer..
Iam at my witends .. Please help...
Balaji
tempbuffer= None
permbuffer={}
class E:
def __init__(self):
# print id(self)
self.hasVar = False
def doOperation(self,op,rightOperand):
e = E()
if self.__class__ == E:
e.hasVar = self.hasVar
elif self.__class__ == V or rightOperand.__class__ == V or \
(rightOperand.__class__ == E and rightOperand.hasVar == True):
e.hasVar = True
e.operator = op
e.left = self
e.right = rightOperand
global tempbuffer
global permbuffer
print "bll"
f = copy.copy(e)
print f
r =findNonTempBufferRef(tempbuffer)
print r
if r != 'tempbuffer':
print "hello"
permbuffer[r] =tempbuffer
tempbuffer = f
return e
def relationalOperators(self,op,rightOperand):
print self,rightOperand
e=E()
e.operator =op
e.left=self
e.right=rightOperand
return e
def __neg__(self):
return self
def __radd__(self,e2):
return self.doOperation('+',e2)
def __add__(self,e2):
return self.doOperation('+',e2)
class V(E):
""" This is a variable for MPY"""
def __init__(self):
print "V",
E.__init__(self)
self.hasVar = True
self.val = None
def __str__(self):
if self.val:
# print "self.val *****"
return str(self.val)
else:
return findRefTo(self) or "MPY Error! Printing unnamed variable."
def findRefTo(obj):
import expression # Needed to get access to main.
vnames = vars(__main__)
for name in vnames.keys():
if vnames[name] == obj:
return name
return None
def findNonTempBufferRef(obj):
import expression # Needed to get access to main.
vnames = vars(__main__)
print vnames
for name in vnames.keys():
if vnames[name] == obj:
return name
return None
**************************************************
This my code...
On interpretor if i
create x=V() and y=V() creates two instances of class variable which
inherits from expression class E.
now if i say
x+y
and then c=x+y
and ce=x+y
i think i loose the original one...
i want to store in a permbuffer all asignments made..
after assigning c and ce i want a copy of both in a permbuffer..
Iam at my witends .. Please help...
Balaji