我正在使用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


最佳答案

一种方法是阐明规则中的组合。

另一种方法是使用语义动作,该动作检查重复并在找到重复符后引发grako.exceptions.FailedSemantics。解析器的行为就像输入没有被解析一样。

关于python - 如何在不重复ebnf语法的情况下实现规则组合?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28864172/

10-12 17:50
查看更多