我正在使用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
?
最佳答案
一种方法是阐明规则中的组合。
另一种方法是使用语义动作,该动作检查重复并在找到重复符后引发grako.exceptions.FailedSemantics
。解析器的行为就像输入没有被解析一样。
关于python - 如何在不重复ebnf语法的情况下实现规则组合?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28864172/