Talk:Parsing/RPN to infix conversion: Difference between revisions

m
→‎Examples Incorrect: generated infix will still be wrong
m (→‎Examples Incorrect: generated infix will still be wrong)
Line 9:
Several examples (i.e. Python, and TCL) don't deal with associativity correctly - the code doesn't even refer to the attribute - it's defined and not used. I'm not sure of the Ruby code. The following "1 2 + 3 4 + ^ 5 6 + ^" should produce "( ( 1 + 2 ) ^ ( 3 + 4 ) ) ^ ( 5 + 6 )". --[[User:Dgamey|Dgamey]] 04:03, 17 December 2011 (UTC)
: It's actually a matter of precedence rather than associativity. RPN per se doesn't need to worry about if an op is left or right associated, but for infix notation brackets are needed for ops at same precedence level. To wit: <code>1 2 3 + -</code> is <code>1 - (2 + 3)</code>, not the same as <code>1 - 2 + 3</code>. Generally the easiest way is wrap the expression with parens whenever you pop a binary op off the stack, which will be unsightly, but correct: <code>1 2 3 4 5 + + + +</code> becomes <code>(1 + (2 + (3 + (4 + 5))))</code> --[[User:Ledrug|Ledrug]] 05:49, 17 December 2011 (UTC)
:: Yes of course the RPN is correct. It's the generated infix that is wrong. As the examples I looked at don't even reference associativity when generating the infix nor do they generate parenthesis every time then they must be wrong. At least one of these parsing tasks wanted minimal parenthesis - it would have to be this one. The one example given just isn't a case where you'd notice. --[[User:Dgamey|Dgamey]] 14:58, 17 December 2011 (UTC)
Anonymous user