Я использую Грако. В моей грамматике EBNF у меня есть выражение, состоящее из множества подвыражений, объединенных с помощью оператора ИЛИ, например:
expression = subexpressionA | subexpressionB | ... | subexpressionZ;
Процесс синтаксического анализа всегда терпит неудачу, если входная строка содержит одно из последних подвыражений, скажем, подвыражениеZ. Когда я переписываю грамматику вот так
expression = subexpressionZ | subexpressionB | ... | subexpressionA;
процесс синтаксического анализа завершается успешно, если входная строка содержит подвыражениеZ, но теперь произойдет сбой, если она содержит подвыражениеA.
У кого-нибудь когда-нибудь была похожая проблема? Это ошибка в Grako (я использую 3.6.3.) или я что-то не так делаю?
Большое спасибо за любые идеи!