Upload
david-lopez
View
240
Download
0
Embed Size (px)
DESCRIPTION
Describe las fases en la construcción de un compilador
Citation preview
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)