Parsing/RPN to infix conversion: Difference between revisions
m
→{{header|Perl 6}}: style tweaks
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: style tweaks) |
|||
Line 2,771:
=={{header|Perl 6}}==
<lang perl6>
'1 2 + 3 4 + ^ 5 6 + ^';▼
say rpm-to-infix($_) for @tests;▼
}▼
sub rpm-to-infix($string) {
my @stack;
for $string.words {
when /\d/ { @stack.push: 9 => $_ }
my ($y,$x) = @stack.pop, @stack.pop;
when '^' { @stack.push: 4 => ~(p($x,5), $_, p($y,4)) }
when '*' | '/' { @stack.push: 3 => ~(p($x,3), $_, p($y,3)) }
when '+' | '-' { @stack.push: 2 => ~(p($x,2), $_, p($y,2)) }
}
($string, @stack».value).join("\n") ~ "\n";
▲}
'3 4 2 * 1 5 - 2 3 ^ ^ / +',▼
{{out}}
<pre>3 4 2 * 1 5 - 2 3 ^ ^ / +
▲3 4 2 * 1 5 - 2 3 ^ ^ / +
3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3
1 2 + 3 4 + ^ 5 6 + ^
( ( 1 + 2 ) ^ ( 3 + 4 ) ) ^ ( 5 + 6 )</pre>
|