ParseKit的Newick语法

3

我正在为我正在进行的一个项目构建语法,使用ParseKit解析Newick树,并且已经完成了这一步骤。这是基于此处的语法:http://en.wikipedia.org/wiki/Newick_format。我想使用语法而不是现有的笨重递归代码。

然而,我不确定如何指定名称和长度节点以考虑空字符串或广义字符串和数字。我从示例、ParseKit网站以及Java构建解析器书籍的浏览中走了这么远,但错过了些东西。请问有人能帮我指点一下方向吗?

当前的语法:

@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;
1个回答

2

我是ParseKit的开发者。您在最后提出的解决方案基本上是正确的,只需要进行一个小修正: QuotedString 是一个单词。

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

未来参考:如果您想要一个“通配符”匹配器(就像您尝试使用上面的*一样),您可以使用内置解析器:Any。这将匹配任何令牌。

在ParseKit中,*是一个修饰符,表示零个或多个。


1
太好了,谢谢!现在,如果我能让ParseKit在Lion上的XCode 4.2中工作就好了。我有很多问题设置依赖项和链接。基本上,我这样做:
  1. 检查1.5标记发布
  2. 将项目拖到我的框架文件夹中
  3. 将ParseKit添加为目标依赖项
  4. 添加ParseKit.framework作为库链接
  5. 尝试编译失败http://pastie.org/2805285
- Chris F.
看起来依赖子库RegexKit中缺少格式字符串的问题。请检查此文件/行:RegexKitLite.m:894。另外,您能否给我的答案点个赞,因为它似乎解决了这个问题?谢谢。 - Todd Ditchendorf
1
是的,我注释掉了那一行代码,然后它就编译通过了。我试图点赞,但我的声望还不够高。 - Chris F.
抱歉,我想说的是“选择为答案”。谢谢你做到了这一点。 - Todd Ditchendorf
我发现了你语法中的问题,但即使修复了这个问题,我认为你的语法也不是你想要的。完整细节在这里:http://pastie.org/2812186。抱歉,ParseKit在这方面没有很好的错误报告。 Metsker书中详细介绍了你语法中的错误。我想在书中找“左递归”。 - Todd Ditchendorf
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接