【发布时间】:2015-03-04 20:23:42
【问题描述】:
我正在使用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 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。解析器的行为就像输入没有被解析一样。
【讨论】:
with 重复?
{a | b | c}+(您会投票/接受答案吗?)。