Introduccin a la Compilacin - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Introduccin a la Compilacin

Description:

Representa las frases gramaticales como un rbol de parser. ... Generadores de Parsers (yacc, bison) M quinas de Traducci n Dirigida por la Sint xis. ... – PowerPoint PPT presentation

Number of Views:55
Avg rating:3.0/5.0
Slides: 35
Provided by: pym
Category:

less

Transcript and Presenter's Notes

Title: Introduccin a la Compilacin


1
Introducción a la Compilación
  • Diseño y Construcción de Compiladores

2
Índice
  • Conceptualización de Compilador
  • Por qué y para qué estudiar técnicas de
    compilación?
  • Fases de un compilador
  • Clasificación de los Compiladores
  • Compiladores vs. Intérpretes
  • Temáticas abordadas en la materia

3
Compilador
  • Compilador Programa que lee un programa escrito
    en un lenguaje de programación y lo traduce a un
    programa equivalente en otro lenguaje de
    programación.

Compilador
Programa Destino
Programa Fuente
Mensajes de Error
4
Por qué estudiar compiladores?
  • Forma parte de los conocimientos que un Lic. en
    Computación o un Ingeniero de Software debe
    poseer.
  • Permite conocer
  • El funcionamiento de una computadora.
  • El código de máquina generado para las
    construcciones del lenguaje de programación.
  • Estrategias de diseño de lenguajes.
  • Etc.

5
Para qué estudiar compiladores?
  • Comprensión de Programas

6
Para qué estudiar compiladores?
  • Transformar código

7
Para qué estudiar compiladores?
  • Generar Código

8
Para qué estudiar compiladores?
  • Análisis de Código Estático y Dinámico

9
Para qué estudiar compiladores?
  • Aplicaciones Comerciales/Lenguajes Específicos
    del Dominio

HDL
Lenguaje Intermedio
10
Fases de un Compilador
11
Agrupación de las Fases de Un Compilador
  • Front-end Operaciones independientes de la
    máquina.
  • Análisis Lexicográfico
  • Análisis Sintáctico
  • Creación de Tabla de Símbolos
  • Generación de Código Intermedio
  • Manejo de Errores
  • Back-end Operaciones dependientes de la máquina.
  • Optimización de Código
  • Generación de Código
  • Etc.

12
Fases de un Compilador
  • Como hay muchas variantes en las formas en que
    las fases de un compilador se agrupan, se
    prefiere hablar de fases antes que pasos. Es
    común que en diferentes fases se agrupen en un
    paso y que la actividad de esas fases se solapen
    durante un paso (scanner, parser, análisis
    semántico, generación de código intermedio).

13
Fases de un Compilador
  • Es importante notar que deseable tener pocas
    fases porque la lectura y escritura de archivos
    consume mucho tiempo.
  • Ejemplo
  • Scanner-parser
  • Representación Intermedia-Generación de Código.

14
Funciones de las Fases
  • Análisis Lexicográfico
  • Agrupa caracteres en tokens (lexema).
  • Produce mensajes de errores lexicográficos e
    intenta recuperarse.

15
Funciones de las Fases
  • Análisis Sintáctico
  • Agrupa los tokens en frases gramaticales.
  • Representa las frases gramaticales como un árbol
    de parser.
  • Produce mensajes de errores sintácticos.
  • Intenta detectar y recuperarse de los errores.

16
Funciones de las Fases
  • Análisis Sintáctico

aa1
17
Funciones de las Fases
  • Análisis Semántico
  • Controla los errores semánticos del programa.
  • Variables usadas y no definidas.
  • Operandos de tipos compatibles.
  • Invocaciones a procedimientos con el número y
    tipo correctos de parámetros.
  • Números reales no pueden ser usados como
    subíndices de arreglos.
  • Conversión de tipos cuando se permiten las
    cohersiones.

18
Funciones de las Fases
  • bool a
  • a a 1 !!!!!!
  • int a
  • a a 1

19
Funciones de las Fases
  • Generador de Código Intermedio
  • Genera una representación intermedia explícita.
  • Árboles de sintaxis abstracta.
  • Grafos acíclicos dirigidos.
  • Notación postfija.
  • N-uplas (código de tres direcciones).

20
Funciones de las Fases
  • Posfija
  • aa1 aa1
  • Árbol de Sintaxis Abstracta

21
Funciones de las Fases
  • Optimización de Código
  • Intenta reducir el tiempo de ejecución.
  • Descubrir y propagar algún valor constante.
  • Mover determinadas computaciones a lugares menos
    frecuentemente ejecutados.
  • Descubrir computaciones redundantes y removerlas.
  • Remover código inútil o inalcanzable.

22
Funciones de las Fases
  • Generador de Código
  • Genera el código objeto, esto es código de
    máquina reubicable o código assembly.

aa1 lw r1,a lw r2,0(r1) addi r2,r2,1 sw
0(r1),r2
23
Clasificación de los Compiladores
  • Simple pasada
  • Multi pasada

24
Clasificación de los Compiladores
  • Compilador Simple Pasada

Recuperar un token
Analizar el token
El programa destino se genera mientras el
programa fuente se lee.
Verificar el token
Generar Código para el token
25
Clasificación de los Compiladores
  • Compilador Multi-Pasada

scanner
parser
Análisis Semántico
caracteres
Árbol
Código
Tokens
Cada fase lee los datos desde un archivo y
escribe el resultado en otro
  • Por qué múltiples pasadas?
  • Memoria escasa
  • Lenguaje Complejo
  • Portabilidad

26
Clasificación de los Compiladores
Front-end
Back-end
Scanner Parser Análisis Semático
Generación de Código
Representación Intermedia
  • Ventajas
  • Portabilidad
  • Optimizaciones más fáciles de hacer
  • Se pueden combinar los front-end y los back-ends
  • Importante
  • El front-end es dependiente del lenguaje
  • El Back-end es dependiente de la máquina

27
Intérprete
  • Intérprete Programa que lee un programa escrito
    en un lenguaje de programación y produce el
    resultado de ejecutar tal programa.

Lenguaje de Programación
INTÉRPRETE
Salida
Datos
28
Compiladores vs. Intérpretes
29
Partes de la Compilación
  • Análisis Parte el programa fuente en piezas y
    crea una representación intermedia.
  • Síntesis Construye el programa a partir de la
    representación intermedia.

30
Análisis
  • Análisis Lineal El programa se lee de izquierda
    a derecha y se detectan secuencias de caracteres
    que tienen un significado colectivo (Tokens).
  • Análisis Jerárquico Los tokens se agrupan
    jerárquicamente en colecciones anidadas con
    significado colectivo.
  • Análisis Semántico Se realizan ciertos chequeos
    que garantizan que las componentes del programa
    tienen sentido.

31
Herramientas de Construcción de Compiladores
  • Generadores de Scanners (Lex)
  • Generadores de Parsers (yacc, bison)
  • Máquinas de Traducción Dirigida por la Sintáxis.
  • Generadores de Código Automático.

32
Otros Traductores
  • Preprocesadores
  • Macro Procesadores
  • Inclusión de Archivos
  • Extensiones del Lenguaje
  • Ensambladores
  • Ensambladores de dos pasadas
  • Loaders and Link-Editors

33
Temáticas Abordadas en la Materia
  • Tabla de Símbolos
  • Parser Descendente Recursivo
  • Manejo de Errores
  • Traducción Dirigida por la sintáxis
  • Chequeo de Tipos
  • Generación de Código

34
Biliografía
  • Compilers Principles, Techniques and Tools. Aho,
    Setti and Ullman. (The Dragon ?).
  • Apuntes de la materia.
Write a Comment
User Comments (0)
About PowerShow.com