什么是代表性作用域信息的类型?
表示作用域信息是一个概念,其中每个变量名的作用域都保存在符号表中,以便我们可以在不同的块和不同的位置使用相同的名称。在符号表中表示名称以及它出现的块的指示符。
假设我们在块 A 中有一个变量名“a”,在块 B 中也有相同的变量。假设它可以在不包含块信息的情况下将“a”存储在符号表中。在这种情况下,它只会保留遇到的第一个“a”实例,因此为了克服这个问题,名称以 (变量名,块名) 对的形式存储,以便可以在不同的块和过程中使用相同的名称。
表示作用域信息有两种方法,如下所示:
通过编号表示作用域
它将所有值存储在一个符号表中。
可以在不同的块或过程中多次声明相同的名称作为不同的名称。
因此,每个过程或块都可以赋予一个唯一的编号。
符号表将不只包含标识符的名称,每个条目都将包含一个 (名称,过程编号) 对。
我们可以通过匹配标识符的名称以及它所属的过程编号来识别过程中的特定标识符。
每个块或过程都将被分配一个编号。
示例
以下显示了符号表的配置,即用其对应过程或块号填充标识符。
在这里,标识符或名称将属于声明该标识符或过程的最紧密嵌套的活动子程序。
通过块或位置表示作用域
- 它为每个作用域块或过程创建一个单独的表。
- 可以轻松插入多个具有相同名称的标识符,因为相同的名称变量将在单独的块中共享。
- 我们不能在同一个块或过程中有两个名称相同的变量。
- 每个过程或子程序都将具有其内容的不同表表示。当搜索标识符时,将匹配正确的表,即子程序或过程编号和标识符名称。
- 这种方法更可靠,也更容易理解。
广告