Descargar

Resumen de Compilación

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    Resumen de Traducción Definición: Un traductor es un algoritmo que convierte un código fuente en un programa objeto equivalente.

    Definición: Un compilador es un traductor donde el lenguaje objeto está un nivel “más bajo” que el lenguaje del código fuente.

    (Gp:) Traductor (Gp:) Codigo Fuente (Gp:) Programa Objeto

    edu.red

    Resumen de Traducción (cont.)? ¿ Cuándo es el nivel de un lenguaje menor que otro ?

    Definición: Un interpretador es un algoritmo que simula la ejecución de programas escritos en un determinado lenguaje fuente.

    Interpretador Fuente entrada salida

    edu.red

    Resumen de Traducción (cont.)? Definición: La implementación de un lenguaje de programacion consiste de un traductor (o compilador) para ese lenguaje, y un interpretador para el correspondiente lenguaje objeto. Interpretador Objeto entrada salida Compilador Fuente

    edu.red

    Traducción Un programa fuente puede ser traducido un número arbitrario de veces antes que el programa objeto sea generado.

    Traductor1 Fuente Traductor2 TraductorN Objeto …

    edu.red

    Traducción (cont.)? Cada una de estas traducciones es llamada una fase, no se debe confundir con una pasada, i.e. una escritura al disco.

    P: ¿ Cómo debiera ser divido en fases un compilador?

    R: De manera que cada fase pueda ser descrita por un modelo formal de computación, y realizar la fase eficientemente.

    edu.red

    Traducción (cont.)? P: ¿ Cómo se divide usualmente un compilador?

    R: En 2 fases principales, con varias posibilidades de subdivisión. Fase 1: Análisis (determina correctitud)? Fase 2: Síntesis (produce código objeto)? Otros criterios: Fase 1: Sintaxis (forma). Fase 2: Semántica (significado).

    edu.red

    División tipica de un compilador Scanning (Análisis lexico). Objetivo: Agrupar secuencia de caracteres que ocurren en la fuente, en unidades lógicas atómicas llamadas tokens. Ejemplos de tokens: Identificadores, palabras reservadas, enteros, hileras, signos de puntuación, “espacios en blanco”, caracteres de fin de línea, comentarios, etc., … Scanner (Analizador Léxico)? Fuente Secuenica de Tokens

    edu.red

    Análisis Léxico Se debe tratar con carateres fin de línea y fin de archivo (end-of-file). Se hace una clasificación preliminar de tokens. Por ejemplo, ‘program’ y ‘Ex’ son clasificados como identificadores. Se tiene que dar reglas no-ambiguas para la formación de tokens.

    Ejemplo:

    edu.red

    edu.red

    Filtraje (Screening) Objetivo: Remover los tokens no deseados. Clasificar las palabras reservadas. Unir/simplificar tokens. (Gp:) Screener (Gp:) Secuencia de Tokens (Gp:) Secuencia de Tokens

    edu.red

    Filtraje (Screening)? Reconoce (y reclasifica) palabras reservadas.

    Descarta espacios en blanco (y comentarios).

    Actua como una interfaz entre el “scanner” y la siguiente fase, el “parser” (analizador sintáctico).

    Ejemplo:

    edu.red

    edu.red

    Análisis sintactico (Parsing) Objetivos:

    Determinar si la secuencia de tokens es sintácticamente correcta.

    Agrupar los tokens, en una estructura sintáctica correcta (árbol), de ser posible.

    edu.red

    Análisis sintáctico (cont.)? Estructura sintáctica de programas:

    Expresiones Declaraciones Procedimientos Funciones Módulos

    Metodología: Usar “reglas de reescritura” (a.k.a. BNF).

    Partes: 1, 2
    Página siguiente