如何在不重复ebnf语法的情况下实现规则组合?

时间:2015-03-04 20:23:42

标签: python ebnf peg grako

我正在使用Grako EBNF/PEG parser

我知道EBNF语法允许获取满足给定选项之一的表达式:

(a | b | c)

是否存在类似的语法部分或变通方法,可以在不重复的情况下抓取abc的任意组合的搜索结果,以便有效的表达式如下:

a b c
b a c
a b
b c
b
none

但不喜欢:

b b c
a a

1 个答案:

答案 0 :(得分:2)

一种方法是在规则中拼出组合。

另一种方法是使用检查重复的语义操作,如果找到它们则引发grako.exceptions.FailedSemantics。解析器的行为就像输入没有被解析一样。