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

时间:2012-12-13 18:31:52

标签: objective-c parsekit

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

我的语法就像:

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

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

由于

1 个答案:

答案 0 :(得分:0)

ParseKit的开发人员。

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

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

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