Parsing/Shunting-yard algorithm: Difference between revisions

Added 11l
(Added Wren)
(Added 11l)
Line 39:
* [[Parsing/RPN to infix conversion]].
<br><br>
 
=={{header|11l}}==
{{trans|Java}}
 
<lang 11l>F infix_to_postfix(infix)
-V ops = ‘-+/*^’
V sb = ‘’
[Int] s
 
L(token) infix.split(re:‘\s’)
I token.empty
L.continue
 
V c = token[0]
V? idx = ops.find(c)
I idx != N
I s.empty
s.append(idx)
E
L !s.empty
V prec2 = s.last I/ 2
V prec1 = idx I/ 2
I prec2 > prec1 | (prec2 == prec1 & c != ‘^’)
sb ‘’= ops[s.pop()]‘ ’
E
L.break
s.append(idx)
 
E I c == ‘(’
s.append(-2)
 
E I c == ‘)’
L s.last != -2
sb ‘’= ops[s.pop()]‘ ’
s.pop()
 
E
sb ‘’= token‘ ’
 
L !s.empty
sb ‘’= ops[s.pop()]‘ ’
 
R sb
 
V infix = ‘3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3’
print(‘infix: ’infix)
print(‘postfix: ’infix_to_postfix(infix))</lang>
 
{{out}}
<pre>
infix: 3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3
postfix: 3 4 2 * 1 5 - 2 3 ^ ^ / +
</pre>
 
=={{header|8th}}==
1,480

edits