我在写ohm语法时遇到了困难。
这就是它:
MyGrammar {
Whole = section*
section = partA? partB?
partA = "foo" | "bar"
partB = "baz"
}它给我的是一个错误:
Nullable expression section is not allowed inside '*' (possible infinite loop)这是可以理解的,但问题是,我想要做的是,在一个部分或partB中总是会有一个partA,或者两者都有。
发布于 2017-10-24 01:16:24
MyGrammar {
Whole = something+
something = partA | partB
partA = "foo" | "bar"
partB = "baz"
}因此,正如错误消息所暗示的,您不能对可为空的表达式使用kleene-star。‘'nullable’意味着‘将接受空字符串’;原因相当直观--如果您的语法将接受空字符串的无限重复,那么解析它将不会终止。我提供了一个可以工作的示例,但我不确定它是否等同于您想要的语法-如果您在问题中提供了更多细节,那么我将尝试更具体。
https://stackoverflow.com/questions/45741279
复制相似问题