direct left-recursion support