Time for an 2014 update…
This commit is contained in:
parent
372c577f83
commit
09687c4926
2520 changed files with 34227 additions and 7318 deletions
|
|
@ -0,0 +1,85 @@
|
|||
global stack$
|
||||
|
||||
expr$ = "3 4 2 * 1 5 - 2 3 ^ ^ / +"
|
||||
print "Expression:"
|
||||
print expr$
|
||||
print
|
||||
|
||||
print "Input","Operation","Stack after"
|
||||
|
||||
stack$=""
|
||||
token$ = "#"
|
||||
i = 1
|
||||
token$ = word$(expr$, i)
|
||||
token2$ = " "+token$+" "
|
||||
|
||||
do
|
||||
print "Token ";i;": ";token$,
|
||||
select case
|
||||
'operation
|
||||
case instr("+-*/^",token$)<>0
|
||||
print "operate",
|
||||
op2$=pop$()
|
||||
op1$=pop$()
|
||||
if op1$="" then
|
||||
print "Error: stack empty for ";i;"-th token: ";token$
|
||||
end
|
||||
end if
|
||||
|
||||
op1=val(op1$)
|
||||
op2=val(op2$)
|
||||
|
||||
select case token$
|
||||
case "+"
|
||||
res = op1+op2
|
||||
case "-"
|
||||
res = op1-op2
|
||||
case "*"
|
||||
res = op1*op2
|
||||
case "/"
|
||||
res = op1/op2
|
||||
case "^"
|
||||
res = op1^op2
|
||||
end select
|
||||
|
||||
call push str$(res)
|
||||
'default:number
|
||||
case else
|
||||
print "push",
|
||||
call push token$
|
||||
end select
|
||||
print "Stack: ";reverse$(stack$)
|
||||
i = i+1
|
||||
token$ = word$(expr$, i)
|
||||
token2$ = " "+token$+" "
|
||||
loop until token$ =""
|
||||
|
||||
res$=pop$()
|
||||
print
|
||||
print "Result:" ;res$
|
||||
extra$=pop$()
|
||||
if extra$<>"" then
|
||||
print "Error: extra things on a stack: ";extra$
|
||||
end if
|
||||
end
|
||||
|
||||
'---------------------------------------
|
||||
function reverse$(s$)
|
||||
reverse$ = ""
|
||||
token$="#"
|
||||
while token$<>""
|
||||
i=i+1
|
||||
token$=word$(s$,i,"|")
|
||||
reverse$ = token$;" ";reverse$
|
||||
wend
|
||||
end function
|
||||
'---------------------------------------
|
||||
sub push s$
|
||||
stack$=s$+"|"+stack$ 'stack
|
||||
end sub
|
||||
|
||||
function pop$()
|
||||
'it does return empty on empty stack
|
||||
pop$=word$(stack$,1,"|")
|
||||
stack$=mid$(stack$,instr(stack$,"|")+1)
|
||||
end function
|
||||
Loading…
Add table
Add a link
Reference in a new issue