Download - Teoria de Compiladores

Transcript
  • *Teoria de Compiladores

    Ao 2004

  • * INTRODUCCIN

  • * Conceptos relacionados

    Con algunas tcnicas bsicas de escritura de compiladores se pueden construir traductores para una gran variedad de lenguajes y mquinas Arquitectura de ComputadorasLenguajes de ProgramacinTeora de LenguajesTeora de AlgoritmosIngeniera de SoftwareCompiladores

  • *CompiladoresUn compilador es un programa que lee un programa en un lenguaje y lo traduce a un programa equivalente en otro lenguaje, y adems informa al usuario sobre la presencia de errores en el programa de entrada

    programa programa fuente objeto mensajes de error compilador

  • *

    El Diseo de un compilador surge como resultado de:

    Desarrollo de un nuevo lenguaje de programacinAdicin de extensiones a los ya existentesExplotacin de las caractersticas del hardware A futuro:

    Extensin para el cmputo paralelo y distribuidoHOY. Y A FUTURO

  • ENSAMBLADOR Traducen programas escritos en lenguaje ensamblador a cdigo mquina Traducen programas escritos en lenguaje de alto nivel a cdigo intermedio o a cdigo mquinaINTERPRETE No genera cdigo objeto, analiza y ejecuta directamente cada proposicin del Programa Fuente (PF)PREPROCESADOR Sustituyen macros, incluyen archivos o extensin del lenguaje.

    COMPILADORTIPOS DE SISTEMAS DE COMPILACIN

  • *SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE estructura del programa fuente

    programa fuente

    programa objeto en lenguaje ensamblador

    cdigo de mquina relocalizable biblioteca archivos obj.relocal.

    cdigo de mquina absoluto

    preprocesadorensambladorcompiladoreditor de carga y enlace

  • *

    ANLISIS (Etapa Inicial): Divide al PF en sus elementos componentes y crea una representacin intermedia. Se determinan las operaciones y se registran en una estructura de rbol (ej. rbol sintctico)

    SNTESIS (Etapa Final): Construye el PO deseado a partir de la representacin Intermedia (requiere tcnicas ms especializadas) PARTES DE LA COMPILACIN

  • Ao 2004*UN AMBIENTE GENERAL DE COMPILACIN FuenteAnlisis lxicoAnlisis sintcticoAnlisis semnticoIntermedioGenerador de cdigoCdigo relocalizableEnlazadorObjetoMs: Sistemas de edicin y depuracin

    Ao 2004

  • *ANLISIS DEL PROGRAMA FUENTEANALISIS LINEAL (Lxico- Exploracin- Scanner) Se lee el programa como una cadena de izquierda a derecha, se agrupan y se generan componentes lxicos o tokens (secuencia de caracteres con significado colectivo)

    ANALISIS JERARQUICO (Sintctico- Parser) Los componentes lxicos se agrupan en colecciones anidadas con un significado colectivo ( frases gramaticales que por lo general se representan mediante rboles sintcticos)

    ANALISIS SEMANTICO Se realizan revisiones para asegurar que los componentes de un programa se ajustan de un modo significativo

  • Ao 2004*posicion := inicial + velocidad * 60 b ) Anlisis sintctico (rbol de analis. sint.) proposicin de asignacin

    identificador := expresin

    posicion + expresin expresin

    identificador expresin * expresin inicial identificador nmero

    velocidad 60

    Ao 2004

  • *posicion := inicial + velocidad * 60 b ) Anlisis sintctico ( reglas recursivas)

    Las construcciones lxicas no requieren recursin (ej. Reconocer un identificador) mientras que las sintcticas suelen requerirlas (ej. Emparejamiento de parntesis o Begin-End)

    La estructura jerrquica de un programa normalmente se expresa mediante reglas recursivas Exp :: ident | nro Exp :: Exp + Exp| Exp * Exp | (Exp)

    Las gramticas libres de contexto (GLC) son una formalizacin de reglas recursivas que pueden guiar el anlisis sintctico

  • *posicion := inicial + velocidad * 60 c ) Anlisis semntico

    Significado de una unidad gramatical, interpretacinTraducir la entrada a una forma de representacin intermediaAnlisis y verificacin de tiposUtiliza la estructura jerrquica del Anlisis sintcticoEl rbol semntico permite una representacin interna compacta del rbol de anlisis sintctico. Ejemplos: : = : = posicion + posicion + inicial * inicial * velocidad 60 velocidad entareal 60

  • *FASES DE UN COMPILADOR PROGRAMA FUENTE

    analizador lxico analizador sintcticoadministrador analizador semntico manejador de la tabla generador de cdigo intermedio de errores de smbolos optimizador de cdigo generador de cdigo PROGRAMA OBJETO

    Cada fase transforma al PF de una representacin a otra

  • Ao 2004*TABLA DE SMBOLOS Estructura de datos que contiene un registro por cada identificador, con los campos para los atributos: -- Informacin sobre la memoria asignada -- tipo -- mbito -- Si es nombre de procedimiento (nmero, tipo y mtodo de paso de cada argumento)

    Permite encontrar rpidamente cada ID y almacenar o consultar datos de ese registro

    En el Anlisis Lxico se detectan los ID y se introducen en la Tabla de Smbolos

    Las fases restantes introducen informacin sobre los ID y despus la utilizan

    ADMINISTRADOR DE LA TABLA DE SMBOLOS

    Ao 2004

  • *Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilacin, permitiendo detectar ms errores

    Las fases de Anlisis Lxico, Sintctico y Semntico manejan la mayora de los errores

    En el Anlisis Semntico se detectan errores donde la estructura sintctica es correcta pero no tiene significado la operacin ( Por. ej. sumar dos ID , donde uno es el nombre de una matriz y el otro un nombre de procedimiento) DETECCIN E INFORMACIN DE ERRORES

  • *

    Trata de mejorar el cdigo intermedio para que resulte un cdigo de mquina ms rpido de ejecutar

    Hay optimaciones sencillas que mejoran el tiempo de ejecucin del programa sin retardar mucho la compilacin

    OPTIMIZACIN DE CDIGO

  • *La fase final genera cdigo objeto ( en general cdigo de mquina recolalizable o cdigo ensamblador)

    GENERACIN DE CDIGO

    ********