Please Help with references

Balaji balaji at email.arizona.edu
Sat Apr 24 17:22:14 EDT 2004


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



More information about the Python-list mailing list