Anonymous user
Arithmetic evaluation: Difference between revisions
→{{header|Python}}: remove unneeded code
(→{{header|Ada}}: Incorrect heading) |
(→{{header|Python}}: remove unneeded code) |
||
Line 1,196:
return self.opr(self.l.eval(), self.r.eval())
class
def __init__( self, valStrg ):
self.v = int(valStrg)
Line 1,211:
def v1( self, valStrg ):
# Value String
self.nodestak.append(
self.__dict__.update(self.state2)
def
# Operator character or open paren in state1
def po1( self, operchar ):▼
def openParen(a,b):
return 0 # function should not be called
'^': ( pow, 4, 5 ), # right associative exponentiation for grins
▲ opDict= { '+': ( operator.add, 1 ),
▲ '-': (operator.sub, 1 ),
▲ '/': (operator.div, 2 ),
}
if tailOper[1] < operPrec: break▼
self.redeuce()▼
self.operstak.append(opDict[operchar])
self.__dict__.update(self.state1)
def
# Open Parenthesis
print 'parse error - near operator "
def pc2( self,operchar ):
# Close Parenthesis
# reduce node until matching open paren found
self.redeuce()▼
if len(self.operstak)>0:
self.operstak.pop() # pop off open parenthesis
Line 1,271 ⟶ 1,249:
def end(self):
while len(self.operstak)>0:
tailOper = self.
▲# print 'reduce'
state1 = { 'v': v1, 'o':
state2 = { 'v':
Line 1,291 ⟶ 1,272:
for c in exprssn:
cp += 1
if c in '+-/*^()': # throw in exponentiation (^)for grins
if bgn is not None:
p.v(p, exprssn[bgn:cp])
|