clasificacion de compiladores
-
Upload
miguel-chicas -
Category
Documents
-
view
1.054 -
download
0
Transcript of 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.
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.
5/8/2018 clasificacion de compiladores - slidepdf.com
http://slidepdf.com/reader/full/clasificacion-de-compiladores 3/3