2011-11-03 49 views
3

我正在構建一個使用ParseKit解析Newick樹的語法,這是我正在開發的一個項目,而且我已經掌握了這一點。它基於這裏的語法:http://en.wikipedia.org/wiki/Newick_format。我想爲此使用一種語法,而不是現在正在工作的現有笨重的遞歸代碼。ParseKit的Newick語法

但是,我不確定如何指定名稱和長度節點來說明空字符串或通用字符串和數字。我已經從這些例子和ParseKit網站上得到了這些,以及一些關於Java書籍的Bulding Parsers的略讀,但是遺漏了一些東西。請有人指出我正確的方向嗎?

當前語法:

@start = tree+; 
tree = subtree ';' | branch ';'; 
subtree = leaf | internal; 
leaf = name; 
internal = '(' branchset ')' name; 
branchset = branch | branchset ',' branch; 
branch = subtree length; 
name = *; 
length = * | ':' * 

謝謝!

- 可能的答案:

也許這些名稱和長度節點將工作。有誰可以證實?

name = Word | Quoted String; 
length = ':' Number; 

回答

2

這裏是ParseKit的開發者。在最後你提出的解決方案是用一個小的修復基本上是正確的:QuotedString就是一個字:

name = Word | QuotedString; 
length = ':' Number; 

而且以供將來參考:如果你想「通配符」匹配(你正在嘗試與上述*做),你可以使用內建解析器:Any。這將匹配任何令牌。

在ParseKit中,*是一個修飾符,意思是零個或多個。

+1

非常好,謝謝!現在,如果只有我可以讓ParseKit在Lion上的XCode 4.2中工作。我有很多問題設置依賴關係和鏈接。基本上,我這樣做: 1.退房1.5發佈標籤 2.拖動項目到我的frameworks文件夾 3.添加ParseKit爲目標的依賴 4.添加ParseKit.framework作爲庫鏈接 5.嘗試編譯失敗http://pastie.org/2805285 –

+0

看起來像在依賴項子庫RegexKit中缺少格式字符串有問題。檢查這個文件/行:RegexKitLite.m:894。另外,你可以請upvote我的答案上面,因爲它似乎已經解決了這個問題?謝謝。 –

+1

是的,我評論說,線和編譯。我嘗試過登記,但我的聲望還不夠高。 –