2011-11-03 63 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

是的,我评论说,线和编译。我尝试过登记,但我的声望还不够高。 –