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

什么是搜索树和哈希表在编译器设计中的作用?

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

2K+ 浏览量

搜索树组织符号表的一种更有效的方法是在每个记录中添加两个链接字段 LEFT 和 RIGHT。我们使用这些字段将记录链接到二叉搜索树中。这棵树具有这样的性质:通过遵循链接 LEFT (i),然后遵循任何链接序列,从 NAME (i) 可访问的所有名称 NAME (j) 将在字母顺序中先于 NAME (i)(符号表示为 NAME (j) < NAME (i))。类似地,从 RIGHT (i) 开始访问的所有名称 NAME (k) 将具有 NAME (i) < NAME (k) 的性质。因此,如果我们正在搜索 NAME 并... 阅读更多

什么是代表作用域信息的类型?

Ginni
更新于 2021年11月8日 09:57:25

1K+ 浏览量

表示作用域信息是一个概念,其中每个变量名的作用域都保存在符号表中,以便我们可以在不同的块和不同的位置使用相同的名称。在符号表中表示名称以及它出现的块的指示符。假设我们在块 A 中有一个变量名 'a',在块 B 中有相同的变量。假设它可以在没有块信息的情况下将 'a' 存储在符号表中。在这种情况下,它只会保留遇到的第一个 'a' 实例,因此为了克服这个问题,名称将... 阅读更多

什么是表示作用域信息?

Ginni
更新于 2021年11月8日 09:54:11

2K+ 浏览量

表示作用域信息是一个概念,其中每个变量名的作用域都保存在符号表中,以便我们可以在不同的块和不同的位置使用相同的名称。表示作用域信息涉及特定块中变量的生命周期。在符号表中表示名称以及它出现的块的指示符。假设我们在块 A 中有一个变量名 'a',在块 B 中有相同的变量。假设我们将 'a' 存储在符号表中而没有块信息。在这种情况下,它只会保留遇到的第一个 'a' 实例,因此... 阅读更多

不同数据结构在编译器设计中的作用是什么?

Ginni
更新于 2021年11月8日 09:51:18

3K+ 浏览量

在编译过程中,每次遇到标识符时都会搜索符号表。如果找到新的名称或有关现有名称的新信息,则添加数据。因此,在设计符号表结构时,希望有一种方案能够有效地将新条目插入表中并识别当前条目。数据结构中使用了四个符号表,如下所示:列表 - 对于符号,最简单且易于实现的数据结构是线性记录列表,如图所示。它可以使用单个数组或多个... 阅读更多

什么是符号表中的数组名称表示?

Ginni
更新于 2021年11月8日 09:48:48

454 浏览量

它是一种数据结构,包括每个标识符的数据、标识符属性的字段。该数据结构使我们能够快速找到每个标识符的数据,并快速保存或检索该记录的信息。每次在源文本中遇到名称时都会搜索符号表。当找到新的名称或有关现有名称的新数据时,符号表的内容会修改。因此,符号表应该具有有效的结构来创建表中保存的数据,以及将新条目插入到符号... 阅读更多

什么是编译器设计中布尔表达式和控制语句的后向填充?

Ginni
更新于 2021年11月8日 09:43:57

3K+ 浏览量

执行语法制导翻译的最简单方法是使用两遍。首先,为输入构造语法树,然后以深度优先顺序遍历树,完成定义中给出的翻译。在单遍中生成布尔表达式和控制流语句代码的主要问题是,在单遍中,我们无法理解在生成跳转语句时控制应该跳转到的标签。它可以通过制作一系列分支语句来解决这个问题,这些语句的跳转目标暂时未定义。每个这样的语句... 阅读更多

什么是符号表中定长和变长数组表示?

Ginni
更新于 2021年11月8日 04:37:11

1K+ 浏览量

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

什么是后向填充?

Ginni
更新于 2021年11月5日 12:07:24

14K+ 浏览量

在为给定表达式生成三地址码时,它可以指定 goto 语句中 Label 的地址。在一次遍历中分配这些标签语句的位置非常困难,因此使用两次遍历。在第一次遍历中,它可以将这些地址保留为未指定,在下一遍中,它可以填充这些地址。因此,不完整转换的填充称为后向填充。使用后向填充的一遍代码生成后向填充可用于为布尔表达式和控制流语句生成程序。在此,非终结符的综合属性 truelist 和 falselist... 阅读更多

什么是编译器设计中控制语句的翻译?

Ginni
更新于 2021年11月5日 12:04:39

13K+ 浏览量

控制语句是改变语句执行流程的语句。考虑语法S → if E then S1        |if E then S1 else S2         |while E do S1在此语法中,E 是布尔表达式,根据它将执行 S1 或 S2。以下表示显示了 if-then、ifthen-else 和 while do 指令的执行顺序。𝐒 → 𝐢𝐟 𝐄 𝐭𝐡𝐞𝐧 𝐒𝟏E.CODE 和 S.CODE 是生成三地址代码的一系列语句。E.TRUE 是如果 E 为真则控制流到的标签。E.FALSE 是如果... 阅读更多

什么是控制语句?

Ginni
更新于 2021年11月5日 11:57:20

18K+ 浏览量

控制语句是改变语句执行流程的语句。例如,If、If-else、Switch-Case、while-do 语句。在编程语言中,布尔表达式用于更改控制流 - 布尔表达式用作语句中的条件表达式,这些表达式更改控制流。此类布尔表达式的值隐含在程序中达到的位置。例如,如果 (E) S,则如果到达语句 S,则表达式 E 应该为真。计算逻辑值 - 布尔表达式可以定义真或假值。此类布尔表达式可以与算术并行计算... 阅读更多

广告