Considere el programa que se muestra a continuación, en un pseudolenguaje estructurado en bloques con alcance léxico y anidamiento de procedimientos permitidos.
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.
Considere la string de llamadas: Principal->A1->A2->A21->A1
El conjunto correcto de registros de activación junto con sus enlaces de acceso está dado por:
Respuesta: (D)
Explicación: El enlace de acceso se define como un enlace al registro de activación del bloque léxicamente más cercano en el texto del programa, por lo que los bloques más cercanos respectivamente para A1, A2 y A21 son main , main y A2 Dado que los registros de activación se crean en el momento de la entrada al procedimiento y se destruyen en el momento de la salida del procedimiento.
Solución:
enlace al registro de activación del bloque léxicamente más cercano en el texto del programa. Depende del texto del programa estático.
Aquí la secuencia de llamada se da como,
Principal->A1->A2->A21->A1
Ahora A1, A2 se definen en Principal… Entonces A1, A2 El enlace de acceso apunta al principal A21 se define en A2, por lo tanto, su enlace de acceso apuntará a A2.
Referencia:
http://www.cs.nyu.edu/courses/spring08/G22.2130-001/lectures/lecture-13.html
Esta solución es aportada por Nitika Bansal
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA