"say you have code for (1;2;+), you put 1 on the stack, then 2, and for + you do not apply it but push (+;1;2) back." exactly so! i use this method in my xy toy language, and in several other stack-oriented languages. nsl.com/k/xy/xy.txt
what i call the queue in xy is simply the so-far unevaluated future portion of the expression under evaluation. pushing transformed subexpressions onto the queue for later evaluation is a very powerful, and very satisfying technique.
that's an implementation decision. i was only interested in the abstract semantics of a language in which it was easy to define continuations, co-routines, &c.