Procesador Lenguaje

18
PROCESADOR DE LENGUAJE Compiladores 1 Sección C

description

Describe las fases en la construcción de un compilador

Transcript of Procesador Lenguaje

  • PROCESADOR DE LENGUAJECompiladores 1

    Seccin C

  • Procesador de Lenguaje

    Los procesadores de lenguaje son todos los programas que a travs de una entrada escrita en un lenguaje de programacin pueden manipular herramientas de software y hardware de un computador.

  • Interprte

    Es un programa que simultneamente analiza y ejecuta un programa escrito en lenguaje fuente.

    La primera fase de anlisis es igual que el compilador.

    Es ms sencillo de implementar.No es necesario tener en memoria todo el cdigo fuente.

    Programa

    FuenteResultados

    Interprete

  • Interprete Puro El proceso es a travs del anlisis de cada sentencia y

    su ejecucin hasta finalizar todo el programa fuente.

    Pensado para maquinas con limitaciones de

    memoria.

    Si en cualquier momento se produce un error, se

    debe ejecutar desde el inicio.

    Interprete

    Avanzado

    Incorporan un paso previo de anlisis de todo el

    programa fuente.

    Generan posteriormente un lenguaje ejecutado

    por el parser.

    Interprete

    Incrementales

    Dirigidos a lenguajes que no pueden compilarse.

    Se pueden crear objetos y funciones en tiempo

    de ejecucin.

    Se compilan las partes estaticas.

  • Aplicaciones de Interpretes

    Interpretes de comandos:

    Tomando el lenguaje fuente y ejecuta sobre el sistema operativo (C-SHELL, KORN-SHELL, JCL).

    Entornos de programacin:

    Lenguajes con caractersticas especiales y cuya compilacin no es efectiva. [Python, Lisp, Perl]

  • Compilador Los compiladores son programas que

    reciben un lenguaje fuente y lo transforman a un programa objeto, que puede ser ensamblador o de cdigo mquina.

    Programa

    Fuente

    Programa

    ObjetoCompilacion

  • Tipos de CompiladoresCompiladores

    Cruzados

    Generan cdigo para un sistema

    distinto del que estn funcionando.

    Compiladores

    Optimizadores

    Realizan cambios en el cdigo para

    mejorar su eficiencia, pero

    manteniendo la funcionalidad del

    programa original.

    Compiladores de

    una sola pasada

    Generan el cdigo maquina a partir de

    una nica lectura del cdigo fuente.

    Compiladores de

    Varias Pasadas

    Necesitan leer el cdigo fuente varias

    veces antes de poder producir el

    cdigo maquina.

    Compiladores JIT Forman parte de un intrprete y

    compilan partes del cdigo segn se

    necesitan.

  • Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

    Programa Fuente

    Programa Objeto

    Tabla de Smbolos

    Manejador de Errores

    Estructura de un

    Compilador

    Flujo de caracteres

    Flujo de tokens

    rbol sintctico

    rbol sintctico

  • Anlisis LxicoPrimera Fase de un compilador

    Lee los caracteres de entrada y elabora como salida una secuencia de componentes lxicos que son utilizadas en el anlisis sintctico

    Componentes Lxicos: Identificadores, palabras reservadas, operadores lgicos, smbolos especiales, constantes etc..

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Anlisis LxicoEstas herramientas nos ayudara a la

    implementacin del anlisis lxico:

    Jlex , Flex, Jflex, Lex:

    Manejar el archivo fuente (abrirlo, leerlo, cerrarlo).

    Ignorar caracteres no relevantes

    Agrupar resto de los caracteres Rechazar agrupaciones invlidas y clasificar las

    vlidas

    Manejo y Recuperacin de errores

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Anlisis SintcticoSegunda Fase

    Analiza el orden de un lenguaje con sus reglas que son prescritas por estructura bien definida.

    Una gramtica da una especificacin sintctica precisa y fcil de entender de un lenguaje de programacin.

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Anlisis SintcticoEstas herramientas nos ayudara a la

    implementacin del anlisis Sintactico: Bison, Yacc, Happy, JavaCC, ANTLR y CUP

    Creacin del rbol del anlisis sintctico.

    Recuperacin de errores.

    Comprobar que la secuencia de componentes lxicos cumple las reglas de la gramtica.

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Anlisis Semntico

    se encarga de detectar la validez semntica del rbol generado del anlisis sintctico:

    Ejemplo:

    Declaracin de identificadores, comprobacin: de tipos, del flujo de control, de unicidad.

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Generacin de Cdigo Intermedio

    El generador de cdigo intermedio transforma un rbol semntico en una representacin en un lenguaje intermedio cercano al cdigo objeto.

    Cdigo 3 direcciones:

    Es una secuencia de proposiciones de la forma general:

    x := y op zop representa cualquier operador

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Optimizador de Cdigo

    La optimizacin de cdigo es la verificacin que se hace del cdigo ya generado para mejora la velocidad al momento de la ejecucin.

    Existen algunas reglas para optimizar:

    Elimina la reescritura de cdigo

    Eliminacin de cdigo inalcanzable

    Optimizacin de temporales

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Generador de Cdigo

    Traduce el cdigo intermedio a cdigo ensamblador.

    Las posiciones de memoria se seleccionan para cada una de las variables usadas en el programa.

    Anlisis Lxico

    Anlisis Sintctico

    Anlisis Semntico

    Cdigo Intermedio

    Optimizador de Cdigo

    Generador de Cdigo

  • Tabla de Smbolos

    Almacena la estructura de datos:

    Variables, Constantes, Etiquetas, Tipos, Valores, Asignacin de valores.

    Operaciones:

    Insertar smbolo.

    Consultar smbolo.

    Borrar smbolo.

  • Deteccin de Errores:

    El manejador de errores permite establecer si el programa fuente posee algn error ya sea de tipo:

    lxico (caracteres no definidos),

    sintctico (estructura inadecuada)

    semntico (contexto no apropiado)