2011-08-03 49 views
1

我正在使用Parsekit for XCode,但此問題可能適用於大多數解析器生成器。我用gammer解析腳本,它工作正常。但是,我遇到了下一步的問題。考慮一下:使用Parsekit構造解析樹

@start = line +; line = tree;

tree ='tree'fruits branches;

fruits ='with''fruits'Number; branches ='with''branches'Number;

和腳本傳遞:

樹果實8設有分支機構12

如果我再implemenet方法來搭配,水果和分支機構將一次匹配,這是預期。

但是樹會匹配兩次,爲什麼?這阻止了我構建我想要的分析樹。

感謝您的幫助!

回答

1

這裏是ParseKit的開發者。我想你實際上可能會問同樣的問題,因爲這:

parsekit given unexpected calls to selectors

如果通過我對這個問題提出的意見看,我想你會找到答案。如果不是,請告訴我。

+0

嗨託德, 謝謝,但我不能讓我的頭解決方案。將我正在製作的目標存儲在程序集的目標中? 我看到它的方式,我會匹配'樹',將其添加到傳遞樹,匹配'水果'和'分支',並將它們添加爲兒童等... 是否可能有一些示例某處顯示如何使用目標解決方案?對於Parsekit btw的好工作:) – FBryant87

+0

我認爲答案是將您正在構建的抽象樹/圖的根對象(我認爲是「傳遞樹」)存儲爲當前PKAssembly的目標,而不是作爲ivar。當前的PKAssembly或者是您創建的開始的或者是傳入-didMatchXXX:方法的。你通過解析構建的「東西」應該始終是當前程序集的目標。你正在建設的「東西」不應該是一個伊娃或全球變種。 –