1

Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Embed Size (px)

DESCRIPTION

ensayo

Citation preview

Page 1: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Universidad Mariano Gálvez Facultad de Ingeniería en Sistemas de Información Compiladores 090457 Sección “A” Ing. Benigno Samuel Soto García

Ensayo I, Unidad I Conceptos Generales

Compiladores

Carlos Gilberto Menéndez Luna 090-01-2822

Guatemala, 20 de febrero de 2,015

Page 2: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Conceptos Generales Compiladores

INTRODUCCION

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de

programación a otro lenguaje de programación, generando un programa equivalente que la máquina

será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también

puede ser un código intermedio, o simplemente texto. Este proceso de traducción se conoce como

compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de

alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un

programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser

humano, para luego compilarlo a un programa más manejable por una computadora.

La construcción de un compilador involucra la división del proceso en una serie de fases que variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del programa fuente y la síntesis del programa objeto.

Page 3: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

LOS PROCESOS DE ANALISIS Y SINTESIS DE UN COMPILADOR

Proceso de Síntesis de un Compilador: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata de código intermedio o de código objeto) y de Optimización de Código (en las que se busca obtener un código lo más eficiente posible).

Proceso de Análisis de un Compilador: Se trata de la comprobación de la corrección del programa fuente, incluye las fases correspondientes al Análisis léxico (que consiste en la descomposición del programa fuente en componentes léxicos), Análisis sintáctico (agrupación de los componentes léxicos en frases gramaticales ) y Análisis semántico (comprobación de la validez semántica de las sentencias aceptadas en la fase de Análisis Sintáctico).

Las tareas de análisis y síntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.

Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir de los resultados de la fase de análisis, realizada por el Front End.

LAS FASES DE UN COMPILADOR

Análisis Semántico: Este análisis es más difícil de formalizar, determina el tipo de los resultados intermedios, comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre sí.

Análisis Léxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo indicando el token por cada uno de los elementos reconocidos o el error en caso de no reconocer. Este análisis no logra detectar muchos errores por su característica.

Análisis Sintáctico: En esta fase se analiza la estructura de las expresiones en base a gramáticas. Aquí ya se puede determinar si una estructura por ejemplo una expresión matemática mal formada. El análisis que se realiza es jerárquico es decir en base a árboles de derivación que se obtienen de las mismas gramáticas.

Page 4: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Generación de Código Intermedio: El código intermedio es una representación en base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimización de código.

a=b+c

1: + b c T1

2: = a T1

Optimización de Código: Consiste en realizar una mejora en el código intermedio, para reducir el número de líneas y hacer que la ejecución sea más rápida

a=b+c

1: + b c a

Generación de Código: Llegamos a la generación de código ensamblador o código máquina del procesador que nos interese por ejemplo:

a:=b+c

LOAD B

ADD C

STORE A

EL AGRUPAMIENTO DE LAS FASES DE UN COMPILADOR

Etapa Inicial: son las fases o partes de las fases que dependen principalmente del lenguaje fuente y son

independientes de la maquina objeto, en esta parte se incluyen los análisis léxicos y sintácticos, la

creación de la tabla de símbolos, el análisis semánticos y la generación de código, manejo de errores de

cada una de las fases.

Etapa Final: son aquellas partes del compilador que dependen de la maquina objeto y no dependen del

lenguaje fuente si no del lenguaje intermedio.

Pasadas: Es la lectura de un archivo de entrada y la escritura de un archivo de salida.

Page 5: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Reducción del número de pasadas: se desea tener pocas pasadas ya que la lectura y escritura de los

archivos lleva tiempo, por tal motivo se agrupan las fases en una sola pasada.

HERRAMIENTAS PARA LA CONSTRUCCION DE COMPILADORES

La siguiente es una lista de algunas herramientas útiles para la construcción de compiladores:

1. Generadores de analizadores sintácticos: Estos generadores producen analizadores sintácticos, a partir

de una entrada fundamentada en una gramática independiente del contexto.

2. Generadores de analizadores léxicos. Estas herramientas generan automáticamente analizadores

léxicos, por lo general a partir de una especificación basada en expresiones regulares.

3. Dispositivos de traducción dirigida por la sintaxis. Estos producen grupos de rutinas que recorren el

árbol de análisis sintáctico, generando código intermedio.

4. Generadores automáticos de código: Estas herramientas toman un conjunto de reglas que definen la

traducción de cada operación del lenguaje intermedio al lenguaje de máquina para la maquina objeto. Las

reglas deben incluir suficiente detalle para poder manejar los distintos métodos de acceso posibles a los

datos.

5. Dispositivos para análisis de flujo de datos: Mucha de la información necesaria para hacer una buena

optimación de código implica hacer un “análisis de flujo de datos”, que consiste en la recolección de

información sobre la forma en que se transmiten los valores de una parte de un programa a cada una de

las otras partes.

Page 6: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

CONCLUSION

Un compilador, requiere de muchas cosas una de ellas es la sintaxis y lenguajes específicos, ya que, al

igual que el lenguaje humano, si no lo escribimos correctamente el compilador no hará lo que deseamos.

Y que en la compilación hay dos partes: Análisis y Síntesis. La parte del análisis divide al programa fuente

en sus elementos componentes y crea una representación intermedia.

.

Page 7: Compiladores Ensayo 1 Unidad 1 20 Feb 2015

Bibliografía y fuentes de información

http://es.wikipedia.org/wiki/Compilador

http://marelizabeth.blogspot.com/2009/05/herramientas-para-la-construccion-de.html

https://faustol.wordpress.com/2007/04/10/fases-de-un-compilador/