Está en la página 1de 18

PROCESADOR DE LENGUAJE

Compiladores 1
Sección A
Procesador de Lenguaje
• Los procesadores de lenguaje son
todos los programas que a través de
una entrada escrita en un lenguaje de
programación pueden manipular
herramientas de software y hardware
de un computador.
• Es más sencillo de implementar.
Interprète • No es necesario tener en
memoria todo el código fuente.

• Es un programa que simultáneamente


analiza y ejecuta un programa escrito
en lenguaje fuente.
• La primera fase de análisis es igual que
el compilador.
Inter
prete
Programa
Resultados
Fuente
Interprete Puro El proceso es a través del análisis de cada sentencia y
su ejecución 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 análisis 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 ejecución.
 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 programación:
• Lenguajes con características
especiales y cuya compilación no
es efectiva. [Python, Ruby, Perl]
Compilador
• Los compiladores son programas que
reciben un lenguaje fuente y lo
transforman a un programa objeto,
que puede ser ensamblador o de
código máquina.

Programa Compi Programa


lacion
Fuente Objeto
Tipos de Compiladores
Compiladores Generan código para un sistema
Cruzados distinto del que están funcionando.

Compiladores Realizan cambios en el código para


Optimizadores mejorar su eficiencia, pero
manteniendo la funcionalidad del
programa original.
Compiladores de Generan el código maquina a partir de
una sola pasada una única lectura del código fuente.

Compiladores de Necesitan leer el código fuente varias


Varias Pasadas veces antes de poder producir el
código maquina.
Compiladores JIT Forman parte de un intérprete y
compilan partes del código según se
necesitan.
Programa Fuente

Análisis Léxico

Análisis Sintáctico

Análisis Semántico
Tabla de Manejador
Símbolos de Errores
Código Intermedio

Optimizador de Código

Generador de Código

Programa Objeto
Análisis Léxico
Análisis Léxico
Análisis Sintáctico

Análisis Semántico Lee los caracteres de entrada y


Código Intermedio
elabora como salida una secuencia
de componentes léxicos que son
Optimizador de Código
utilizadas en el análisis sintáctico
Generador de Código Componentes Léxicos: Identificadores,
palabras reservadas, operadores
lógicos, símbolos especiales,
constantes etc..
Análisis Léxico

Análisis Sintáctico Análisis Léxico


Análisis Semántico Estas herramientas nos ayudara a la
implementación del análisis léxico:
Código Intermedio
Jlex , Flex, Jflex, Lex:
Optimizador de Código
• Manejar el archivo fuente (abrirlo,
Generador de Código leerlo, cerrarlo).
• Ignorar caracteres no relevantes
• Agrupar resto de los caracteres
• Rechazar agrupaciones inválidas y clasificar las
válidas
• Manejo y Recuperación de errores
Análisis Léxico

Análisis Sintáctico Análisis Sintáctico


Análisis Semántico
• Analiza el orden de un lenguaje con
Código Intermedio sus reglas que son prescritas por
Optimizador de Código
estructura bien definida.
• Una gramática da una especificación
Generador de Código
sintáctica precisa y fácil de entender
de un lenguaje de programación.
Análisis Léxico

Análisis Sintáctico Análisis Sintáctico


Análisis Semántico
Estas herramientas nos ayudara a la
implementación del análisis Sintactico:
Código Intermedio
Bison, Yacc, Happy, JavaCC, ANTLR y CUP
Optimizador de Código • Creación del Árbol del análisis sintáctico.
Generador de Código
• Recuperación de errores.
• Comprobar que la secuencia de
componentes léxicos cumple las reglas
de la gramática.
Análisis Léxico

Análisis Sintáctico Análisis Semántico


Análisis Semántico
• se encarga de detectar la validez
Código Intermedio semántica del árbol generado
Optimizador de Código
del análisis sintáctico:
Ejemplo:
Generador de Código
• Declaración de identicadores,
comprobación: de tipos, del flujo
de control, de unicidad.
Análisis Léxico

Generación de Código
Análisis Sintáctico

Intermedio
Análisis Semántico
• El generador de código intermedio
Código Intermedio transforma un árbol semántico en
Optimizador de Código
una representación en un lenguaje
intermedio cercano al código objeto.
Generador de Código
Código 3 direcciones:
• Es una secuencia de proposiciones
de la forma general:
• x := y op z
op representa cualquier operador
Análisis Léxico

Análisis Sintáctico
Optimizador de Código
Análisis Semántico
• La optimización de código es la
verificación que se hace del código
Código Intermedio
ya generado para mejora la
Optimizador de Código velocidad al momento de la
ejecución.
Generador de Código
• Existen algunas reglas para
optimizar:
• Elimina la reescritura de código
• Eliminación de código inalcanzable
• Optimización de temporales
Análisis Léxico

Análisis Sintáctico Generador de Código


Análisis Semántico

Código Intermedio
• Traduce el código intermedio a
código ensamblador.
Optimizador de Código
• Las posiciones de memoria se
Generador de Código seleccionan para cada una de las
variables usadas en el programa.
Tabla de Símbolos
• Almacena la estructura de datos:
• Variables, Constantes, Etiquetas, Tipos,
Valores, Asignación de valores.
• Operaciones:
• Insertar símbolo.
• Consultar símbolo.
• Borrar símbolo.
Detección de Errores:
• El manejador de errores permite establecer si
el programa fuente posee algún error ya sea
de tipo:
• léxico (caracteres no definidos),
• sintáctico (estructura inadecuada)
• semántico (contexto no apropiado)

También podría gustarte