在PetitParser中如何消费而不是捕获一些字符?

时间:2013-06-22 07:25:10

标签: parsing dart petitparser

我定义了一条规则:

def("invokation", char('@').word().plus().flatten());

对于“@who”,它将匹配并获得@who作为结果。

如何在没有who的情况下回复@

1 个答案:

答案 0 :(得分:3)

不确定您的问题是关于JavaDart的PetitParser吗?

无论如何,您需要将char('@')word().plus().flatten()连接到序列。然后,选择列表结果列表的第二个元素,忽略第一个字符。

在Java中,这看起来像这样:

def("invokation", character('@')
    .seq(word().plus().flatten())
    .map(Functions.nthOfList(1));

在达特这是:

def("invokation", char('@')
    .seq(word().plus().flatten())
    .pick(1));

顺便说一句,我刚刚对PetitParser for Java进行了改进,以便您也可以在Java中使用pick(int)