Polish notation: Difference between revisions
imported>Bruce M. Tindall (source of name) |
imported>Richard Pinch (mention prefix, postfix anchors) |
||
Line 1: | Line 1: | ||
In [[mathematics]] and [[computer science]], '''Polish notation''' is a way of expressing arithmetic or algebraic formulae which is unambiguous without the use of parentheses. | In [[mathematics]] and [[computer science]], '''Polish notation''' is a way of expressing arithmetic or algebraic formulae which is unambiguous without the use of parentheses. | ||
In ordinary "algebraic" or "infix" notation a [[binary operator]] such as × or + is written between the two operands, and an expression such as ''a'' × ''b'' + ''c'' is then ambiguous. | In ordinary "algebraic" or "infix" notation a [[binary operator]] such as × or + is written between the two operands, and an expression such as ''a'' × ''b'' + ''c'' is then ambiguous. One solution to this difficulty is to use a convention for ''priority'' or ''[[operator precedence|precedence]]'', for example that multiplication precedes addition and then use brackets to show that the usual priority is not to be used (one such convention is "[[BODMAS]]"). Hence | ||
:<math>(a \times b) + c = a \times b + c \neq a \times (b + c) . \, </math> | :<math>(a \times b) + c = a \times b + c \neq a \times (b + c) . \, </math> | ||
In | In ''prefix notation'' the operator precedes its two operands: the operand may be a term or another expression. So | ||
:<math>{+}{\times} a b c = {+} ({\times a b}) c = {+} (a \times b) c = (a \times b) + c \,;</math> | :<math>{+}{\times} a b c = {+} ({\times a b}) c = {+} (a \times b) c = (a \times b) + c \,;</math> | ||
Line 12: | Line 12: | ||
Here brackets have been inserted to show the order in which the operations are performed, but are not part of or necessary for the notation. | Here brackets have been inserted to show the order in which the operations are performed, but are not part of or necessary for the notation. | ||
In ''reverse'' | In ''postifx'' or ''reverse Polish'' notation the operator follows its two operands. | ||
:<math>a b {\times} c {+} = (a \times b) + c \,;</math> | :<math>a b {\times} c {+} = (a \times b) + c \,;</math> |
Revision as of 16:25, 12 December 2008
In mathematics and computer science, Polish notation is a way of expressing arithmetic or algebraic formulae which is unambiguous without the use of parentheses.
In ordinary "algebraic" or "infix" notation a binary operator such as × or + is written between the two operands, and an expression such as a × b + c is then ambiguous. One solution to this difficulty is to use a convention for priority or precedence, for example that multiplication precedes addition and then use brackets to show that the usual priority is not to be used (one such convention is "BODMAS"). Hence
In prefix notation the operator precedes its two operands: the operand may be a term or another expression. So
Here brackets have been inserted to show the order in which the operations are performed, but are not part of or necessary for the notation.
In postifx or reverse Polish notation the operator follows its two operands.
Expressions in reverse Polish notation are particularly well adapted to evaluation on a stack.
The name "Polish notation" refers to the nationality of its inventor, Jan Łukasiewicz (1878-1956).