Beruflich Dokumente
Kultur Dokumente
Compiladores 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 ms sencillo de implementar.
No es necesario tener en memoria
todo el cdigo fuente.
Fuente
Interprete
Resultados
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
Compilacion
Objeto
Tipos de Compiladores
Compiladores
Cruzados
Compiladores
Optimizadores
Compiladores de
una sola pasada
Compiladores de
Varias Pasadas
Compiladores JIT
Programa Fuente
Flujo de caracteres
Estructura de un
Compilador
Anlisis Lxico
Flujo de tokens
Anlisis Sintctico
rbol sintctico
Anlisis Semntico
Tabla de
Smbolos
rbol sintctico
Cdigo Intermedio
Optimizador de Cdigo
Generador de Cdigo
Programa Objeto
Manejador
de Errores
Anlisis Lxico
Anlisis Sintctico
Anlisis Lxico
Primera Fase de un compilador
Anlisis Semntico
Cdigo Intermedio
Optimizador de Cdigo
Generador de Cdigo
Anlisis Lxico
Anlisis Sintctico
Anlisis Semntico
Cdigo Intermedio
Optimizador de Cdigo
Generador de Cdigo
Anlisis Lxico
Estas 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
Anlisis Lxico
Anlisis Sintctico
Anlisis Semntico
Cdigo Intermedio
Optimizador de Cdigo
Generador de Cdigo
Anlisis Sintctico
Segunda 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 Sintctico
Estas 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 z
op 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
Generador de Cdigo
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)