Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Comprobación Tipos

2,818 views

Published on

Explicación de las técnicas de comprobación de tipos.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Comprobación Tipos

  1. 1. Comprobación de Tipos Capítulo 6 Leonel Morales Díaz [email_address] Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/compiladores
  2. 2. Comprobación estática <ul><li>Diferente de la dinámica (en runtime) </li></ul><ul><li>Ejemplos </li></ul><ul><ul><li>Comprobación de tipos </li></ul></ul><ul><ul><ul><li>Incompatibilidad de operadores </li></ul></ul></ul><ul><ul><li>Flujo de control </li></ul></ul><ul><ul><ul><li>Exit Do, break, halt, while, next </li></ul></ul></ul><ul><ul><li>Unicidad </li></ul></ul><ul><ul><ul><li>Variables únicas en su ámbito </li></ul></ul></ul>
  3. 3. Comprobación estática <ul><li>Más ejemplos </li></ul><ul><ul><li>Nombres </li></ul></ul><ul><ul><ul><li>Begin transaction NNN --- Commit transaction NNN </li></ul></ul></ul><ul><li>Comprobación dinámica es necesaria </li></ul><ul><ul><li>tabla: array[0..255] of char; </li></ul></ul><ul><ul><li>i: integer </li></ul></ul><ul><ul><li>¿Verificar i <= 255 estáticamente? </li></ul></ul>
  4. 4. Sistemas de tipos <ul><li>Basado en </li></ul><ul><ul><li>La noción de tipo </li></ul></ul><ul><ul><ul><li>Tipos básicos o primitivos </li></ul></ul></ul><ul><ul><ul><li>Tipos construidos o referenciales </li></ul></ul></ul><ul><ul><li>Las reglas para asignar tipos </li></ul></ul><ul><ul><ul><li>¿Suma de dos reales es un? </li></ul></ul></ul><ul><ul><ul><li>¿Concatenación de dos char es un? </li></ul></ul></ul>
  5. 5. Expresiones de tipos <ul><li>Un tipo básico </li></ul><ul><ul><li>Boolean, char, integer, long, float, etc. </li></ul></ul><ul><ul><li>error_tipo </li></ul></ul><ul><li>El nombre de un tipo </li></ul><ul><ul><li>public class Telefono { </li></ul></ul><ul><ul><li>int número; int internacional; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>Constructores de tipos </li></ul>
  6. 6. Constructores de tipos <ul><li>Matrices </li></ul><ul><ul><li>Array(I,T) </li></ul></ul><ul><ul><li>String[20] nombres; </li></ul></ul><ul><li>Productos cartesianos </li></ul><ul><ul><li>T 1 x T 2 </li></ul></ul><ul><li>Registros </li></ul><ul><ul><li>Record((NNN x integer) x (MMM x String)) </li></ul></ul>
  7. 7. Constructores de tipos <ul><li>Apuntadores </li></ul><ul><ul><li>Pointer(T) </li></ul></ul><ul><li>Funciones </li></ul><ul><ul><li>int x int => int </li></ul></ul><ul><ul><li>int calcula(int par1; int par2) { return par1*par2; } </li></ul></ul>
  8. 8. Comprobador de tipos <ul><li>Gramática de los tipos </li></ul><ul><li>Reglas semánticas </li></ul><ul><li>Atributo (sintetizado o heredado) tipo </li></ul>

×