Для тех, кто заинтересован
A ::= A B | A C | D | E
можно переписать как:
A ::= (D | E) (B | C)*
Общая форма преобразования такова: любой из не левосторонних рекурсивных дизъюнктов, за которым следует любое количество левых рекурсивных дизъюнктов без первого элемента.
Реформировать код действия немного хитро, но я думаю, что это может быть и плагином.