我定义了一条规则:
def("invokation", char('@').word().plus().flatten());
对于“@who”,它将匹配并获得@who
作为结果。
如何在没有who
的情况下回复@
?
答案 0 :(得分:3)
不确定您的问题是关于Java或Dart的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)
。