I know that the grammar
<expr> = <expr> + <expr> | <num>
<num> = 0|1
is ambiguous because it cannot decide between (1+1)+1 or 1+(1+1). However, that would also mean that
<expr> = <expr> + <num> | <expr> * <num> | <num>
<num> = 0 | 1
would also be ambiguous because it couldn't tell if 1+1*1+1 is (1+1)*(1+1) or ((1+1)*1)+1. Or does it distinguish between these by terminating the interpretation as soon as it finds one match?
If it does terminate on a first match, then would 1+1*1+1 necessarily get interpreted as the first option since it is possible to interpret the "main operation" as being +?