This is a CFG listed in the Aho (dragon) compiler text:
expr -> expr + term | expr - term | term
term -> term * factor | term / factor | factor
factor -> digit | (expr)
digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
It is intended to parse simple arithmetic expressions taking into
account the precedence of operators. What I don't understand is why
you parse the operators with lower precedence first. I have worked
through several examples by hand and it works but I don't understand
why it works. Perhaps I should be content with that but I am a
perfectionist.
Thanks ...