Vengaya

Solo disponible en BuenasTareas
  • Páginas : 5 (1084 palabras )
  • Descarga(s) : 4
  • Publicado : 20 de mayo de 2010
Leer documento completo
Vista previa del texto
UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad de Informática

ASIGNATURA Procesadores de Lenguajes GRUPO FM41 Nº EXPEDIENTE APELLIDOS, NOMBRE

CÓDIGO MAYO 2009

404

PRUEBA TEORIA GENERACION DE CODIGO INTERMEDIO
TEST (0,5 puntos). Conteste las siguientes preguntas teniendo en cuenta que para cada una de ellas hay una y sólo una respuesta correcta.

1. El atributo siguiente seutiliza para: a. Almacenar listas de cuartetos o tercetos que aparecen detrás de una sentencia b. Almacenar una lista de saltos sin rellenar que deberían saltar a la sentencia que se encuentra a continuación de la sentencia en la que se genera este salto. c. Atributo que almacena una lista de saltos sin rellenar que deberían saltar a la sentencia que se encuentra a continuación de la expresiónlógica en la que se genera este salto. 2. La técnica de relleno por retroceso es: a. Una técnica de generación de código intermedio mediante la cual se rellena los saltos de generados en la expresiones lógicas que deben de saltar a bloques de instrucciones que se han generado anteriormente. b. Una técnica de generación de código intermedio mediante la cual los saltos cuyo destino no se conoce en elmomento de su generación se rellenan cuando se encuentra el destino. c. Ninguna de las anteriores es verdadera 3. Los tercetos son: a. Instrucciones de código intermedio con tres elementos que pueden contener constantes, variables y direcciones de otros tercetos además de un elemento para el operador. b. Instrucciones de código intermedio con dos elementos que pueden contener constantes, variables ydirecciones de otros tercetos además de un elemento para el operador. c. Ninguna de las anteriores es verdadera 4. Las expresiones lógicas se traducen en. a. Dos instrucciones que evalúan la expresión si es verdadera o falsa sobre una variable temporal b. Instrucciones de salto que representan la evaluación de la expresión cuando es verdadera y cuando es falsa y cuyo destino es una cuádrupla quese genera tras la el bloque de instrucciones de la expresion c. Instrucciones de salto que representan la evaluación de la expresión cuando es verdadera y cuando es falsa y que se almacenan en atributos hasta que se conoce su destino. 5. Los saltos incondicionales que se generan al traducir una sentencia: a. Siempre se deben generar usando un marcador N b. Se generan usando un marcador N si debengenerarse entre bloques de instrucciones contenidos en la sentencia y que han sido generados previamente c. Se generan usando un marcador N sólo si deben generarse al final de la sentencia

1

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad de Informática

ASIGNATURA Procesadores de Lenguajes GRUPO FM41 Nº EXPEDIENTE APELLIDOS, NOMBRE

CÓDIGO MAYO 2009

404

EJERCICIOS 1.Escriba las acciones semánticas para generar código para las siguiente sentencia case, según la semántica de C o Java, según la cual cuando se ejecuta uno de los casos se continúa por el siguiente a no ser que exista un break que se salga del case

Sbreak {$$.break=new lista_cuad(lc.sig_cuad()); lc.generar(goto,_,_,_);}
2

UNIVERSIDAD PONTIFICIA DE SALAMANCA EN MADRID Facultad de InformáticaASIGNATURA Procesadores de Lenguajes GRUPO FM41 Nº EXPEDIENTE APELLIDOS, NOMBRE

CÓDIGO MAYO 2009

404

LC case LIT: M S {$$.par=new lista($2.lex,$4.cuad); $$.sig=$5.sig; $$.break=$5.break;} LCLC; case LIT: M S {$1.añadir($4.lex,$6.cuad); $1.sig.rellenar($6.cuad); $$.sig=$7.sig; $$.break=mezclar($1.break,$7.break); }

LC default: S {$$.par=new lista(null,$4.cuad); $$.sig=$5.sig;$$.break=$5.break;} LCLC; default: S {$1.añadir(null,$6.cuad); $1.sig.rellenar($6.cuad); $$.sig=$7.sig; $$.break=mezclar($1.break,$7.break); } SN switch (id) {LC}{laux=new lista_cuad(lc.sig_cuad()); lc.generar(goto,_,_,_); aux=lc.sig_cuad(); mientras ($7.pares) hacer si ($7.pares.izda()==null) entonces lc.generar(goto,$7.pares.dcha(),_,_); sino lc.generar(if=,$4.lex,$7.pares.izda(),$7.pares.dcha());...
tracking img