1

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

我的语法是这样的:   

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

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

谢谢

4

1 回答 1

0

ParseKit的开发者在这里。

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

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

@start = formula;
formula = arithmeticStatement;
arithmeticStatement = valueTypeResult (arithmeticOperator valueTypeResult)+;
valueTypeResult = (value | concept);
value = 'V';
concept = 'C';
arithmeticOperator = 'A';
于 2012-12-14T07:23:37.540 回答