What I appear to have implemented is a homebrew 'Packrat Parser', which is RD with a modifiable context stack. I think that the recursive nature of my problem, in which any given non-operator element might itself be another whole expression, function, or if-then-else statement, leads me to some form of cascading procedural solution.
I'll go back and reread my Pigeon (lex & yacc) book and see if I can find some Aho to see if I can grok this more deeply. The whole subject is worth understanding thoroughly.
Thanks for your comments,
merlyn!