Processing math: 100%

找到关于编译器设计的138 篇文章

影响编程语言实现的因素有哪些?

Ginni
更新于 2021年11月8日 10:52:55

425 次浏览

影响编程语言实现的一些因素如下:作用域 - 声明的作用域是指声明生效的程序部分。不同语言的实现机制可能不同。每种语言的作用域规则决定了如何从名称的声明中找到它的使用位置。如果一个过程中的名称使用在其声明的作用域内,则该使用是局部的;否则,该使用是非局部的。根据特定语言中变量的作用域,实现存储管理。变量的生命周期 - 变量的生命周期是…… 阅读更多

运行时存储管理在编译器设计中的作用是什么?

Ginni
更新于 2021年11月8日 10:50:13

3K+ 次浏览

编译器需要向操作系统请求一块内存。编译器利用这块内存来执行已编译的程序。这块内存称为存储管理。编译器必须执行的一项重要任务是分配目标机器的资源来表示源程序正在操作的数据对象。编译器必须确定源程序中数据对象的运行时表示。在源程序中,数据对象的运行时表示(例如整数和实数变量)通常采用等效数据对象的…… 阅读更多

符号表中两种数组表示法是什么?

Ginni
更新于 2021年11月8日 10:49:46

366 次浏览

符号表是一种数据结构,它支持一种有效且高效的方式来存储有关源程序中出现的各种名称的信息。这些名称在源代码中用于标识不同的程序元素,例如变量、常量、过程和语句标签。每次在源文本中遇到名称时都会搜索符号表。当找到新名称或有关现有名称的新数据时,符号表的内容就会修改。因此,符号表必须具有一个有效的机制来访问表中保存的数据,以及…… 阅读更多

为给定的语法构建 LALR(1) 解析表。问题 - 为语法构建 LALR(1) 解析表。S → A a|b A c|dc|bdaA → d使用 LALR 解析表解析输入字符串“bdc”。

Ginni
更新于 2021年11月8日 10:46:40

9K+ 次浏览

解决方案将产生式编号如下:步骤 1 - 构造增广语法(0) S′ → S(1) S → A a(2) S → b A c(3) S → d c(4) S → b d a(5) A → d步骤 2 - 查找闭包和 goto。查找语法的规范 LR(1) 项目集。在状态 I0 到 I10 中,没有状态具有相同的第一个元素或核心。因此,我们无法合并状态。一些状态将用于构建 LALR 解析表。LALR 解析表字符串“bdc”的解析堆栈输入字符串操作0bdc移位 30b3dc移位 7$ 0 b 3 d 7 c … 阅读更多

使用 SLR 解析验证给定语法是否接受字符串 id * id + id。考虑语法的 SLR 解析表E → E + TE → TT → T ∗ FT → FF → (E)F → id使用在示例中构建的 SLR 解析表检查字符串 id * id + id 是否被接受。

Ginni
更新于 2021年11月8日 10:36:36

2K+ 次浏览

解决方案初始状态为 LR 解析器状态 0。在字符串末尾添加 idid+id。堆栈输入字符串原因0 id * id + id操作 [0, id] = s5 ∴ 移位 id 和状态 50 id 5 * id + id [5,]=r6Fidgoto(0,F)=30F3id+id操作 [3, *] = r4,通过 T → F 归约 goto(0, T) = 20 T 2 * id + id [2,]=s770T27id+id操作 [7, id] = s5,移位 id,5… 阅读更多

编译器设计中 DFA 和 NFA 的区别是什么?

Ginni
更新于 2021年11月8日 10:23:06

2K+ 次浏览

确定性有限自动机 (DFA)确定性意味着对于每个输入,只有一个状态自动机可以从其当前状态转换到该状态。在确定性有限自动机中,磁头只能在一个方向上移动以扫描输入带符号。但在双向有限自动机的情况下,在扫描输入符号时,磁头可以从其当前位置向右或向左移动。表示确定性有限自动机有两种方法:状态转换图它是一个有向图或流程图,具有状态和边。通过……阅读更多

什么是激活记录?

Ginni
更新于 2021年11月8日 10:16:59

12K+ 次浏览

激活记录是一种数据结构,在调用过程/函数时会激活/创建该结构,其中包括有关该函数的以下数据。'C'语言中的激活记录包括实际参数参数数量返回地址返回值旧堆栈指针 (SP)函数或过程中的局部数据这里,旧 SP 存储调用此过程的程序的激活记录的堆栈指针的值,这会导致生成此激活记录,即它是指向调用者的激活记录的指针。在堆栈分配方案中,当过程 A 调用过程 B 时,B 的激活记录将…… 阅读更多

编译器设计中的存储分配技术有哪些?

Ginni
更新于 2023年10月31日 13:50:45

52K+ 次浏览

各种存储分配技术如下:静态分配这是最简单的分配方案,其中数据对象的分配在编译时完成,因为编译器可以确定每个数据项的大小。不允许使用递归子程序和可调整长度的数组。在静态分配中,编译器可以确定每个数据对象所需的存储量。因此,编译器可以很容易地识别这些数据在激活记录中的地址。FORTRAN 使用这种存储分配策略。优点易于实现。允许类型检查…… 阅读更多

编译器设计中的列表和自组织列表是什么?

Ginni
更新于 2021年11月8日 10:11:44

1K+ 次浏览

列表从概念上讲,这是为符号表实现最简单且易于实现的数据结构,如下所示:它可以使用单个数组来存储名称及其相关信息。新名称按遇到的顺序插入到列表中。它可以从数组的开头到指针 AVAILABLE(指示数组空闲部分的开头)标记的位置检索有关名称的数据。放置名称时,可以在…… 阅读更多

如何使用访问链接和显示来访问非局部名称?

Ginni
更新于 2021年11月8日 10:02:51

6K+ 次浏览

访问链接是指向每个激活记录的指针,它获得了嵌套过程词法作用域的直接实现。换句话说,访问链接用于实现词法作用域语言。“访问线”可能需要放置被调用过程所需的数据。处理在不同词法级别定义的静态链接的改进方案是使用称为显示的数据结构。显示是一个指向激活记录的指针数组。Display[0] 包含指向在词法级别…… 阅读更多

广告