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.