Ha ha, for my parsers I've reinvented the wheel and created modification of this algorithm with combined operand/operation stack. In my stack I have operands (A) or operands with incomplete operation (A+). Each stack element have 'level' which corresponds to operator precedence and incoming operator combines stack elements with level higher than operator level. At the end of expression I put dummy operator with lowest level.
For example, parsing token sequence A * B + C * D [end]
(A*B)+ <- A* and B have higher level than +
(A*B)+ C* D
((A*B)+(C*D))= <- (A*B)+, C* and D have higher level than [end]
If someone decides to use my version instead of original I can give additional details.