【问题标题】:ParseKit greedy matching modeParseKit 贪心匹配模式
【发布时间】:2012-12-18 18:59:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: parsing bnf parsekit


    【解决方案1】:

    ParseKit 的开发者在这里。

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

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

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

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

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

    【讨论】:

    • 谢谢托德,这正是我所需要的
    猜你喜欢
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2013-06-09
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多