@% = &60B RPN$ = "3 4 2 * 1 5 - 2 3 ^ ^ / +" DIM Stack(1000) SP% = 0 FOR i% = 1 TO LEN(RPN$) Token$ = MID$(RPN$,i%,1) IF Token$ <> " " THEN PRINT Token$ " :"; CASE Token$ OF WHEN "+": PROCpush(FNpop + FNpop) WHEN "-": PROCpush(-FNpop + FNpop) WHEN "*": PROCpush(FNpop * FNpop) WHEN "/": n = FNpop : PROCpush(FNpop / n) WHEN "^": n = FNpop : PROCpush(FNpop ^ n) WHEN "0","1","2","3","4","5","6","7","8","9": PROCpush(VALMID$(RPN$,i%)) WHILE ASCMID$(RPN$,i%)>=48 AND ASCMID$(RPN$,1)<=57 i% += 1 ENDWHILE ENDCASE FOR j% = SP%-1 TO 0 STEP -1 : PRINT Stack(j%); : NEXT PRINT ENDIF NEXT i% END DEF PROCpush(n) IF SP% > DIM(Stack(),1) ERROR 100, "Stack full" Stack(SP%) = n SP% += 1 ENDPROC DEF FNpop IF SP% = 0 ERROR 100, "Stack empty" SP% -= 1 = Stack(SP%)