问题标签 [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 回答
1306 浏览

python - 我的 EBNF 逻辑在这里错了吗?

我在 Python 程序中使用SimpleParse来解析一些相当简单的语言。它应该能够解析以下示例文本(每行单独):

我已经为上述内容编写了以下 EBNF,但解析器一直在我身上崩溃,即使在“d6”的简单情况下也是如此:

我开始怀疑我是否在某个地方弄错了我的 EBNF 中的逻辑。

编辑:对于好奇,这是最终的 EBNF 的样子:

0 投票
1 回答
2093 浏览

ebnf - 用于 while 循环的 Forth 语言 EBNF 规则

可能重复:
用于无限循环或 if 语句的 Forth 语言 EBNF 规则

是否有任何描述 Forth while 循环(或任何其他循环)的EBNF规则?

0 投票
2 回答
1645 浏览

ebnf - Forth 语言 EBNF 规则,用于无限循环或 if 语句

是否有描述 Forth 无限循环或 if 语句的EBNF规则?

0 投票
1 回答
476 浏览

docbook - 如何从 EBNF 源文件开始在 Docbook 中获取铁路图(语法图)?

Docbook 5 显然支持 EBNF。但它不输出铁路图。是否可以使其输出铁路图(AKA语法图)?

0 投票
2 回答
603 浏览

xml - 可以自动将 ABNF 转换为 XML 吗?

是否可以自动将 ABNF 转换为 XML?特别是,我需要将用 ABNF 编写的语音识别语法转换为 XML。谢谢。

0 投票
1 回答
218 浏览

regex - 解释 RFC 2141 中 NID 的 BNF 语法

我无法理解RFC2141中的一些BNF语法。

线是<NID> ::= <let-num> [ 1,31<let-num-hyp> ]。我认为这意味着它<NID>是一个字符串的符号,受两个规则的约束:

  1. 字符串必须以任何<let-num>字符的单次出现开始。
  2. 此字符后面可能出现 0-31 次出现*的任何<let-num-hyp>字符。

我读对了吗?因为,如果我是,其中的一些含义有点令人困惑。

*相当于“可选,1-31 次出现

RFC2141<NID>中(命名空间标识符)的完整 BNF 语法是:

0 投票
2 回答
3194 浏览

bnf - 用于 LOGO 编程语言的 EBNF 或 BNF

有谁知道我在哪里可以获得LOGO编程语言的 BNF 或 EBNF?

0 投票
1 回答
232 浏览

regex - 零个或多个/一个或多个修饰符和回溯

我在我的PEG解析器中添加了零个或多个和一个或多个修饰符,这很简单,因为 PEG 中的回溯很少。早期的迭代永远不会重新考虑,所以一个简单的while循环就足够了。

然而,在其他情况下,零个或多个和一个或多个修饰符确实需要回溯。例如,采用以下正则表达式:

这个表达式应该能够贪婪地匹配一个由 7 组成的字符串a:有几种方法可以将 2 和 3 相加得到 7。但要做到这一点,重新考虑早期的迭代是必要的。例如,如果表达式a第一次匹配 3 a,第二次匹配 3,则只剩下一个a,无法匹配。但是,回溯最后三个a并匹配两个a,然后匹配五个a。然后最后两个a也可以匹配(即3 + 2 + 2 = 7)。

幸运的是,正则表达式在匹配字符串后退出搜索。但是EBNF解析器呢?如果语法不明确,解析器将使用回溯查找所有可能的语法树!如果我们有生产

和一个由 7 组成的字符串a,一个完全回溯的解析器将返回用 2 和 3 来表达 7 的所有可能方式。这只是针对 7a的:匹配一个稍长的字符串,并且N叉树的可能性会增长另一个层次。考虑N  = 6:

恐怖的组合爆炸!

然而,真的会是这样吗?EBNF中对零个或多个修饰符和一个或多个修饰符没有限制吗?按照描述实现它们比while()PEG 解析器的普通循环要多得多,所以我不得不怀疑......

0 投票
3 回答
5430 浏览

c#-4.0 - 用于 F# 的 BNF 或 EBNF 解析器生成器中的 C# 语法

我正在寻找可以提供给 fsyacc 的 C# v4 的 BNF 语法,或者如果我找不到可以输出 F# 的基于 EBNF 的解析器生成器。

编辑: 我不想为 C# 编写解析器,而是为非常相似的语法编写实验性解析器,并且由于两种语法之间存在巨大的文字重叠,我发现从 C# 语法开始更容易,只需更改偏离的位. 然而,我发现的唯一 C#v4 语法是 EBNF

另一个答案是从 EBNF 到 BNF 的转换器

0 投票
1 回答
5163 浏览

bnf - 将 BNF 转换为 EBNF - 没有递归的括号?

我需要将以下语法转换为 EBNF:

我目前取得的进展如下:

如果使用 EBNF,最好消除所有递归吗?有没有办法只使用<id>in来完成它<expr>