I'm following PPP using C++ by Bjarne Stroustrup and I'm having difficulty following along with his introductory grammar for a calculator (pg 189-192) as follows:
// a simple expression grammar
Expression:
Term
Expression "+" Term // addition
Expression "-" Term // subtraction
Term:
Primary
Term "*" Primary // multiplication
Term "/" Primary // division
Term "%" Primary // remainder (modulo)
Primary:
Number
"(" Expression ")"
Number:
floating-point-literal
Firstly we parse 2, which is a floating-point-literal which is a Number which is a Primary which is a Term which is an Expression. 
2 is a floating-point-literal which is a Number which is a Primary which is a Term which is an Expression
- Jumps straight to Expression (this is where I start getting lost)
3 is a floating-point-literal which is a Number which is a Primary which is a Term. Why does the book stop parsing here, "3" currently fits all the criteria to be an Expression?
When I try to perform this action by hand, I can only come to a conclusion that matches the given diagram when I ignore the "+" and parse 3 to Term to match the requirement Expression "+" Term.
Furthermore, if I try and extrapolate further to parse 9 + 3 * 2, without looking ahead for a * I cannot finish working through the grammar, as 9+3 is (apparently) a valid expression which has no grammar to be multiplied...
