Sei sulla pagina 1di 21

Procesador de Lenguaje

Organizacin de Lenguajes y Compiladores 1 USAC

Guatemala, 2013

Procesador de lenguaje
Programa informtico que recibe como entrada un texto escrito en algn formato, lo analiza y, opcionalmente, produce resultados.

Ejemplos
Compilador Interprete Conversores de formato Formateadores de texto

Interprete
El funcionamiento de un intrprete se caracteriza por traducir y ejecutar, de una en una, las instrucciones del cdigo fuente de un programa, pero, sin generar como salida cdigo objeto.

Tipos de interpretes
Interprete Puro
El proceso es a travs del anlisis de cada sentencia y su ejecucin hasta finalizar todo el programa fuente. Interprete Avanzado

Incorporan un paso previo de anlisis de todo el programa fuente.


Interprete Incrementales Dirigidos a compilarse. lenguajes que no pueden

Compilador
Es una herramienta que traduce un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar.

Tipos de compiladores
Compiladores 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.

Tipos de compiladores
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.

Tipos de compiladores
Compiladores JIT (Just In Time) Forman parte de un intrprete y compilan partes del cdigo segn se Necesitan. Decompilador

Traduce de cdigo mquina a lenguaje de alto nivel.

Compilador
Se compila una vez, se ejecuta n veces.

vs.

Interprete
Se traduce cada vez que se ejecuta.

El proceso de compilacin tiene una visin global de todo el programa, por lo cual la gestin de errores es ms eficiente.
La ejecucin es ms rpida.

Permite interaccionar ms con el cdigo en tiempo de ejecucin.


Necesita menos memoria.

Fases de un compilador
Cdigo Fuente Anlisis Lxico Anlisis Sintctico Anlisis Semntico Tabla de Smbolos Cdigo Intermedio Optimizacin de Cdigo Generacin de Cdigo Cdigo Objeto Gestin de Errores

Fases de un compilador
Texto

Anlisis Lxico
Esta fase se encarga de verificar si todos los caracteres pertenecen o no al lenguaje. Es decir realiza un anlisis carcter por carcter, generando como salida una coleccin de componentes lxicos que son utilizados en el anlisis sintctico.

Este anlisis no logra detectar muchos errores por su caracterstica

Anlisis Sintctico
Lee la secuencia de componentes lxicos y los agrupa realizando un anlisis sobre la estructura de las expresiones en base a gramticas. El anlisis que se realiza es jerrquico es decir en base a rboles de derivacin que se obtienen de las mismas gramticas.

Herramientas
Estas herramientas nos ayudaran a la implementacin del anlisis lxico: Jlex , Lex, Jflex, Flex. Estas herramientas nos ayudara a la implementacin del anlisis Sintactico: Bison, Yacc, Happy , JavaCC, ANTLR y CUP

Anlisis Semntico
Detecta la validez semntica generado del anlisis sintctico. del rbol

Permite comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre s.

Comprobacin unicidad, etc.

de

tipos,

flujo

de

control,

Generacin de cdigo intermedio


Se genera una representacin intermedia explcita del cdigo fuente.

Esta representacin debe ser fcil de producir y de traducir al cdigo objeto.


El cdigo intermedio es una representacin en base a elementos de 3 y 4 direcciones.

Optimizacin de cdigo
Consiste en realizar una mejora en el cdigo intermedio, para reducir el nmero de lneas y hacer que la ejecucin sea ms rpida.

Existen algunas reglas para optimizar:


Elimina la reescritura de cdigo. Eliminacin de cdigo inalcanzable. Optimizacin de temporales.

Generacin de cdigo
Traduce el cdigo intermedio a cdigo ensamblador o cdigo mquina del procesador que nos interese.

Se traduce cada una de las instrucciones intermedias a una secuencia de instrucciones de mquina. Se seleccionan las posiciones de memoria para las variables usadas por el programa .

Tabla de Smbolos
Estructura de datos que contiene un registro por cada identificador, etiquetas, tipos, etc. 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 .

Gestin de errores
Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilacin, permitiendo detectar ms errores.

Las fases de Anlisis 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.

Aplicacin
Diseo de un compilador (poco probable). Tratamiento de ficheros informacin estructurada. de texto con

Procesadores de texto.
Traduccin de formatos de ficheros.

Gestin de bases de datos.


Procesamiento de lenguaje natural.

Formateo de texto y descripcin grfica