PDF de programación - Análisis semántico / Verificación de tipos

Imágen de pdf Análisis semántico / Verificación de tipos

Análisis semántico / Verificación de tiposgráfica de visualizaciones

Publicado el 6 de Enero del 2020
815 visualizaciones desde el 6 de Enero del 2020
845,9 KB
22 paginas
Creado hace 11a (23/11/2012)
ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS





ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

© Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad
Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del
público y en general cualquier otra forma de explotación de toda o parte de la misma.

La utilización no autorizada de esta obra, así como los perjuicios ocasionados en los derechos de
propiedad intelectual e industrial de la Universidad Europea de Madrid, S.L.U., darán lugar al ejercicio
de las acciones que legalmente le correspondan y, en su caso, a las responsabilidades que de dicho
ejercicio se deriven.

2





Índice

Presentación

¿En qué consiste la verificación de tipos?

Sistema de tipos

Expresiones de tipo I

Expresiones de tipo II

Array (matriz)

Registro

Expresiones de tipo III

Unión

Expresiones de tipo IV

Puntero

Funciones

Clase

Equivalencia de tipos

Equivalencia estructural

Equivalencia nominal

Ejemplo I

Ejemplo II

Coerción de tipos

Resumen

ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

4

5

7

9

11

11

11

13

13

14

14

14

14

16

16

16

18

20

21

22

3
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Presentación

ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

El objetivo de este tema es comprender las tareas necesarias para realizar la verificación de tipos

como una tarea más de las que realiza el analizador semántico y consiste en los siguientes

objetivos.

Entender en qué consiste la comprobación de tipos.

Comprender qué es un sistema de tipos.

Identificar las distintas expresiones de tipos.

Conocer el concepto de equivalencia de tipos en sus dos modalidades y sus implicaciones.

Aprender a verificar tipos en un lenguaje cualquiera.

Conocer los conceptos asociados a la conversión de tipos.

4
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

¿En qué consiste la verificación de tipos?

La fase de análisis semántico tiene que validar que un programa, además de ser

sintácticamente correcto, es además coherente con su contexto y por tanto, tiene

sentido, puesto que no vamos a sumar números con cadenas o los tipos que se

utilizan se hacen de una forma adecuada, por citar alguno de los controles que

podemos hacer.

del

Una de las tareas principales de un compilador en la fase de análisis semántico es el cálculo y
mantenimiento de la información en tipos de datos (inferencia de tipos), y el uso de tal
información para asegurar que cada parte de un programa tenga sentido bajo las reglas de tipo
lenguaje (verificación de tipos). Estas dos tareas por lo regular están estrechamente
relacionadas, se realizan juntas, y se hace referencia a ellas simplemente como verificación de
tipos (Louden, 2004). Como nos indica Louden (2004) el tipo de datos es un conjunto de valores
junto con sus operaciones y se describe mediante una expresión de tipo, que es el nombre que
tiene el tipo de datos, como por ejemplo integer o float y que además incluye otras estructuras
más complejas como arrays o registros.

Con el objeto de no perder la visión global, es necesario el siguiente esquema conceptual, donde

la comprobación de tipos es un control semántico más que hay que realizar siempre que

realicemos operaciones.

Es importante comprender que dependiendo de que tareas haga el lenguaje que estamos

construyendo con el compilador, la comprobación de tipos puede ir intercalada con otros

controles semánticos, puesto que no dejan de ser acciones que el diseñador decide cuándo se

realizan.

5
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Tipos

ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

Cada símbolo del lenguaje lleva asociado un tipo. El tipo que se asocia a cada símbolo lo
utiliza el compilador para saber como debe tratarlo, así como determinar qué operaciones
se pueden realizar sobre él. Por tanto un tipo de datos son un conjunto de valores que llevan
implícitas ciertas operaciones. A modo de ejemplo tenemos los tipos enteros o de los reales,
junto con las operaciones de suma (+), resta (-), multiplicación (*) o división (/) definidas
sobre ellos.

Tarea de comprobación

Esta tarea de comprobación de tipos puede realizarse en tiempo de ejecución y se
denomina comprobación de tipos dinámica, o bien en tiempo de compilación y se
denomina comprobación de tipos estática.

6
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Sistema de tipos

ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

U n sistema de tipos son las reglas que hay que aplicar para asignar las
expresiones de tipos, bien sean simples o complejas, a las distintas estructuras de
un lenguaje. Por tanto, esa validación de las reglas que se definen para cada

estructura del lenguaje es la comprobación de tipos.

Como nos indica Aho et al (2008) estas reglas pueden ser de dos tipos: de síntesis o de

inferencia.

De todo esto se deduce que hay que realizar varias tareas:

1. Gestión de declaraciones: consiste en la inserción en la tabla de símbolos de los

identificadores y sus tipos, teniendo en cuenta el ámbito en el que se han generado.

2. Verificación de tipos: a partir de la información existente en la tabla de símbolos, verifica

que se cumplen las reglas asociadas a las distintas estructuras del código fuente.

3. Inferencia de tipos: en lenguajes que no requieren la definición de tipos, cuando hay
sobrecarga de operadores o polimorfismo, hay que inferir el tipo de un dato o estructura
en función de los distintos tipos de datos que intervienen

Como consecuencia del sistema de tipos que se implemente para el lenguaje en concreto, se

habla de lenguajes fuertemente tipificados o débilmente tipificados:

Lenguajes fuertemente
tipificados

tipos en

Estos lenguajes hacen una implementación estricta de la
verificación de
tiempo de compilación, no
permitiendo por tanto que una variable pueda usar datos de
otro tipo sin que se realice una conversión antes de
realizar una operación
los mismos. Esta
implementación del sistema de tipos es propia de lenguajes
imperativos y son ejemplo de este tipo de lenguajes Ada,
Java, C, Haskell o Pascal, a los que se denomina lenguajes
seguros respecto del tipo, puesto que es capaz de detectar
los errores tanto en tiempo de compilación como de
ejecución evitando la generación de resultados erróneos.

con

Lenguajes débilmente
tipificados

Son lenguajes que tienen gran flexibilidad en el uso de los
tipos de datos y que, por tanto, no realizan la verificación
de tipos en tiempo de compilación, sino en tiempo de
ejecución. En este caso, los tipos de lenguaje que tienen
esta implementación son los declarativos y son ejemplo de
este tipo de lenguajes Javascript, Scheme, Groovy, Perl y
PHP.

Reglas de síntesis de tipos

Estas reglas construyen el tipo de una expresión a partir de los tipos de las subexpresiones
y por tanto requieren que estas subexpresiones estén declaradas previamente. Son las más
habituales, y son de la forma E1 → T * E2, el tipo que tenga E1 dependerá de los tipos que
tengan T y E2 y de lo que indique la regla respectiva para el producto cuando son del
mismo tipo, por ejemplo enteros o cuando uno de ellos es real.

7
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

Reglas de inferencia de tipos

Determina el tipo de una construcción a partir de las formas en que se utiliza. Este
mecanismo se utiliza en lenguajes que no requieren la declaración de tipos, como por
ejemplo ML que comprueba los tipos pero no es necesario que se declaren los nombres de
las variables.

Sobrecarga de operadores

Significa que un operador se puede utilizar con varios tipos de datos. En el caso del
operador suma, "+" sirve tanto para números enteros como reales o incluso para
concatenar cadenas.

Polimorfismo

Se refiere a las funciones y/o fragmentos de código que pueden ejecutarse con argumentos
de distintos tipos.

Tipificados

Dependiendo del autor se utiliza también la palabra tipados.

8
© Univ ersidad Europea de Madrid. Todos los derechos reserv ados.





Expresiones de tipo I

ANÁLISIS SEMÁNTICO

VERIFICACIÓN DE TIPOS

Para desarrollar un sistema de tipos se utilizan las expresiones de tipo que es el
mecanismo utilizado para definir los tipos de datos y las operaciones que se van a

poder realizar sobre ellos.

Hay tres clases de expresiones de tipo:

1. Tipos básicos o simples: son tipos que se definen de forma explícita en el compilador, y
podemos denominarlos como predefinidos en el lenguaje. En la siguiente tabla los vemos
descritos.

En algunos lenguajes se les pueden añadir calificadores a los tipos básicos. Por ejemplo en C,

podemos usar short o long y esto permite usar más bits para definir el valor. En el caso de short

se utilizan 16 bits y en el de long 32 bits, por tanto para un entero en C, "int", podemos utilizar

uno u otro (si la máquina lo permite).

2. Tipos simples no predefinidos: como su nombre indica son también tipos simples que

no están predefinidos.
a. Tipos enumerados: por ejemplo en Ada, type Dia is (lunes, martes, miércoles,

jueves, viernes).

b. Tipos de subrango: por ejemplo en Pascal, type número = 0...9.

En algunos lenguajes, las enumeraciones se definen en una declaración de tipo, y son

verdaderos nuevos tipos. Dependiendo del lenguaje no se supone nada respecto de la forma en la

que los valores se representan internamente, pero en C, los valores enumerados son todos

tomados como nombres d
  • Links de descarga
http://lwp-l.com/pdf17130

Comentarios de: Análisis semántico / Verificación de tipos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad