Comprobación Tipos

2,809 views

Published on

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,809
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
27
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×