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


符号表是一种数据结构,它支持一种有效且高效的方式来存储源程序中出现的各种名称的信息。这些名称用于源代码中识别不同的程序元素,例如变量、常量、过程和语句的标签。

每次在源文本中遇到名称时都会搜索符号表。当找到新名称或有关现有名称的新数据时,符号表的内容会修改。

因此,符号表必须具有一个有效的机制来访问表中保存的数据,以及向符号表添加新条目。在任何情况下,符号表都是一个有用的抽象,可以帮助编译器确定和验证代码的语义或含义。它将跟踪程序中遇到的符号的名称、类型、位置和属性。

符号表的双数组表示

在符号表中,我们可以存储不同类型的信息和名称。与其他名称关联的信息也各不相同。因此,不建议为符号表中出现的每种类型的名称分配相同的空间。

因此,它可以使用两个数组来存储名称和信息。

双数组表示的特征

  • 我们不会将记录存储在一个数组中,而是将使用两个数组。
  • 一个数组用于存储标识符,另一个数组用于存储其属性。
  • 两个数组通过一个规则连接。

如果我们假设一个标识符占用 1 个内存字,而与标识符或名称相对应的信息占用 4 个记录。如果我们将标识符存储在位置 2i 处,并将标识符对应的信息存储在 4i 处。

由于信息占用 4 个字。因此,信息将从 4i 开始存储,到 4i + 3 结束。

因此,要访问特定名称及其对应信息的值,我们只需输入 i 的值即可。

示例 - 如果我们输入 i = 1

∴ 位置 2i = 2 * 1 = 2 处的名称将被访问。

位置 = 4i = 4 处的 信息将被访问。

∴ 根据 i 的各种值,我们可以找到与其他名称相对应的不同信息。

优点

  • 更快地访问信息。
  • 内存浪费少。

缺点

  • 需要额外的数组
  • 符号表的复杂性增加
  • 它可能会增加内存需求。


更新于: 2021年11月8日

366 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告