Procesador de Lenguaje

4
Compiladores 1, Segundo Semestre 2010 Universidad De San Carlos de Guatemala Sección A Página 1 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. Intérprete [No genera código adicional]: 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. Es más sencillo de implementar. No es necesario tener en memoria todo el código 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 Avanzado Incorporan un paso previo de análisis de todo el programa fuente. Generan posteriormente un lenguaje ejecutado por el parser. Usan lenguajes mas avanzados ya permiten optimización de código. Interprete Incrementales Dirigidos a lenguajes que no pueden compilarse. 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] Interprete Programa Fuente Resultados

description

Estructura de un Compilador, Interprete y tipos de Interpretes ,Estructura interna del proceso de compilacion, Fases del proceso de compilacion

Transcript of Procesador de Lenguaje

Page 1: Procesador de Lenguaje

Compiladores 1, Segundo Semestre 2010

Universidad De San Carlos de Guatemala

Sección A Página 1

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.

Intérprete [No genera código adicional]: 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.

• Es más sencillo de implementar.

• No es necesario tener en memoria todo el código 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

Avanzado

Incorporan un paso previo de análisis de todo el programa fuente.

• Generan posteriormente un lenguaje ejecutado por el parser.

• Usan lenguajes mas avanzados ya permiten optimización de

código.

Interprete

Incrementales

Dirigidos a lenguajes que no pueden compilarse.

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

Interprete

Programa

Fuente Resultados

Page 2: Procesador de Lenguaje

Compiladores 1, Segundo Semestre 2010

Universidad De San Carlos de Guatemala

Sección A Página 2

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.

Tipos de Compiladores:

Compiladores Cruzados Generan código para un sistema distinto del que están

funcionando.

Compiladores Optimizadores Realizan cambios en el código para mejorar su eficiencia, pero

manteniendo la funcionalidad del programa original.

Compiladores de una sola

pasada

Generan el código maquina a partir de una única lectura del

código fuente.

Compiladores de Varias

Pasadas

Necesitan leer el código fuente varias 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.

Los Compiladores tienen 2 fases:

Fase de Análisis: Verifica el código fuente haciendo un análisis de los componentes léxicos, luego

agrupa los elementos en tokens y se verifica su estructura semántica y sintáctica.

Fase de Síntesis: Después de la fase de análisis algunos compiladores generan representación

intermedia del programa fuente que tiene como característica fácil de producir y fácil de traducir a

programa objeto. Luego se trata de mejorar el código intermedio de modo que ejecute un código

maquina más fácil de ejecutar.

Compilacion

Programa

Fuente

Programa

Objeto

FUENTE DESTINO

Análisis Síntesis

Page 3: Procesador de Lenguaje

Compiladores 1, Segundo Semestre 2010

Universidad De San Carlos de Guatemala

Sección A Página 3

Programa Fuente

Programa Objeto

Análisis Léxico

Análisis Sintáctico

Análisis Semántico

Lee los caracteres de entrada y elabora como salida una secuencia de

componentes léxicos que son utilizadas en el análisis sintáctico.

Componentes Léxicos: Identificadores, palabras reservadas,

operadores lógicos, símbolos especiales, constantes etc.

Analiza el orden de un lenguaje con sus reglas que son prescritas por

estructura bien definida(árbol sintáctico a partir de una gramática).

Una gramática da una especificación sintáctica precisa y fácil de

entender de un lenguaje de programación.

Verifica el contexto en el que se encuentra cada sentencia sintáctica.

Se verifican:

- Comprobación de Tipos

- Alcance y nombre de las variables

- Sobrecarga de operadores

Generación de

código intermedio La generación de código intermedio es una representación

intermedia, para una maquina abstracta.

Codigo de tres direcciones: Una secuencia de operaciones que tiene

como máximo 3 operadores.

Optimización de

código intermedio La optimización de código es la verificación que se hace del código ya

generado para mejora la velocidad al momento de la ejecución.

Existen algunas reglas para optimizar:

� Elimina la reescritura de código

� Eliminación de código inalcanzable

� Optimización de temporales

Generación de

Código Traduce el código intermedio a código ensamblador.

Las posiciones de memoria se seleccionan para cada una de las

variables usadas en el programa.

Análisis

Síntesis

Page 4: Procesador de Lenguaje

Compiladores 1, Segundo Semestre 2010

Universidad De San Carlos de Guatemala

Sección A Página 4

Tabla de Simbolos:

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)

Compiladores Vs Intérpretes

Compilador Interprete

• Una única compilación.

• Mayor velocidad ejecución.

• Mayor detalle de errores.

• Mayor consumo de memoria.

• Interpretación en ejecución.

• Menor velocidad de ejecución.

• Menor detalle de errores.

• Menor consumo de memoria.