in reply to Re: Backtracking in Parse::RecDescent
in thread Backtracking in Parse::RecDescent

I don't think that explains why the grammar ( "a" | "aa" ) "a" works. I believe that in P::RD, the default terminal prefix is optional white space. This is why ( "a" | "aa" ) "a" matches.