Try moving your | startExpr 'and' expr
and | expr 'and' expr
alternatives in the rules above the | startExpr '+' expr
and corresponding expr alternatives. I believe they should then match first and give you the tree you expect. I'm guessing you will likely also wish to elevate the or
rules as well.