📜  门| GATE CS 2012 |第34章

📅  最后修改于: 2021-06-29 10:40:31             🧑  作者: 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) A
(B) B
(C) C
(D) D答案: (D)
说明:访问链接被定义为程序文本中最接近的词法包围块的激活记录的链接,因此A1,A2和A21的最接近的包围块分别是main,main和A2。在程序退出时。

解决方案:
链接到程序文本中最接近的词法包围块的激活记录。它取决于静态程序文本。

nitika_36

这里的调用顺序为

Main-> A1-> A2-> A21-> A1
现在在Main …下定义了A1,A2,因此A1,A2访问链接指向主A21在A2下定义,因此其访问链接将指向A2。

参考:
http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html该解决方案由Nitika Bansal提供

这个问题的测验