【问题标题】:Using Parsekit to construct parse tree使用 Parsekit 构造解析树
【发布时间】:2011-08-03 17:10:17
【问题描述】:

我正在为 XCode 使用 Parsekit,但这个问题很可能适用于大多数解析器生成器。我用一个游戏玩家解析一个脚本,它工作正常。但是,我在下一步遇到问题。考虑一下grmmer:

@start = line+; 线=树;

tree = 'tree' 果枝;

fruits = 'with' 'fruits' 编号; 分支 = 'with' '分支' 编号;

以及要传递的脚本:

果树 8 分枝 12

如果我再实现匹配的方法,水果和树枝将匹配一次,这是预期的。

但是树会匹配两次,为什么?这使我无法构建我想要的解析树。

感谢您的帮助!

【问题讨论】:

    标签: objective-c xcode parsing parser-generator parsekit


    【解决方案1】:

    这里是 ParseKit 的开发者。我认为您实际上可能会问与此相同的问题:

    parsekit given unexpected calls to selectors

    如果您通读我针对该问题所做的 cmets,我想您会找到答案。如果没有,请告诉我。

    【讨论】:

    • 嗨,托德,谢谢,但我无法完全理解解决方案。将我正在处理的内容存储在程序集的目标中?我看到它的方式,我会匹配“树”,将其添加到传递树,匹配“水果”和“分支”并将它们添加为子项等......是否可能有一些示例显示如何使用目标解决方案?顺便说一句,Parsekit 做得很好 :)
    • 我认为答案是将您正在构建的抽象树/图的根对象(我认为是“传递树”?)存储为当前 PKAssembly 的目标,而不是 ivar。当前的 PKAssembly 要么是您开始创建的那个,要么是传递给 -didMatchXXX: 方法的那个。您通过解析构建的“东西”应该始终是当前程序集的目标。您正在构建的“东西”绝不应该是 ivar 或全局 var。
    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2021-03-22
    • 1970-01-01
    相关资源
    最近更新 更多