我正在做一些类似于公式验证器的东西,我正在使用ParseKit框架来完成它。我的方法是创建适当的语法,当对示例字符串调用didMatchFormula回调方法时,我假设已经找到了公式,因此它是有效的。
然而,有一个困难-即使在公式部分后面还包含其他字符,也可以从样本字符串中检测到公式。我需要类似贪婪模式匹配的东西-整个字符串将匹配公式语法,以便只有当字符串包含公式而不是其他字符时才会调用didMatchFormula。
你能给我一些提示,如何用PaseKit或其他方式来实现这一点吗?我不能使用正则表达式,因为我的公式将使用递归,而regexp不是处理这一问题的好工具。
发布于 2012-12-19 22:37:52
这里是ParseKit的开发者。
使用ParseKit (或任何解析工具包)实现这一点的最简单、最优雅的方法可能是设计您的公式语言,在每条语句后面都有一个终止符。这与大多数类C编程语言中的;终止语句的概念相同。
下面是一个使用.作为语句结束符的玩具公式语言示例:
@start = lang;
lang = statment+;
statment = Word+ terminator;
terminator = '.';请注意,我是如何设计该语言的,以使您的“贪婪”需求成为该语言的固有特性。想想看-如果输入的字符串以任何垃圾内容结尾,而这些垃圾内容不是以.结尾的有效语句,那么我的lang产品将找不到匹配的内容,解析将失败。
使用这种类型的设计,您将不需要在您使用的parsking工具包中使用任何“贪婪”特性。相反,您的语言设计自然会满足您的需求。
https://stackoverflow.com/questions/13939642
复制相似问题