您好我正在为一些使用递归的公式创建语法。公式要复杂得多,但现在我只测试它的一部分。在调用parse方法之后,它会在allMatchesFor方法上崩溃。堆栈跟踪充满了allMatchesFor调用,因此看起来它处于无限循环中 问题出在哪儿。是在我的语法构造逻辑还是其他?我怎样才能完成类似的事情来避免这次崩溃
我的语法就像:
@start = formula;
formula = valueTypeResult;
valueTypeResult = (value | concept | arithmeticStatement);
arithmeticStatement = valueTypeResult (arithmeticOperator valueTypeResult)+;
value = 'V';
concept = 'C';
arithmeticOperator = 'A';
你能告诉我如何创建使用递归的语法吗?
由于
答案 0 :(得分:0)
ParseKit的开发人员。
ParseKit对递归没有问题,但你的语法不正确。这更像是BNF语法问题,而不是ParseKit问题。
以下是我认为您正在尝试使用上述语法的正确版本:
@start = formula;
formula = arithmeticStatement;
arithmeticStatement = valueTypeResult (arithmeticOperator valueTypeResult)+;
valueTypeResult = (value | concept);
value = 'V';
concept = 'C';
arithmeticOperator = 'A';