Programacion de sistemas

Solo disponible en BuenasTareas
  • Páginas : 8 (1973 palabras )
  • Descarga(s) : 0
  • Publicado : 28 de noviembre de 2010
Leer documento completo
Vista previa del texto
´ TEMA 7 VERIFICACION DE TIPOS
Francisco Jos´ Ribadas Pena e PROCESADORES DE LENGUAJES 4o Inform´tica a ribadas@uvigo.es 13 de marzo de 2007

– c FJRP 2005 ccia PL –

7.1 Introducci´n o

Tarea clave del An´lisis Sem´ntico, garantiza que el programa ”tiene a a sentido”. OBJETIVO: Asegurar que el tipo de una construcci´n del programa o coincida con el previsto en sus contexto.Compatibilidad de tipos en las asignaciones Operadores aplicados a datos del tipo adecuado No y tipo correcto en los par´metros de funciones a Adem´s, se debe considerar: a ´ CONVERSION DE TIPOS (cuando estos sean compatibles) • Conversi´n IMPL´ o ICITA (coherciones) → realizada por el compilador • Conversi´n EXPL´ o ICITA → realizada por el programador ´ SOBRECARGA DE OPERADORES y FUNCIONES POLIMORFICAS

•S´ ımbolos del lenguaje que tienen asociados distintos tipos y operaciones en funci´n del contexto. o 8 < suma de enteros • Ejemplo: Operador ”+”: suma de reales : concatenaci´n de cadenas o

– c FJRP 2005 ccia PL –

1

7.2 Sistemas de Tipos
Sistema de Tipos: Conjunto de reglas que permiten asociar tipos a las construcciones del lenguaje y verificar su correcci´n. o Determinan el conj. deexpresiones de tipo admisibles en el lenguaje Expresiones de tipo: Tipos asociados a las construcciones del lenguaje. Una expresi´n de tipo es o bien un tipo b´sico, o es el resultado de o a aplicar un constructor de tipo a otra expresi´n de tipo de acuerdo a o unas reglas de construcci´n (dadas por el lenguaje). o • Tipos b´sicos y constructores de tipo dependen del lenguaje a • Expresiones detipo pueden tener asociados nombres Tipos B´sicos: char, boolean, real, integer a Tipos especiales: • error: Indica que no se puede asociar una expr. de tipo correcta • void: Indica que una construcci´n del lenguaje es correcta, pero o no tiene ning´n tipo asociado. u ´ ◦ Util en comprobaci´n de sentencias o Constructores de tipo: Permiten formar tipos complejos a partir de otros m´s simples. aMATRICES: Siendo T una expr. de tipo , ”array(I, T )” es el tipo de una matriz con elementos de tipo T e ´ ındices del tipo I .
• T → tipo de los elementos del array • I → tipo de los ´ ındices (generalmente un rango)

Ejemplo:
PASCAL: C: A: array [0..9] of integer; int A[10];

array(0.,9, integer)

PRODUCTOS: Si T1 y T2 son expr. de tipo, ”T1 × T2” es una expr. de tipo. ( → se supone ”×”asociativo por la izq.)
– c FJRP 2005 ccia PL – 2

REGISTROS: Similar a productos, pero con nombre asociados a los campos • Si u1, u2, . . . , un son los campos de tipos T1, T2, . . . , Tn, la expr. de tipo asociada al registro es: ”record(u1 : T1 × u2 : T2 × . . . × un : Tn)” Ejemplo:
struct { record char nombre[10]; nombre: array [0..9] of character; float altura; altura:real; } end;record(nombre : array(0.,9, char) × altura : real)

PUNTEROS: Si T es una expr. de tipo, ”pointer(T )” representa al tipo de dato que tiene como valores el conjunto de posiciones de memoria que pueden almacenar datos del tipo T . Ejemplo:
char ∗ p; p:∧character

pointer(char)

FUNCIONES: Siendo D la expr. de tipo de los argumentos de la funci´n y T el tipo del valor devuelto, la expr. de tipo de lafunci´n o o ser´: ”D → T ” a • Para funciones con m´ltiples argumentos se usar´n productos u a Ejemplo:
float ∗ f(char a,b); function f(a,b:character):∧real

(char × char) → pointer(real)

Otros constructores: conjuntos, pilas, colas, ficheros, etc,... NOTA: Dentro de las expresiones de tipo podr´n incluirse variables a • Representa un componente que puede tener cualquier expr. de tipo asociadao del cual se desconoce su tipo. • Util para manejar funciones polimi´rficas. o

– c FJRP 2005 ccia PL –

3

7.3 Declaraci´n y Comprobaci´n de Tipos o o

Varemos un ejemplo sencillo del manejo de declaraciones de tipo y de comprobaci´n de tipos en expresiones, funciones y sentencias. o Se usar´ un lenguaje simplificado: a 8 > char > < boolean 4 tipos b´sicos a > integer > : real 8 <...
tracking img