I've done recursive decent expression parsing a couple times in the past for simple expression. In the past year I had to implement a parser for Verilog. The operator precedence table has 18 levels of precedence!
Not only would writing 18 routines be a PITA, it would mean super deep and slow call stacks during expression evaluation. So I used the shunting yard algorithm.
Not only would writing 18 routines be a PITA, it would mean super deep and slow call stacks during expression evaluation. So I used the shunting yard algorithm.