How to get the refernces Stored.

Balaji balaji at email.arizona.edu
Fri Apr 23 17:34:18 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