我正在为我正在从事的一个项目构建一个使用ParseKit解析Newick树的语法,并且我已经做到了这一点。它基于这里的语法:http://en.wikipedia.org/wiki/Newick_format。我想使用一种语法来实现这一点,而不是使用现有的笨重的递归代码。
但是,我不确定如何指定name和length节点来说明空字符串或广义字符串和数字。我已经在示例和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和length节点可以工作。有人能证实吗?
name = Word | Quoted String;
length = ':' Number;发布于 2011-11-04 00:01:51
这里是ParseKit的开发者。你最后提出的解决方案基本上是正确的,只有一个小问题:QuotedString是一个词:
name = Word | QuotedString;
length = ':' Number;另外,供将来参考:如果你想要一个‘通配符’匹配器(你正尝试用上面的*做的事情),你可以使用内置的解析器:Any。这将匹配任何令牌。
在ParseKit中,*是修饰语,意思是零或更多。
https://stackoverflow.com/questions/7994385
复制相似问题