37 lines
725 B
Plaintext
37 lines
725 B
Plaintext
Module Rpn_Calc {
|
|
Rem Form 80,60
|
|
function rpn_calc(a$) {
|
|
def m=0
|
|
dim token$()
|
|
token$()=piece$(a$," ")
|
|
l=len(token$())
|
|
dim type(l)=0, reg(l)
|
|
where=-1
|
|
for i=0 to l-1
|
|
c=val(token$(i),"",m)
|
|
if m>-1 then
|
|
where++
|
|
reg(where)=c
|
|
else
|
|
reg(where-1)=eval(str$(reg(where-1))+token$(i)+str$(reg(where)))
|
|
where--
|
|
end if
|
|
inf=each(reg(),1, where+1)
|
|
while inf
|
|
export$<=token$(i)+" ["+str$(inf^,"")+"] "+ str$(array(inf))+{
|
|
}
|
|
token$(i)=" "
|
|
end while
|
|
next i
|
|
=reg(0)
|
|
}
|
|
Global export$
|
|
document export$
|
|
example1=rpn_calc("3 4 2 * 1 5 - 2 3 ^ ^ / +")
|
|
example2=rpn_calc("1 2 + 3 4 + ^ 5 6 + ^")
|
|
Print example1, example2
|
|
Rem Print #-2, Export$
|
|
ClipBoard Export$
|
|
}
|
|
Rpn_Calc
|