📜  门|门CS 2012 |第 34 题

📅  最后修改于: 2021-09-27 06:06:30             🧑  作者: Mango

考虑下面给出的程序,在块结构的伪语言中,允许词法范围和过程嵌套。

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
正确的激活记录集及其访问链接如下:

gatecs2012 激活记录

gatecs2012 激活记录
(一) A
(乙)
(C)
(四)答案: (D)
说明:访问链接被定义为程序文本中最接近词法封闭块的活动记录的链接,因此 A1 、A2 和 A21 的最接近封闭块分别是 main 、 main 和 A2 因为,激活记录是在过程入口时创建并销毁的在程序退出时。

解决方案:
链接到程序文本中最接近的词法封闭块的活动记录。这取决于静态程序文本。

nitika_36

这里的调用顺序为,

主->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 提供

这个问题的测验