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

c - 用于编程语言 C 的非压缩、非最小语法

编程语言是通过语法定义的,例如 Java 在 JLS 中定义,见这里

这是一个最小的“压缩”语法,没有使用两次:结果是 - 对我来说 - 无用的语法描述,如MethodDeclaratorRest,它附加到MethodOrFieldDecl,如您在此处看到的,我称之为“最小,压缩方法”

这通常没问题,但我希望有一个像下面这样的语法,其中列出了MethodDeclaration类型的所有必要信息,我称之为“自上而下的方法”:

搜索“自上而下的语法方法”,我找到了 Pete Jinks 的网站,使用“最小,压缩的方法”:这里

现在,我想使用“自上而下的方法”对编程语言 C 进行语法定义。

0 投票
2 回答
999 浏览

regex - 为文本编辑器定义语法的最佳方法是什么?

我正在为 Mac 编写一个开源文本编辑器,终于达到了我想要添加语法高亮的地步。在过去的几天里,我一直在反复讨论各种解决方案,最后我决定向更广泛的受众开放这个问题。

以下是我看到的选项:

  • 基本上用一系列正则表达式模式匹配来定义语言(类似于 TextMate 定义其语言的方式)
  • 使用BNF 或 PEG 等形式语法定义语言

使用正则表达式模式匹配似乎不太理想,因为它不能像正式语法一样正式地表示一种语言;然而,一些不太正式的语言将很难适应 BNF(即 Markdown——尽管我知道有一个很棒的PEG 实现)。

实时语法突出显示的性能权衡是什么?多种语言的灵活性如何?

如果我走 BNF 路线,Todd Ditchendorf 创建了很棒的ParseKit框架,它可以很好地开箱即用。有人知道PEG有什么类似的吗?

0 投票
4 回答
593 浏览

yacc - BNF:输入错误的非终结符

我正在为国际象棋代数符号开发 BNF,并遇到了一个有趣的案例,输入到错误的非终端。

我的开始 BNF 规则如下(请注意,这故意不包括 castling 或 notes):

piece, start_position, capture, 和promotion可以为空,因此允许像 'd4' 这样的移动。问题是,当输入这样的移动时,输入 ('d4') 被 采用start_position,从而导致错误 b/c 没有更多的输入end_position,不能为空。

显而易见的破解/解决方法是允许end_position为空,然后检查我们是否有任何输入并采取相应的行动。

这确实有效,但我想知道是否有办法解决这个问题。如果导致整个表达式不匹配,输入是否可能不转到第一个匹配符号?

另一个问题是这是否是 BNF 的标准行为,还是我正在使用的 yaccer 的问题:PLY v 3.3。

尝试使用 flex/bison 并得到了同样的结果。所以它似乎并不特定于 PLY。

以下是完整性的所有相关规则:

0 投票
1 回答
682 浏览

grammar - 考虑以下 BNF 语法

考虑以下 BNF 语法(其中非终结符用尖括号括起来并<identifier>匹配任何合法的 Java 变量标识符)。

为以下表达式生成推导三:

盯着exp:

用术语替换 exp:

将术语替换为:

用因子替换术语:

用 (exp) 替换这两个因子:

用 exp - term 替换第一个 exp,用 exp + term 替换第二个

用术语替换两个 exp,然后用因子替换所有 4 个术语。

用标识符替换所有因素

这够了吗?

0 投票
1 回答
1129 浏览

parsing - Unix 命令行选项的语法

这是一个家庭作业问题。我想为 Unix 命令行选项编写一个简单的解析器。
首先,我想用 BNF 定义一个语法。

(这里的“任何字符”是任何字母数字字符)。

是否有意义 ?下一个问题是如何添加“旧”Unix 选项,这些选项以单个连字符开头并且可以组合在一起(例如ls -lht

0 投票
2 回答
302 浏览

xml - sphinx4 使用什么方法来构建它的语法?

使用什么方法sphinx4来构建它的语法?XML或增强BNF

0 投票
1 回答
668 浏览

parsing - 你能修改这个 BNF 语法以始终包含奇数个狗吗?

你能修改这个 BNF 语法以始终包含奇数个狗吗?

“宠物”的例子:

不是“宠物”的例子:

0 投票
1 回答
3045 浏览

bnf - 空字符串作为 BNF 递归中的基本情况?

我正在写一个小语法作为课堂练习,我的教授并没有真正了解什么是合法的 BNF 表达式。

BNF语法应该可以识别这种形式的字符串:AB,AABB,AAABBB,A...B...(一般形式:AnBn)

所以,我开始写:

我的简单是/否问题是这在 BNF 中是否合法,如果不合法,为什么?

<...> 代表一个非终端,我不知道这是约定还是不是

0 投票
2 回答
2512 浏览

parsing - 判断 BNF 语法是否模棱两可的最简单方法是什么?

也就是说,是否有一种工具可以自动显示给定语法的完整语言,包括突出显示歧义(如果有的话)?

0 投票
4 回答
5240 浏览

antlr - 是否有工具可以在 ANTLR 和其他形式的 BNF 之间进行转换?

是否有任何工具可以将 ANTLR 语法语法与其他 BNF 语法转换?有几种带有规范的 Backus-Naur 形式(BNF、EBNF、ABNF、W3C-BNF、XBNF...),例如,请参阅此列表。ANTLR 语法似乎只通过示例来描述。我知道 ANTLR 语法文件包含的不仅仅是上下文无关语法的规范,但您至少应该能够转换公共子集 - 有人自动完成了吗?