我正在使用Grako。在我的EBNF语法中,我有一个表达式,它包含许多使用OR运算符连接的子表达式,如下所示:
expression = subexpressionA | subexpressionB | ... | subexpressionZ;
如果输入字符串包含后面的子表达式之一,例如subexpressionZ,则解析过程总是失败。当我像这样重写语法时
expression = subexpressionZ | subexpressionB | ... | subexpressionA;
如果输入字符串包含subexpressionZ,则解析过程成功完成,但如果它包含subexpressionA,则现在将失败。
有没有人遇到过类似的问题?这是Grako中的一个错误(我使用的是3.6.3。)还是我做错了什么?
非常感谢任何想法!
答案 0 :(得分:2)
我解决了我的问题-很久以前:)-通过将表达式拆分为多个子表达式,如下所示:
expression1 = subexpressionA | subexpressionB | subexpressionC;
expression2 = subexpressionD | subexpressionE | ... | subexpressionZ;
expression = expression1 | expression2;
出于某种原因,这行得通...