首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ohm.js:“”*“”内不允许可为not的表达式部分

Ohm.js:“”*“”内不允许可为not的表达式部分
EN

Stack Overflow用户
提问于 2017-08-18 01:12:36
回答 1查看 80关注 0票数 0

我在写ohm语法时遇到了困难。

这就是它:

代码语言:javascript
复制
MyGrammar {
  Whole = section*
  section = partA? partB?
  partA = "foo" | "bar"
  partB = "baz"
}

它给我的是一个错误:

代码语言:javascript
复制
Nullable expression section is not allowed inside '*' (possible infinite loop)

这是可以理解的,但问题是,我想要做的是,在一个部分或partB中总是会有一个partA,或者两者都有。

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 01:16:24

代码语言:javascript
复制
MyGrammar {
  Whole = something+
  something = partA | partB
  partA = "foo" | "bar"
  partB = "baz"
}

因此,正如错误消息所暗示的,您不能对可为空的表达式使用kleene-star。‘'nullable’意味着‘将接受空字符串’;原因相当直观--如果您的语法将接受空字符串的无限重复,那么解析它将不会终止。我提供了一个可以工作的示例,但我不确定它是否等同于您想要的语法-如果您在问题中提供了更多细节,那么我将尝试更具体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45741279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档