【问题标题】:How to implement combination of rules without repeatings in ebnf grammar?如何在ebnf语法中实现规则组合而不重复?
【发布时间】:2015-03-04 20:23:42
【问题描述】:

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

?

【问题讨论】:

    标签: python ebnf peg grako


    【解决方案1】:

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

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

    【讨论】:

    • 感谢使用语义动作的想法。以及如何实现组合with 重复?
    • 您可以使用{a | b | c}+(您会投票/接受答案吗?)。
    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多