符号表中固定长度和可变长度数组表示的表示是什么?

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

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

符号表中名称的表示方式有很多种,例如定长数组表示和变长数组表示。

固定长度数组表示

它是在连续数组记录中表示名称的最简单方法之一。

符号表的名称字段是固定大小的。

同样,大小对于可以为特定名称存储的信息量也是固定的。

考虑 IBM 370 表示

  • 标识符长度 = 08 个字符

  • 信息量 = 16 个字符

假设每个块只能有 4 个字符。因此,我们需要 2 个块来存储标识符和 4 个块来保存其信息。

让我们看DONALD这个名字。

可以看出分配给名称的空间被浪费了,因为只占用了一个半块。但是,为名称提供了 2 个块。让我们考虑另一个例子。

这里浪费了一个完整的块。我们用下图总结了这一点。符号表中的阴影框表示内存浪费。

好处

  • 这很容易理解。

  • 它易于实施和访问。

缺点

  • 浪费大量内存。

  • 顺序访问

  • 记录的插入和删除比较慢。

  • 它需要大量的处理和内存需求。

可变长度数组表示

它不会将名称直接存储在符号表中,而是将所有名称保存在一个独立的字符数组中,并且只保留名称的起始索引和长度。这将克服固定长度名称的缺点。现在它可以具有超过 8 个字符的可变长度,因为它在之前的方法中是固定的。同样,我们可以将前面的示例表示为

好处

  • 变量名可以是任意长度。

  • 四通八达的交通网络。

  • 不会浪费符号表中的内存。

  • 符号表现在更有条理。

  • 它可以促进更快的编辑。

缺点

  • 间接维护的问题。

  • 需要额外的数组记录来存储变量名。

以上是 符号表中固定长度和可变长度数组表示的表示是什么? 的全部内容, 来源链接: utcz.com/z/363441.html

回到顶部