1

我正在制作类似公式验证器的东西,我正在使用 ParseKit 框架来完成它。我的方法是创建正确的语法,当对示例字符串调用 didMatchFormula 回调方法时,我假设公式已找到,因此它是有效的。

然而,有一个困难 - 从示例字符串中检测到公式,即使它还包含公式部分后面的其他字符。我需要像贪婪模式这样的匹配 - 整个字符串将与公式语法匹配,以便仅当字符串包含公式且不包含其他字符时才会调用 didMatchFormula。

你能给我一些提示吗?如何使用 PaseKit 或其他方式来实现这一点。我不能使用正则表达式,因为我的公式会使用递归,而正则表达式不是处理它的好工具。

4

1 回答 1

0

ParseKit的开发者在这里。

使用 ParseKit(或任何解析工具包)执行此操作的最简单和最优雅的方法可能是设计您的公式语言在每个语句之后都有一个终止符字符。;这与大多数类 C 编程语言中的终止语句的概念相同。

这是一个.用作语句终止符的示例玩具公式语言:

@start = lang;
lang = statment+;
statment = Word+ terminator;
terminator = '.';

请注意我是如何设计该语言的,以便您的“贪婪”要求是该语言的固有特征。想一想——如果输入字符串以任何不是以 a 结尾的有效语句的垃圾内容结尾.,我的lang生产将找不到匹配项,解析将失败。

使用这种类型的设计,您将不需要您使用的解析工具包中的任何“贪婪”功能。相反,您的语言设计自然会满足您的要求。

于 2012-12-19T14:37:51.680 回答