TypeError: unsubscriptable object.
Balaji
balaji at email.arizona.edu
Fri May 21 17:40:13 EDT 2004
Hello Everybody...
I have a problem..
This is the code...
--------------------------------------
class Stack:
def __init__(self,expr):
self.stackP=[]
self.stackF=1
self.a = {}
# self.stackManagement(expr)
if not self.a.has_key('rhs'):
self.a['rhs'] = 0
# self.a['rhs'] += self.popP()*self.popF()
def pushP(self,obj):
self.stackP.append(obj)
def pushF(self,obj):
stackF=stackF*obj
return stackF
def popP(self):
rval=0
rval=self.stackP.pop()
return rval
def popF(self,obj):
stackF/=obj
return stackF
def peekP(self):
rval=0
rval= self.stackP[-1]
return rval
def peekF(self):
rval=0
rval= self.stackF[-1]
return rval
def stackManagement(self,expr):
#Determine the next symbol
if expr.__class__==E:
self.pushP(expr.operator)
self.stackManagement(expr.left)
self.stackManagement(expr.right)
else:
self.pushP(expr)
if len(self.stackP) > 1:
s = self.peekP()
prev = self.stackP[-2]
if prev in ('*','+','/','-'):
if prev in ('*','/'):
self.pushF(self.peekF()*s)
else:#stackP[-3] must be an operator.
top=self.popP()
mid =self.popP()
op=self.popP()
if op == '*':
if top.__class__==V:
self.a += self.popF(self.stackF)
self.stackManagement(0)
else:
self.popF(self.stackF)
self.stackManagement(mid*top)
if op == '+':
if top.__class__==V:
self.a+= self.peekF()
self.stackManagement(0)
else:
self.stackManagement(mid+top)
if op == '-':
if top.__class__==V:
self.a -= self.peekF()
self.stackManagement(0)
else:
self.stackManagement(mid-top)
if op == '/':
if top.__class__==V:
self.a /= self.popF(self.stackF)/(mid**2)
self.stackManagement(0)
else:
self.popF(self.stackF)
self.stackManagement(top/mid)
else:
self.a['rhs'] += self.popP(self.stackP)*self.popF(self.stackF)
and I'm giveing the following calls...
---------------------------
from expression import *
from generation import*
(x,y,z) = (V(),V(),V()) # making instances of Variable class
e1=x+y+z
s=Stack(e1)
s.stackManagement(e1)
----------------------------------------------
I'm getting the following error TypeError: unsubscriptable object...
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "generation.py", line 175, in stackManagement
self.stackManagement(expr.left)
File "generation.py", line 176, in stackManagement
self.stackManagement(expr.right)
File "generation.py", line 199, in stackManagement
self.a+= self.peekF()
File "generation.py", line 168, in peekF
rval= self.stackF[-1]
-------------------------------------
I 'm at my wit ends..
Can anyone help...
Thx in advance
More information about the Python-list
mailing list