考虑下面给出的程序,在块结构的伪语言中,具有词法范围和允许嵌套的过程。
null
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.
考虑主链:主语>a1->a2-> a21->a1。 正确的激活记录集及其访问链接如下所示:
(A) A. (B) B (C) C (D) D 答复: (D) 说明: 访问链接被定义为指向程序文本中最近的词汇封闭块的激活记录的链接,因此A1、A2和A21的最近封闭块分别为main、main和A2,因为激活记录在程序进入时创建,在程序退出时销毁。
解决方案: 链接到程序文本中最近的词汇封闭块的激活记录。这取决于静态程序文本。
这里给出的调用顺序如下:,
Main->A1->A2->A21->A1 现在A1,A2是在Main下定义的,所以A1,A2接入链路指向Main,A21是在A2下定义的,因此它的接入链路将指向A2。
参考: http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html 这个解决方案是由 尼蒂卡·班萨尔
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END