RosettaCodeData/Task/Parsing-RPN-calculator-algorithm/Zkl/parsing-rpn-calculator-algorithm-1.zkl
2023-07-01 13:44:08 -04:00

18 lines
420 B
Text

var ops=D("^",True, "*",'*, "/",'/, "+",'+, "-",'-);
fcn parseRPN(e){
println("\npostfix: ", e);
stack:=L();
foreach tok in (e.split()){
op:=ops.find(tok);
if(op){
y := stack.pop(); x := stack.pop();
if(True==op) x=x.pow(y);
else x=op(x,y);
stack.append(x);
}
else stack.append(tok.toFloat());
println(tok," --> ",stack);
}
println("result: ", stack[0])
}