问题标签 [context-free-grammar]
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.
language-agnostic - 上下文无关语法定义中的可选与强制终止符
在有关编译器的书籍章节中,有以下语法定义和示例代码。
如果没有 ,代码的最内层while
循环如何有效{
}
?在我看来,语句定义需要它们。这是书中的错误还是我误解了语法?
[编辑]对于任何歧义,我深表歉意。上面输入的所有内容都是书中逐字记录的。遗漏不是我做的。
compiler-construction - 自学编译器课程/好的入门编译器书籍?
有谁知道包含典型编译器课程的在线课程/大学讲座?我有计算理论,但不幸的是我的学校没有提供编译器构造课程。
我知道那里有讲座;我希望能推荐一些特别好的产品。
另外,是否有适合该领域新手的书籍?至少除了龙书之外的东西。初学者水平还可以,我知道市面上有很多中高级教材。
谢谢!
computer-science - 一元加法的上下文无关语法
给定一个 1 的字母表,我想解析表格的添加
这很容易用下推自动机表示,只需在前两个 1 中的每一个上将 1 压入堆栈,然后在最后一组 1 上弹出。但是,我似乎无法弄清楚如何将其表示为上下文无关语法,这显然是可能的,因为 PDA == CFG。
parsing - 消除 E := EE+|EE-|id 的左递归
如何消除以下语法的左递归?
使用通用程序:
翻译为:
将其应用于原始语法,我们得到:
所以:
但是这个语法似乎不正确,因为
将是有效的,但这是一个不正确的后缀表达式。
compiler-construction - Yacc 程序不识别函数声明
我认为我的程序应该能够将以下内容识别为函数声明:
但事实并非如此。
这是我的 yacc 文件的相关部分:
为什么它不认识它?
grammar - 有人认识这个陌生的符号吗?
我在编程语言课上的一个测试中有一个问题让我感到困惑。
给出上下文无关文法生成如下语言
L = { a i b j c k | 0 <= i <= j <= i + k }
我对这个符号完全不熟悉。我似乎无法在书中或我的笔记中找到任何内容,而且我不知道如何向谷歌查询答案。
如果你认识它,它叫什么,它是什么意思?
parsing - 符号表如何有助于将一种语言翻译成另一种语言
在编译器类中,我们为一种简化版本的 C 语言制作了一个解析器。解析器所做的只是根据输入创建一个符号表,如果语法不正确,则退出并显示错误消息。现在我们需要获取一个用这种语言编写的输入文件,并将其转换为 mips 代码(实际上是 linux 的 mips 的 spim 代码。)为什么需要符号表?没有符号表可以吗?
regex - 这种上下文无关文法是正则表达式吗?
我有一个语法定义如下:
是A
正则表达式吗?我对如何解释 BNF 语法感到困惑。
grammar - 什么是自动计算 FIRST 和 FOLLOW 集的好工具?
我目前正在使用 BNF 语法,我希望能够将其转换为 LL(1) 形式。但是,我今天第三次手动完成了更改并为语法计算了新的 FIRST 和 FOLLOW 集,我已经厌倦了。一定有更好的方法!
有人可以建议一个工具,给定一个语法,自动计算所有非终端的第一个和后续集吗?
grammar - 两个语法中非终结符的第一个和跟随
给定以下语法
非终端的第一个和后续是什么?
如果语法改成
什么将是第一个和后续?