如果我的语法包含一个由许多 or-concatenated 子表达式组成的表达式,为什么 Grako 解析过程会失败?

Why does the Grako parsing process fail if my grammar contains an expression that consists of many or-concatenated subexpressions?

我正在使用 Grako。在我的 EBNF 语法中,我有一个表达式,它由许多使用 OR 运算符连接的子表达式组成,如下所示:

expression = subexpressionA | subexpressionB | ...  | subexpressionZ;

如果输入字符串包含后面的子表达式之一,例如 subexpressionZ,则解析过程总是失败。当我这样重写语法时

expression = subexpressionZ | subexpressionB |  ...  | subexpressionA;

如果输入字符串包含 subexpressionZ,则解析过程成功完成,但如果包含 subexpressionA,则现在将失败。

有没有人遇到过类似的问题?这是 Grako 中的错误(我使用的是 3.6.3。)还是我做错了什么?

非常感谢任何想法!

我解决了我的问题 - 很久以前 :) - 通过将表达式拆分为多个子表达式,如下所示:

expression1 = subexpressionA | subexpressionB | subexpressionC;
expression2 = subexpressionD | subexpressionE | ...  | subexpressionZ;
expression = expression1 | expression2;

出于某种原因,这有效...