invocable all procedure main(stk,ws:' \t') while write("-> ",read() ? (while (pos(0) & break stk) | push(stk,numeric(x := (tab(upto(~ws)),tab(many(~ws)))\1) | (p := proc(x,3|2|1))!getArgs(stk,args(p),[]) ) | break ["error"] )[1]) end procedure getArgs(stk, i, a) # need args in reverse of stack order every 1 to i do push(a, pop(stk)|fail) return a end