dise±o de compilador

Download Dise±O De Compilador

Post on 25-May-2015

22.585 views

Category:

Travel

2 download

Embed Size (px)

TRANSCRIPT

  • 1. Diseo de Compiladores I Estructura General de un Compilador

2. Estructura General de un Compilador Diseo de Compiladores I - 2007 Estructrura General de un Compilador COMPILADOR PROGRAMA FUENTE SALIDA Mensajesde Error 3.

  • Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce otro equivalente escrito en un lenguaje objetivo.

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 4. Lenguaje Fuente

  • Lenguaje de alto nivel. Por ejemplo: C, Pascal, C++.
  • Lenguaje especializado para alguna disciplina especfica dentro de las Ciencias de la Computacin.

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 5. Salida

  • Cdigo de Mquina. Escrito en las instrucciones de mquina de la computadora en la que se ejecutar.
  • Cdigo Binario. Deber ser vinculado con las libreras correspondientes para obtener el cdigo ejecutable.
  • Cdigo Assembler. Deber ser ensamblado y vinculado.
  • Otro lenguaje de alto nivel.

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 6. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Tabla de Smbolos Errores Salida Anlisis Lxico Anlisis Sintctico Anlisis Semntico Optimizacin Generacin deCdigo Intermedio Generacin deCdigo Objetivo Programa Fuente 7. Front End

  • Fases que dependen del lenguaje fuente
    • Anlisis Lxico
    • Anlisis Sintctico
    • Anlisis Semntico (Esttico)
    • Creacin de la Tabla de Smbolos
    • Generacin de Cdigo Intermedio
    • Algo de Optimizacin
    • Manejo de errores correspondiente a las fases del Front End

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 8. Back End

  • Fases que dependen de la mquina objetivo
    • Generacin de la salida
    • Optimizacin
    • Manejo de errores correspondiente a las fases del Back End
    • Operaciones sobre la Tabla de Smbolos

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 9. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Tabla de Smbolos Errores Salida Anlisis Lxico Anlisis Sintctico Anlisis Semntico Optimizacin Generacin deCdigo Intermedio Generacin deCdigo Objetivo Programa Fuente 10. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Tabla de Smbolos Errores Salida Anlisis Lxico Anlisis Sintctico Anlisis Semntico Optimizacin Generacin deCdigo Intermedio Generacin deCdigo Objetivo Programa Fuente 11. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Programa Fuente Salida Anlisis Lxico Anlisis Sintctico Generacinde CdigoTabla de Smbolos Errores 12. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Programa Fuente Salida Anlisis Lxico Anlisis Sintctico Generacinde CdigoTabla de Smbolos Errores * 13. Fases de la Compilacin

  • Suele haber preprocesadores para :
  • Eliminar comentarios
  • Incluir archivos
  • Expandir macros
  • Efectuar compilacin condicional
  • Reemplazar constantes simblicas

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 14. Fases de la Compilacin Diseo de Compiladores I - 2007 Estructrura General de un Compilador Programa Fuente Salida Anlisis Lxico Anlisis Sintctico Generacinde CdigoTabla de Smbolos Errores * 15. Anlisis Lxico

  • Lee el programa fuente.
  • Remueve espacios en blanco, tabulaciones, saltos de lnea.
  • Remueve comentarios.
  • Agrupa los caracteres en unidades llamadastokens .

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 16. Anlisis Lxico

  • Untokenes una secuencia de caracteres que forman una unidad significativa

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 17. Anlisis Lxico

  • La interaccin entre el Anlisis Lxico y el Anlisis Sintctico puede ocurrir de distintas formas:
    • Ambas actividades se ejecutan en modo batch.
    • Ambas actividades son concurrentes.
    • Ambas actividades son rutinas del Generador de Cdigo.
    • El Anlisis Lxico es una rutina del Anlisis Sintctico.

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 18. Anlisis Lxico Ejemplo

  • if Plazo >= 30
    • then Tasa := Base + Recargo / 100
    • else Tasa := Base

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 19. Anlisis Lxico Ejemplo

  • [ if ] [ Plazo ] [ >= ] [ 30 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 20. Anlisis Lxico Tokens

  • Palabras reservadas.
    • Ejemplos: IF, THEN, ELSE
  • Operadores
    • Ejemplos: +, =, :=
  • Cadenas de mltiples caracteres
    • Ejemplos: Identificador, Constante

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 21. Anlisis Lxico Tokens

  • Los tokens se diferencian de la cadena de caracteres que representan.
  • La cadena de caracteres es elLexemao valor lxico.
    • Existen tokens que se corresponden con un nico lexema
      • Ejemplo: Palabra Reservada IF
    • Existen tokens que pueden representar lexemas diferentes
      • Ejemplo: Identificador Plazo, Identificador Tasa

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 22. Anlisis Lxico

  • El Anlisis Lxico hace una correspondencia entre cada token y un nmero entero.
  • El Anlisis Lxico entrega al Anlisis Sintctico los tokens.
  • Cuando un token puede corresponder a ms de un lexema, el Anlisis Lxico entrega al Anlisis Sintctico el par token-lexema.

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 23. Anlisis Lxico Diseo de Compiladores I - 2007 Estructrura General de un Compilador Token Identificacin del token ID 27 CTE 28 IF59 THEN 60 ELSE 61 + 70 / 73 >= 80 := 85 24. Anlisis Lxico Ejemplo

  • [ if ] [ Plazo ] [ >= ] [ 30 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 25. Anlisis Lxico Ejemplo

  • [ 59 ] [ Plazo ] [ >= ] [ 30 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 26. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27 ] [ >= ] [ 30 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 27. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27 ] [ 80 ] [ 30 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 28. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27 ] [ 80 ] [ 28 ]
    • [ then ] [ Tasa ] [ := ] [ Base ] [ + ] [ Recargo ] [ / ] [ 100 ]
    • [ else ] [ Tasa ] [ := ] [ Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 29. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27 ] [ 80 ] [ 28 ]
    • [ 60 ] [ 27 ] [ 85 ] [ 27 ] [ 70 ] [ 27 ] [ 73 ] [ 28 ]
    • [ 61 ] [ 27 ] [ 85 ] [ 27 ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 30. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27, Plazo ] [ 80 ] [ 28, 30 ]
    • [ 60 ] [ 27, Tasa ] [ 85 ] [ 27, Base ] [ 70 ] [ 27,Recargo ] [ 73 ] [ 28, 100 ]
    • [ 61 ] [ 27,Tasa ] [ 85 ] [ 27,Base ]

Diseo de Compiladores I - 2007 Estructrura General de un Compilador 31. Anlisis Lxico Ejemplo

  • [ 59 ] [ 27 ] [ 80 ] [ 28 ] [ 60 ] [ 27 ] [ 85 ] [ 27 ] [ 70 ] [ 27 ] [ 73 ] [ 28 ] [ 61 ] [ 27 ] [ 85 ] [ 27 ]
  • IF ID >= CTE THEN ID := ID+ID /CTE ELSE ID := ID

Diseo de Compiladores I - 2007 Estruct