Вот ваша левая рекурсия:
... | (anREs '|' anREs) => anREs '|' anREs ;
Хуже, это неоднозначно.Если у вас есть anREs_1 |anREs_2 |anREs3 в качестве входных данных, не ясно, что подтермы |оператор:.
Я ожидал бы, что это решит проблему, и решит также неоднозначность:
... | (anRE '|' anREs) => anRE '|' anREs ;