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