考虑下面给出的程序,在块结构的伪语言中,允许词法范围和过程嵌套。
Program main;
Var ...
Procedure A1;
Var ...
Call A2;
End A1
Procedure A2;
Var ...
Procedure A21;
Var ...
Call A1;
End A21
Call A21;
End A21
Call A1;
End main.
考虑调用链: Main->A1->A2->A21->A1
正确的激活记录集及其访问链接如下:
(一) A
(乙)乙
(C)丙
(四)丁答案: (D)
说明:访问链接被定义为程序文本中最接近词法封闭块的活动记录的链接,因此 A1 、A2 和 A21 的最接近封闭块分别是 main 、 main 和 A2 因为,激活记录是在过程入口时创建并销毁的在程序退出时。
解决方案:
链接到程序文本中最接近的词法封闭块的活动记录。这取决于静态程序文本。
这里的调用顺序为,
主->A1->A2->A21->A1
现在 A1,A2 在 Main 下定义…所以 A1,A2 访问链接指向主 A21 在 A2 下定义,因此其访问链接将指向 A2 。
参考:
http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html此解决方案由Nitika Bansal 提供
这个问题的测验