|
|
Initial revision
procedure main()
while write(fix(read()))
end
procedure fix(exp)
while exp ?:= 2(="(",tab(bal(')')),pos(-1))
return lassoc(exp,'+-' | '*/') | rassoc(exp,'^') | exp
end
procedure lassoc(exp,op)
local j
return exp ? {
every j := bal(op)
form(tab(\j),move(1),tab(0))
}
end
procedure rassoc(exp,op)
return exp ? form(tab(bal(op)),move(1),tab(0))
end
procedure form(arg1,op,arg2)
return op || "(" || fix(arg1) || "," || fix(arg2) || ")"
end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.