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


它是一种数据结构,包含每个标识符的数据,以及标识符属性的字段。这种数据结构使我们能够快速找到每个标识符的数据,并快速保存或检索该记录的信息。

每次在源代码文本中遇到名称时,都会搜索符号表。当找到新的名称或有关现有名称的新数据时,符号表的内容会发生修改。因此,符号表应该具有有效的结构,以便创建表中保存的数据,以及将新条目插入到符号表中。

此表示法用于在符号表中表示数组名称及其维度和其他属性。

数组名称可以在符号表中以两种不同的方式表示。

  • 固定数量的维度
  • 可变数量(无限制)的维度。

固定数量的维度

以 FORTRAN 为例,其中数组的维度数量限制为 3,图中显示了符号表中数组的表示。

  • 包含 A 的字表示数组的维度。A 长 2 位。
位 1位 2数组描述
00不是数组
01一维
10二维
11三维
  • UL1、UL2、UL3 表示数组每个维度的上限。数组的上限可以是形式参数。

对于这种可能性,我们为 B 提供了 3 位来定义三个可能的限制中的任何一个是否是形式参数。

010

这里第 i 位为 1 表示 ULi 是形式参数。

在上述情况下,第 2 位为 1,因此 UL2 作为形式参数传递,并且符号表中的 UL2 现在将包含指向包含 UL2 值的符号表记录的指针。

示例 1 - 考虑 FORTRAN 中的以下子程序。

SUBROUTINE S (ARRAY, A, B)

INTEGER A, B

REAL ARRAY (5, A, B)

构造此子程序中数组的符号表记录。

解决方案

∴ UL1 = 5

UL2 = 指向名称 A 的记录的指针。

UL3 = 指向名称 B 的记录的指针。

数组维度无限制的链接数组表示

  • 符号表将存储 n 数组的多个维度。
  • 它包含一个指向数组的指针,该数组包含第一维度的上下限,并且此数组连接到另一个数组,该数组包含第二维度的上下限,依此类推。

优点

  • 方便随机访问符号表。
  • 提高了可访问性。
  • 易于维护信息。


缺点

  • 指针间接和悬空引用问题。
  • 每个维度都需要单独的数组。


更新时间: 2021 年 11 月 8 日

454 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告