问题标签 [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.

0 投票
2 回答
574 浏览

language-agnostic - 上下文无关语法定义中的可选与强制终止符

在有关编译器的书籍章节中,有以下语法定义和示例代码。

 

如果没有 ,代码的最内层while循环如何有效{ }?在我看来,语句定义需要它们。这是书中的错误还是我误解了语法?


[编辑]对于任何歧义,我深表歉意。上面输入的所有内容都是书中逐字记录的。遗漏不是我做的。

0 投票
3 回答
5909 浏览

compiler-construction - 自学编译器课程/好的入门编译器书籍?

有谁知道包含典型编译器课程的在线课程/大学讲座?我有计算理论,但不幸的是我的学校没有提供编译器构造课程。

我知道那里有讲座;我希望能推荐一些特别好的产品。

另外,是否有适合该领域新手的书籍?至少除了龙书之外的东西。初学者水平还可以,我知道市面上有很多中高级教材。

谢谢!

0 投票
8 回答
3848 浏览

computer-science - 一元加法的上下文无关语法

给定一个 1 的字母表,我想解析表格的添加

这很容易用下推自动机表示,只需在前两个 1 中的每一个上将 1 压入堆栈,然后在最后一组 1 上弹出。但是,我似乎无法弄清楚如何将其表示为上下文无关语法,这显然是可能的,因为 PDA == CFG。

0 投票
1 回答
3251 浏览

parsing - 消除 E := EE+|EE-|id 的左递归

如何消除以下语法的左递归?

使用通用程序:

翻译为:

将其应用于原始语法,我们得到:

所以:

但是这个语法似乎不正确,因为

将是有效的,但这是一个不正确的后缀表达式。

0 投票
3 回答
1787 浏览

compiler-construction - Yacc 程序不识别函数声明

我认为我的程序应该能够将以下内容识别为函数声明:

但事实并非如此。

这是我的 yacc 文件的相关部分:

为什么它不认识它?

0 投票
2 回答
182 浏览

grammar - 有人认识这个陌生的符号吗?

我在编程语言课上的一个测试中有一个问题让我感到困惑。

给出上下文无关文法生成如下语言

L = { a i b j c k | 0 <= i <= j <= i + k }

我对这个符号完全不熟悉。我似乎无法在书中或我的笔记中找到任何内容,而且我不知道如何向谷歌查询答案。

如果你认识它,它叫什么,它是什么意思?

0 投票
1 回答
313 浏览

parsing - 符号表如何有助于将一种语言翻译成另一种语言

在编译器类中,我们为一种简化版本的 C 语言制作了一个解析器。解析器所做的只是根据输入创建一个符号表,如果语法不正确,则退出并显示错误消息。现在我们需要获取一个用这种语言编写的输入文件,并将其转换为 mips 代码(实际上是 linux 的 mips 的 spim 代码。)为什么需要符号表?没有符号表可以吗?

0 投票
3 回答
2019 浏览

regex - 这种上下文无关文法是正则表达式吗?

我有一个语法定义如下:

A正则表达式吗?我对如何解释 BNF 语法感到困惑。

0 投票
3 回答
3073 浏览

grammar - 什么是自动计算 FIRST 和 FOLLOW 集的好工具?

我目前正在使用 BNF 语法,我希望能够将其转换为 LL(1) 形式。但是,我今天第三次手动完成了更改并为语法计算了新的 FIRST 和 FOLLOW 集,我已经厌倦了。一定有更好的方法!

有人可以建议一个工具,给定一个语法,自动计算所有非终端的第一个和后续集吗?

0 投票
1 回答
7203 浏览

grammar - 两个语法中非终结符的第一个和跟随

给定以下语法

非终端的第一个和后续是什么?

如果语法改成

什么将是第一个和后续?