问题标签 [ebnf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
889 浏览

python - 使用 ebnf 和空格进行 pyparsing

我正在使用http://pyparsing.wikispaces.com/file/view/ebnf.py来转换我的 ebnf 定义。

ebnf def 看起来像这样:

如果我加载文件并尝试解析如下字符串:

我得到:

有人有想法/解决方案吗?

0 投票
1 回答
687 浏览

coding-style - 编写好的 EBNF 语法的技巧

我正在为文档解析编写一些扩展的 Backus–Naur 形式语法。这些定义的语法有很多优秀的指南,但是关于如何设计和构建它们的在线指南却很少。

任何人都可以建议关于您喜欢如何编写这些的好文章(或一般提示),因为即使最终的解析树可以等效,似乎也有一种风格元素

例如:

  • 决定是否应该明确地标记换行符,或者只是将其视为空格?
  • 非终结符的命名方案
  • 处理长定义中的可选空格
  • 何时使用错误的语法检查而不是让那些不匹配

谢谢,

0 投票
2 回答
1229 浏览

parsing - 如何使用 EBNF 语法解析注释

在为语言解析器定义语法时,您如何处理文本中任何位置可能出现的注释(例如 /* .... */)?

当事物结构化时,从标签中的标签构建语法似乎效果很好,但评论似乎会抛出一切。

您只需要分两步解析文本吗?首先删除这些项目,然后再分解代码的实际结构?

谢谢

0 投票
2 回答
750 浏览

cobol - 这个 cobol 语法不处理 --9 图片

我在我的 javacc 中使用这个站点上的语法。除了一些图片陈述外,它还可以正常工作。例如----、---、---.99 或--9。

http://mapage.noos.fr/~bpinon/cobol.jj

它似乎不喜欢超过一个破折号。

我需要改变什么来支持我的图片示例。

我搞砸了

但似乎没有任何效果。任何帮助深表感谢

编辑:

这是整行的正则表达式:

如果我想接受05 TEST3 REDEFINES TEST2 PIC X(10).,我会将正则表达式更改为:

非常感谢到目前为止的帮助

0 投票
2 回答
1313 浏览

grammar - PL/0 中的“奇数”表达式

给定以下 EBNF 语法(在 PL/0 的 wikipedia 上找到),“ODD”关键字前面的表达式是什么?我想将简单的语言实现为一个小项目,但我似乎无法弄清楚这意味着什么。有没有人在此之前或能够解释什么是奇怪的表达式,以便我可以正确地为该语言编写编译器?

0 投票
2 回答
435 浏览

scala - Antlr 左递归

我正在尝试将 EBNF 形式的 scala 中的后缀、中缀和前缀规则转换为 ANTLR,但在中缀表达式规则上看到与左递归有关的错误。

有问题的规则是:

如果我将 infixExpression 规则更改为:

然后它反而抱怨:

最后,有没有办法有条件地在 AST 中创建节点,这样如果只有规则的左侧部分为真,那么它就不会添加该级别?例如:

例如,假设我创建了遵循如下层次结构的语法:

如果解析的表达式是a || b,则当前为该表达式创建的 AST 将是

我怎么能得到它,所以它只是得到conditional_or_expression部分?

在 JavaCC 中,您可以只设置节点数量,例如:#ConditionalOrExpression(>1)

编辑:昨晚有点晚了,现在修改了中缀表达式!

最终编辑:我最终让它工作的方式是以下规则:

0 投票
1 回答
5436 浏览

grammar - 将 BNF 转换为 EBNF

我需要知道如何将下一个 BNF 转换为 EBNF,这样可以帮助我更多地了解它们是如何工作的

注意:epsilon 表示空集

0 投票
2 回答
2058 浏览

javascript - EBNF 语法解析器模块

你知道一个语法解析器模块(用 Ruby、Python、Javascript...编写),给定一个标记列表和一个类似EBNF的语法(作为一个简单的字符串传递),返回解析的树?我发现最接近这个的是SimpleParse,这是一个不错的库,但不幸的是它使用单步解析(无标记化)。如果可能的话,我宁愿不使用实现与语言本身纠缠在一起的库(pyparsingtreetop,...)。

我不担心词法分析/标记化,因为有很多可用的库(甚至编写自己的库也很容易),但实现 ENBF 解析器并不是一件容易的事。我检查了 Python wiki LanguageParsing并测试了其中一些无济于事(也许我忽略了我正在寻找的那个,有这么多......)

0 投票
4 回答
10020 浏览

php - PHP的EBNF语法定义?

我想知道是否有人在某处为 PHP 编译了 EBNF。我找到了这个站点这个站点。不过,两者似乎都不完整。这个问题非常相似,但已经有一年了。我想知道是否有任何进展。

0 投票
2 回答
1437 浏览

parsing - 为 LALR 解析器将 EBNF 转换为 BNF

我知道有几个帖子的标题相似。大多数链接到死网站 - 无论如何我有一个更具体的问题。

我正在尝试将XPath 规范中的 EBNF转换为直接的 BNF,以便我可以轻松地创建与 Bison 兼容的语法文件。

我已经有一段时间没有这样做了,我不记得递归属于生产的哪一边。我认为它是左边的 - 但我的“直截了​​当”的翻译在通过 Bison 生成的解析器运行时给我带来了纯简 XPath 表达式的语法错误。

因此,如果有人可以取笑我并参与进来-所以我不是在追鬼:

在以下Expr规则中:

这是正确的翻译吗?(把递归放在左边):