Compiladores

Solo disponible en BuenasTareas
  • Páginas : 2 (440 palabras )
  • Descarga(s) : 0
  • Publicado : 27 de octubre de 2010
Leer documento completo
Vista previa del texto
Tarea 2  1.

Fecha de Entrega: Lunes 25 de Octubre  Escríbanse reglas de traducción para determinar los tipos de las expresiones (E) y listas (L), para la  siguiente gramática:  X  X ; D  X  D D  L : T  L  L , id  L  id  T  list of T | char | integer  E  ( L ) | literal | num | id  L  E , L | E   

2.

3.

4.

5.Si el nombre de tipo entero se define como integer y apuntador como pointer(entero) , ¿Cuáles de  las siguientes expresiones son estructuralmente equivalentes?  a. apuntador  b. pointer(integer)  c. pointer(pointer(entero))  d. pointer(apuntador)  e.pointer(pointer(apuntador))    Modifique  el  comprobador  de  tipos  descrito  en  clase  para  que  imprima  un  mensaje  descriptivo  cuando  detecte  un  error  y  para  que  continúe  la  comprobación  como si  hubiera  aparecido  el  tipo  previsto.    Exprésense, utilizando variables de tipos, los tipos de las siguientes funciones.  a. Una  función  que  recibe  como  argumentos  un  apuntador  a  un objeto  de  cualquier  tipo  y  una  función  que  devuelve  un  objeto  del  tipo  apuntado  en  el  primer  argumento,  y  que  devuelve un apuntador del mismo tipo que el primer argumento.  b.Una función que tome como argumento una matriz indizada por enteros, con elementos  de cualquier tipo, y devuelva una matriz cuyos elementos sean los objetos apuntados por los elementos de la matriz dada.    Encuéntrese  el  unificador  más  general,  en  caso  de  existir,  para  cada  par  de  expresiones  de  la  siguiente lista:  a. (pointer(α) x (β µ )    con    β x (µ π )  con   α1 x int  (α2 array(α3))  b. δ1 ( pointer(δ1)  δ2)   

  6. ¿Qué imprime el siguiente programa utilizando llamada por valor, por referencia, enlace de copia y  restauración y llamada por nombre?   program principal(input, output);    procedure p(x, y, z);    begin      y := y + 1;      z := z + x;    end; 

  begin        end. 

a := 2;  b := 3;  p(a+b, a, a); 

      7....
tracking img