问题标签 [bnf]

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 投票
2 回答
137 浏览

json - 此语法图中使用的约定的名称是什么

我在 JSON 规范中找到了这张图:

替代文字
(来源:json.org

这个图表惯例从何而来?这只是 DC 编造的一些随机约定吗?

0 投票
5 回答
602 浏览

scala - 语法、Scala 解析组合器和无序集

我正在编写一个将接受各种“命令”字符串的应用程序。我一直在查看 Scala 组合器库来标记命令。我发现在很多情况下我想说:“这些标记是无序的集合,因此它们可以按任何顺序出现,有些可能不会出现”。

以我目前的语法知识,我将不得不定义所有序列组合(伪语法):

所以我的问题是,考虑到 tokenA-C 是独一无二的,是否有更短的方法来使用语法定义一组任意顺序?

0 投票
4 回答
14362 浏览

javascript - ECMAScript 的 EBNF?

我正在尝试找到 ECMAScript 的良好 EBNF 描述,但到目前为止我还没有找到任何完整的内容。

有任何想法吗?

0 投票
1 回答
5348 浏览

scala - Scala Parser 令牌分隔符问题

我正在尝试为以下命令定义语法。

第二个命令应标记为:

当我在下面定义的语法上运行此输入时,我收到以下错误消息:

据我所见,它失败了,因为匹配消息单词的模式与属性键:值对的键模式几乎相同,因此解析器无法判断消息在哪里结束以及属性从哪里开始。我可以通过坚持为每个属性使用开始令牌来解决这个问题,如下所示:

但我更愿意让命令尽可能接近自然语言。我有两个问题:

错误消息的实际含义是什么?我将如何修改现有语法以适用于给定的输入字符串?

0 投票
4 回答
2631 浏览

emacs - Emacs 有 BNF 模式吗?

我必须编辑大量 .bnf 格式的语法文件。Emacs 中有这种模式吗?

我查看了 CEDET 的语义包,似乎它曾经有一个 bnf 模式,但现在没有了。这个片段是可谷歌搜索的,但语义-bnf-mode 似乎不存在:

0 投票
1 回答
3471 浏览

actionscript-3 - AS3 语法:最准确

我正在寻找一种准确的 AS3 语法(格式不是问题,但我认为 ANTLR 将是最有特色的)用于我正在制作的练习语法。

AS3 最准确的语法是什么?

0 投票
4 回答
1995 浏览

grammar - 语法句法和语言学

我真的需要以一种可以被机器翻译并且严格基于规则(没有统计数据)的方式描述英语句子结构,它不一定是上下文无关的语法,但这会更好(因为它不能完全描述它)。我找到的最好的是 BNF,但它真的很基本。我需要一些没有例外的东西,除非是模棱两可的。有链接吗?

0 投票
4 回答
2249 浏览

.net - 任何具有测试功能的 BNF IDE

我正在研究一种新语言,在编写语法时,我希望能够测试语法的完整性、冲突和类似情况。我并不真正关心底层解析器生成器(但最好使用 .NET 的一个)

因此,简而言之,功能列表将是:

  • 文本编辑器构建功能
  • 语法/语义错误报告
  • 冲突报告
  • 语法测试功能(即在预期语法中编写代码以验证语法定义正确性的窗口)

一个名为 Irony 的 CodePlex 项目确实有一些与我所要求的类似的东西,但不支持将语法编写为所需的 BNF。

0 投票
2 回答
144 浏览

algorithm - 未转义的用户名是否与 BNF 不兼容?

我有一个需要解析的软件的(专有)输出。可悲的是,有未转义的用户名,我正在抓挠我的头发,试图知道我是否可以描述我需要使用 BNF(或 EBNF 或 ABNF)解析的文件。

这个问题,过于简单化了(它实际上只是一个例子),可能看起来像这样:

(数据) ::= <用户名>
<用户名> ::= (其他类型的数据)

并且在某些情况下,用户名也可以出现在一行的中间,而不是出现在左侧或右侧。

问题是用户名未转义,并且对用户名没有足够的限制(它们是可打印的 ASCII,最多 20 个字符,并且不能包含换行符)。因此,例如,“=”将是一个完全有效的用户名。“= 1 = john = 2”也是如此(因为用户在登录时可以选择他们想要的任何用户名,并且这些在我得到的输出中显示为未转义)。

我问是因为我的解析器阻塞了一些非常有创意的用户名(再一次,不在我的控制范围内,它们很“奇怪”,我需要处理它),我找不到一个简单的方法来处理这个问题。另请注意,我事先不知道用户名(例如,我无权访问包含用户创建的所有用户名的数据库)。

那么不受限制和未转义的用户名是否与 BNF 不兼容?

PS:如果我犯了错误,请对我保持冷静,这是我在 stackoverflow 上的第一篇文章 :)

0 投票
2 回答
11937 浏览

bnf - EBNF 到 BNF 转换

我有一个家庭作业问题,我可以使用一些帮助。我需要将以下 EBNF 语句转换为 BNF

到目前为止,这就是我想出的;

感觉不对,主要是因为它是 WAG。我的书(编程语言的概念,Sebesta)中的示例根本没有帮助我。因此,如果有人有任何见解,将不胜感激。谢谢!