Parsing/RPN to infix conversion: Difference between revisions
Content added Content deleted
(Added C implementation.) |
mNo edit summary |
||
Line 2,098: | Line 2,098: | ||
read +, stack = [1 + 2 + 3] |
read +, stack = [1 + 2 + 3] |
||
Correct!</pre> |
Correct!</pre> |
||
=={{header|Julia}}== |
|||
<lang julia> |
|||
function parseRPNstring(rpns) |
|||
infix = [] |
|||
rpn = split(rpns) |
|||
for tok in rpn |
|||
if all(isnumber, tok) |
|||
push!(infix, tok) |
|||
else |
|||
last = pop!(infix) |
|||
prev = pop!(infix) |
|||
push!(infix, Expr(:call, Symbol(tok), prev, last)) |
|||
end |
|||
end |
|||
infix |
|||
end |
|||
println(parseRPNstring("3 4 2 * 1 5 - 2 3 ^ ^ / +")) |
|||
println(parseRPNstring("1 2 + 3 4 + ^ 5 6 + ^")) |
|||
</lang> |
|||
{{output}} |
|||
<pre> |
|||
Any[:("3" + ("4" * "2") / ("1" - "5") ^ ("2" ^ "3"))] |
|||
Any[:((("1" + "2") ^ ("3" + "4")) ^ ("5" + "6"))] |
|||
</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |
||
{{trans|Go}} |
{{trans|Go}} |