Ah, interesting. Must try it out!!!
Recursion isn't very bad when made by a good compiler.
It could be done with only 2 variables per call, which is allocated on the stack, which is much faster than memmory allocation on the heap.
It could never stack overflow, unless the number of tokens is bigger than the stack, which isn't likely.
Recursion takes as big space as iterative programming, and in this place takes as small memmory consumption too.
When data recursion is needed, recursive code is as good as iterative code, becouse instead of having a pointer that points to where the program is in the algorithm, it has code. It would be possible to construct a finite state machine if one went to the extreme.
Small code is always good, becouse now it makes it possible to put code in teh code cache.
Also, BNF is easely converted to a recursive algorithm.
The code I wrote could be written in (I admit, a wierd type of) BNF as
op[i] = op[i-1] + operator + op[i]
op = operand