Etapas del Compilador
Fases de un traductor y cambio en la representación
Análisis del programa fuente
Su lectura es de Izquierda a Derecha
Lo realiza el Analizador Léxico
Forma Tokens
Son cadenas de caracteres con un significado conjunto
Constituyen los datos de entrada para el análisis jerárquico
Análisis Léxico
Lee la secuencia de caracteres del
programa fuente y la convierte en una secuencia de tokens
La secuencia de caracteres toma el nombre de LEXEMA y son instancias de los tokens, por ejemplo los números 1234 ó 4553
Es la única que tiene acceso al código fuente del programa
Elimina los espacios en blanco que separan los tokens
Ejemplos de Tokens:
- Un identificador
- Una constante entera
- Un operador
- Una palabra clave
- Signos de puntuación
- Un operador formado por varios caracteres como "++"
Análisis Sintáctico
Es un analizador jerárquico, tambien llamado parser
Es la que recibe la secuencia de tokens generadas en la fase anterior y la vuelve a examinar.
El objeto de este nuevo análisis consiste en la detección de errores semánticos y sintácticos como la duplicidad de las variables, secuencia de tokens que no se ajustan a la gramática del lenguaje.
La misión del analizador sintáctico es comprobar que la sintaxis del programa fuente de entrada este bien formada.
Análisis Semántico
Se chequea el programa fuente buscando errores semánticos y recopilando información sobre los tipos de los datos para la siguiente fase
Un componente importante lo constituye el chequeo de tipos de datos
Se utiliza la estructura jerárquica creada por el analizador sintáctico para identificar los operadores y operandos de las expresiones.
Generador de Código Intermedio
Puede tener muchas formas posible
Ahora el código intermedio depende totalmente del ordenador con el que se trabaja ya que se basa en las instrucciones y arquitectura del procesador.
si en la fase anterior no se producen errores, el generador de codigo intermedio traduce el analisis resultante a un formato propio del compilador
Existen 2 propiedades principales
Facil de producir
Facil de traducir
Optimizador de Código Intermedio
Se trata de mejorar el código intermedio para que su ejecución sea más rápida
El código ocupa menos espacio
Generador de Código
Consiste en la generación de código
Código máquina reubicable
Lenguaje ensamblador
Se escogen posiciones de memoria para las variables utilizadas en el programa
Se traducen las instrucciones intermedias a instrucciones que entiende la máquina
Detección de Errores y
Emisión de Mensajes de Error
Es un mensaje de error que el compilador emite cuando detecta una anomalía o inconsistencia en cualquier fase del compilador.
Puede pararse al encontrar un error o intentar recuperar todos los errores de una pasada.
Manejo de la Tabla de Símbolos
Es una estructura de datos que contiene un registro por cada identificador con campos para cada uno de sus atributos
Debe permitir encontrar rápidamente el registro de cada identificador, y almacenar o consultar los datos
El Analizador Léxico puede incuir un nuevo registro en la tabla cada vez que detecte un nuevo identificador
Los atributos no podrán ser determinados durante el Análisis Léxico
Bibliografía
Jiménez Millán, J. A. (2014). Compiladores y procesadores de lenguajes. Servicio de Publicaciones de la Universidad de Cádiz. https://elibro.net/es/ereader/uguayaquil/33847?page=1
J. Corrales, E. Ponce, (2006), Técnicos de Soporte Informático de la Comunidad de Castilla Y León, Editorial Mad, S.L., Sevilla, España.