|
|
1.1 root 1: procedure main()
2: while write(fix(read()))
3: end
4:
5: procedure fix(exp)
6: while exp ?:= 2(="(",tab(bal(')')),pos(-1))
7: return lassoc(exp,'+-' | '*/') | rassoc(exp,'^') | exp
8: end
9:
10: procedure lassoc(exp,op)
11: local j
12: return exp ? {
13: every j := bal(op)
14: form(tab(\j),move(1),tab(0))
15: }
16: end
17:
18: procedure rassoc(exp,op)
19: return exp ? form(tab(bal(op)),move(1),tab(0))
20: end
21:
22: procedure form(arg1,op,arg2)
23: return op || "(" || fix(arg1) || "," || fix(arg2) || ")"
24: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.