Sie sind auf Seite 1von 18

PROCESADOR DE LENGUAJE

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.

Es un programa que simultneamente


analiza y ejecuta un programa escrito
en lenguaje fuente.
La primera fase de anlisis es igual que
el compilador.
Programa

Fuente

Interprete

Resultados

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
Incorporan un paso previo de anlisis de todo el
Avanzado
programa fuente.
Generan posteriormente un lenguaje ejecutado
por el parser.
Interprete
Dirigidos a lenguajes que no pueden compilarse.
Incrementales 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
Compilacion

Objeto

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.
Generan el cdigo maquina a partir de
una nica lectura del cdigo fuente.

Compiladores de
una sola pasada

Compiladores de
Varias Pasadas
Compiladores JIT

Necesitan leer el cdigo fuente varias


veces antes de poder producir el
cdigo maquina.
Forman parte de un intrprete y
compilan partes del cdigo segn se
necesitan.

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

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 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

Manejo y Recuperacin de errores

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

Traduce el cdigo intermedio a


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

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)

Das könnte Ihnen auch gefallen