clasificacion de compiladores

2
 José Miguel Chicas Carías Carné 200412849 Compiladores 1 Sección ³C´ Fecha entrega: 20 Julio 2009 TAREA 1 Compilador: es un programa de computadora que toma como entrada un texto escrito en un lenguaje de alto nivel (llamado lenguaje fuente) y lo traduce a otro lenguaje de bajo nivel (llamado lenguaje objeto). Clasificación de los compiladores En un sentido más amplio, un compilador traduce las instrucciones que el usuario hace (en alto nivel) a instruccion es que la computadora pueda interpretar y ejecutar (código binario). Por lo tanto estas instrucciones son pulsaciones electrónicas ejecutables y para cada lenguaje de programación se requiere un compilador separado. Los compiladores pueden ser: a) Una sola pasada: se examina el código fuente una vez, generando el código o programa objeto.  b) Pasadas múltiple s: se r equieren paso s intermedios para producir un código en otro lenguaje , y una pasada final  para producir y optimizar el código producido durante los pasos anteriores. c) Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa. d) Incrementales: generan un código objeto instrucción por instrucción cuando el usuar io teclea cada orden individual. e) Ensamblador: el lenguaje fuente es el lenguaje ensamblador (assembler) y posee estructura sencilla. f) Compilador cruzado: genera código en lenguaje objeto (binario) para una máquina diferente de la que se está usando para compilar. Un ejemplo e s construir un compilador de Pascal q ue genere código para MS-DOS y que el compilador funcione en LINUX y se haya escrito en C++. g) Compilador con montador: compila distintos módulos de forma independiente y después es capaz de enlazarlos. h) Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Lógicamente no se  puede ejecutar a la prime ra vez. En otras palabras hace ampliaciones al lenguaje, mejora el código existente, etc. i) Metacompilador: recibe como entrada las especificaciones del lenguaje para que el que se desea obtener un compilador y gene ra como salida el com pilador deseado. Sin em bargo tiene una dificultad de unir la generación de código con la parte de análisis. Lo que si se ha hecho gracias a estos me tacompilad ores son el de sarr ollo de analizadores léxicos y sintácticos. Un ejemplo: Generadores de analizadores léxicos LEX Analizadores sintácticos: YACC  j) Descompilador: programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel. En otras palabras hace las funciones inversas a un compilador.

Transcript of clasificacion de compiladores

Page 1: clasificacion de compiladores

5/8/2018 clasificacion de compiladores - slidepdf.com

http://slidepdf.com/reader/full/clasificacion-de-compiladores 1/3

 

José Miguel Chicas Carías

Carné 200412849Compiladores 1 Sección ³C´ Fecha entrega: 20 Julio 2009

TAREA 1Compilador: es un programa de computadora que toma como entrada un texto escrito en un lenguaje de altonivel (llamado lenguaje fuente) y lo traduce a otro lenguaje de bajo nivel (llamado lenguaje objeto).

Clasificación de los compiladoresEn un sentido más amplio, un compilador traduce las instrucciones que el usuario hace (en alto nivel) ainstrucciones que la computadora pueda interpretar y ejecutar (código binario). Por lo tanto estas instrucciones

son pulsaciones electrónicas ejecutables y para cada lenguaje de programación se requiere un compilador 

separado. Los compiladores pueden ser:

a) Una sola pasada: se examina el código fuente una vez, generando el código o programa objeto.

 b) Pasadas múltiples: se requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.

c) Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.

d) Incrementales: generan un código objeto instrucción por instrucción cuando el usuario teclea cada orden

individual.

e) Ensamblador: el lenguaje fuente es el lenguaje ensamblador (assembler) y posee estructura sencilla.

f) Compilador cruzado: genera código en lenguaje objeto (binario) para una máquina diferente de la que se estáusando para compilar. Un ejemplo es construir un compilador de Pascal que genere código para MS-DOS y que

el compilador funcione en LINUX y se haya escrito en C++.

g) Compilador con montador: compila distintos módulos de forma independiente y después es capaz deenlazarlos.

h) Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Lógicamente no se puede ejecutar a la primera vez. En otras palabras hace ampliaciones al lenguaje, mejora el código existente, etc.

i) Metacompilador: recibe como entrada las especificaciones del lenguaje para que el que se desea obtener uncompilador y genera como salida el compilador deseado. Sin embargo tiene una dificultad de unir la generación

de código con la parte de análisis. Lo que si se ha hecho gracias a estos metacompiladores son el desarrollo de

analizadores léxicos y sintácticos. Un ejemplo:

Generadores de analizadores léxicos LEX

Analizadores sintácticos: YACC

 j) Descompilador: programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel.

En otras palabras hace las funciones inversas a un compilador.

Page 2: clasificacion de compiladores

5/8/2018 clasificacion de compiladores - slidepdf.com

http://slidepdf.com/reader/full/clasificacion-de-compiladores 2/3

 

Tabla de símbolos:Es una estructura de datos que contiene un registro para cada identificador. Esta estructura permite encontrar rápidamente el registro de cada identificador y almacenar o consultar datos rápidamente en un registro. En otras

 palabras reconoce los símbolos que se han definido en la gramática válida para el programa.

Cuando el analizador léxico detecta un identificador (token) en el programa fuente, el identificador se introduceen la tabla de símbolos. Ya que estos identificadores pueden proporcionar información sobre la memoria

asignada, su tipo, ámbito y en el caso de nombres de procedimiento, cosas como el número y tipos de susargumentos. Sin embargo, los atributos de un identificador no se pueden determinar en el análisis léxico. Un

ejemplos en una declaración en Pascal como var posición, inicial, velocidad: real; el tipo real no se conocecuando el analizador léxico encuentra posición inicial y velocidad.

En el análisis semántico y la generación de código intermedio, se necesita saber cuáles son los tipos de losidentificadores para comprobar si el programa fuente los usa de forma válida y así generar operaciones

apropiadas. El generador de código por lo general, introduce y utiliza información detallada sobre la memoria

asignada a los identificadores.

En conclusión la tabla de símbolos son los registros que se han definido en la gramática válida para el programadeseado, para que en el análisis léxico se reconozcan identificadores válidos para que luego en el análisis

sintáctico y semántico sean válidos, y así generar un código apropiado.

Detector o manejador de errores:Es una de las misiones más importantes de un compilador, y al mismo tiempo es lo más difícil de realizar. Seusa en las etapas de análisis sintáctico y semántico, aunque los errores se pueden descubrir en cualquier fase. Es

difícil por dos motivos:

-  Unos errores ocultan otros-  Un error provoca una avalancha de muchos errores que se solucionan con el primero.

Es conveniente un buen manejo de errores y que el compilador detecte TODOS los errores que tiene el programay no se pare en el primero que encuentre. Hay dos criterios a seguir a la hora de manejar errores:

-  Pararse al detectar el primer error, aunque no es muy conveniente (eficiencia).-  Detectar todos los errores de una pasada.

Procedimiento:

En la fase léxica se pueden detectar errores donde los caracteres no forman ningún componente léxico dellenguaje (identificador o token).

Los errores donde en la fase de análisis léxico se violan las reglas de estructura (sintaxis) del lenguaje sondeterminados por la fase de análisis sintáctico.

En el análisis semántico, el compilador intenta detectar construcciones que tengan la estructura sintáctica

correcta, pero que tengan significado para la operación implicada, por ejemplo, si se intenta sumar dosidentificadores, uno de los cuales es el nombre de una matriz, y el otro el nombre de un procedimiento.

BIBLIOGRAFÍA-  Compiladores, Principios, técnicas y herramientas, Alfred V. Aho, Ravi Sethi, Jeffrey D.

Ullman. Addison ± Wesley iberoamericana.-  Compiladores: Conceptos Fundamentales. B. Teufel, S. Schmidt, T. Teufel. Addison

Wesley Iberoamericana.

Page 3: clasificacion de compiladores

5/8/2018 clasificacion de compiladores - slidepdf.com

http://slidepdf.com/reader/full/clasificacion-de-compiladores 3/3