我正在使用Grako EBNF/PEG parser。
我知道EBNF语法允许获取满足给定选项之一的表达式:
(a | b | c)
是否存在类似的语法部分或变通方法,可以在不重复的情况下抓取a
,b
和c
的任意组合的搜索结果,以便有效的表达式如下:
a b c
b a c
a b
b c
b
none
但不喜欢:
b b c
a a
答案 0 :(得分:2)
一种方法是在规则中拼出组合。
另一种方法是使用检查重复的语义操作,如果找到它们则引发grako.exceptions.FailedSemantics
。解析器的行为就像输入没有被解析一样。