Compiladores
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....
Regístrate para leer el documento completo.