PUERTA | PUERTA-CS-2003 | Pregunta 59

Considere la definición dirigida por sintaxis que se muestra a continuación.

S → id : = E  {gen (id.place = E.place;);}
E → E1 + E2   {t = newtemp ( ); gen (t = El.place + E2.place;); E.place = t}
E → id     {E.place = id.place;} 

Aquí, gen es una función que genera el código de salida y newtemp es una función que devuelve el nombre de una nueva variable temporal en cada llamada. Suponga que ti son los nombres de variables temporales generados por newtemp.
Para la declaración ‘X: = Y + Z’, la secuencia de código de 3 direcciones generada por esta definición es
(A) X = Y + Z
(B) t1 = Y + Z; X = t1
(C) t1 =Y; t2 = t1 + Z; X = t2
(D) t1 = Y; t2 = Z; t3 = t1 + t2; X = t3

Respuesta: (B)
Explicación: Debe ser B. La producción E –> E + E se usa solo una vez y, por lo tanto, solo se genera una variable temporal.
Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *