当 ParseKit 尝试识别我的语法时,它会进入一个无限循环。怎么了?



嗨,我正在为一些使用递归的公式创建语法。该公式要复杂得多,但现在我只测试其中的一部分。调用解析方法后,它会在 allMatchesFor 方法上崩溃。堆栈跟踪充满了 allMatchesFor 调用,所以看起来它处于无限循环中问题出在哪里。是在我的语法构建逻辑中还是在?我怎样才能完成类似的事情来避免这种崩溃

我的语法是这样的:

@start = formula;
formula = valueTypeResult;
valueTypeResult = (value | concept | arithmeticStatement);
arithmeticStatement = valueTypeResult (arithmeticOperator valueTypeResult)+;
value = 'V';
concept = 'C';
arithmeticOperator = 'A';

你能告诉我如何创建使用递归的语法吗?

谢谢

ParseKit 的开发者。

ParseKit在递归方面没有问题,但你的语法不正确。这更像是一个BNF语法问题,而不是ParseKit问题。

这是我相信您正在尝试使用上述语法的正确版本:

@start = formula;
formula = arithmeticStatement;
arithmeticStatement = valueTypeResult (arithmeticOperator valueTypeResult)+;
valueTypeResult = (value | concept);
value = 'V';
concept = 'C';
arithmeticOperator = 'A';

相关内容

最新更新