Fases de un compilador
Fases de un compilador
Lenguajes y autómatas
Iván Rojas Ramírez, José Mario Miranda Perfecto, Jorge Hugo Murrieta Martínez
26/09/2014
Tabla de contenido
Introducción ....................................................................................................................................... 1
Análisis léxico..................................................................................................................................... 2
Análisis sintáctico ............................................................................................................................... 2
Análisis semántico............................................................................................................................... 3
Generación de código intermedio ...................................................................................................... 3
Optimizador de código ........................................................................................................................ 4
Generador de código........................................................................................................................... 4
Conclusión .......................................................................................................................................... 5
Bibliografía ......................................................................................................................................... 6
1
Introducción
Los compiladores son programas decomputadora que traducen de un lenguaje a otro. Un compilador toma como su entrada un programa escrito en lenguaje fuente y produce un programa equivalente escrito en lenguaje objeto.
Generalmente al lenguaje fuente se le asocia como lenguaje de alto nivel, mientras al lenguaje objeto se le conoce como código objeto (código de maquina) escrito específicamente para una maquina objeto. A lo largo delproceso de traducción el compilador debe informar la presencia de errores en el lenguaje fuente.
Diseñar y desarrollar un compilador, no es tarea fácil, y quizás pocos profesionales de la computación se vean involucrados en esta tarea.
No obstante, los compiladores se utilizan en casi todas las formas de la computación y cualquiera involucrado en esta área debería conocer la organización y elfuncionamiento básico de un compilador.
2
Análisis léxico
En esta fase, la cadena de caracteres que constituye el programa fuente se lee de izquierda a derecha y se agrupa en componentes léxicos, que son secuencias de caracteres que tienen un significado atómico; además el analizador léxico trabaja con la tabla de símbolos introduciendo en ésta los nombres de las variables.
Las palabras clave,identificadores, operadores, constantes numéricas, signos de puntuación como separadores de sentencias, llaves, paréntesis, etc… son diversas clasificaciones de componentes léxicos.
Por ejemplo la siguiente instrucción en código C: a[índice] = 4 + 2;
Genera los siguientes componentes léxicos:
Análisis sintáctico
Determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje yobtiene la estructura jerárquica del programa en forma de árbol, donde los nodos son las construcciones de alto nivel del lenguaje.
Se determinan las relaciones estructurales entre los componentes léxicos, esto es semejante a realizar el análisis gramatical sobre una frase en lenguaje natural. La estructura sintáctica la definiremos mediante las gramáticas independientes del contexto.
aidentificador
[
Corchete de apertura
índice
Identificador
]
Corchete de cierre
=
Operador de asignación
4
numero
+
Operador suma
2
numero
;
Punto y coma
3
Como ejemplo consideremos la línea de código C anterior. Representa un elemento estructural denominado expresión, la cual es una expresión de asignación compuesta de una expresión de subíndice a la izquierda y una expresión aritmética...
Regístrate para leer el documento completo.