符号表中数组名称的表示是什么?
它是一种数据结构,包含每个标识符的数据,以及标识符属性的字段。这种数据结构使我们能够快速找到每个标识符的数据,并快速保存或检索该记录的信息。
每次在源代码文本中遇到名称时,都会搜索符号表。当找到新的名称或有关现有名称的新数据时,符号表的内容会发生修改。因此,符号表应该具有有效的结构,以便创建表中保存的数据,以及将新条目插入到符号表中。
此表示法用于在符号表中表示数组名称及其维度和其他属性。
数组名称可以在符号表中以两种不同的方式表示。
- 固定数量的维度
- 可变数量(无限制)的维度。
固定数量的维度
以 FORTRAN 为例,其中数组的维度数量限制为 3,图中显示了符号表中数组的表示。
- 包含 A 的字表示数组的维度。A 长 2 位。
位 1 | 位 2 | 数组描述 |
---|---|---|
0 | 0 | 不是数组 |
0 | 1 | 一维 |
1 | 0 | 二维 |
1 | 1 | 三维 |
- UL1、UL2、UL3 表示数组每个维度的上限。数组的上限可以是形式参数。
对于这种可能性,我们为 B 提供了 3 位来定义三个可能的限制中的任何一个是否是形式参数。
0 | 1 | 0 |
这里第 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 数组的多个维度。
- 它包含一个指向数组的指针,该数组包含第一维度的上下限,并且此数组连接到另一个数组,该数组包含第二维度的上下限,依此类推。
优点
- 方便随机访问符号表。
- 提高了可访问性。
- 易于维护信息。
缺点
- 指针间接和悬空引用问题。
- 每个维度都需要单独的数组。
广告