Las fases siguientes incluyen la información de los atributos
Manejo de errores
Generador de código intermedio
Las últimas tres fases se consideran como “la sección de síntesis del traductor”
Las primeras tres fases se conocen como “la sección de análisis de un traductor”
En la práctica algunas de las fases pueden estar agrupadas
En el gráfico se muestra la descomposición típica.
Programa objeto
Generador de código objeto
Manejo Tabla de Símbolos
Analizador semántico (analizador restricciones de contexto)
Analizador sintáctico o jerárquico (parser)
Analizador léxico o lineal (scanner)
Programa fuente
Un traductor trabaja en fases, cada una de las cuales transforma el programa fuente de una representación a otra.
Etapas del Compilador
In physics, energy is the quantitative property that must be transferred to an object in order to perform work on, or to heat, the object. Energy is a conserved quantity; the law of conservation of energy states that energy can be converted in form, but not created or destroyed
Ejemplo
Bibliografía
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.
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
Fases de un traductor y cambio en la representación
Manejo de la Tabla de Símbolos
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
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
Detección de Errores y
Emisión de Mensajes de Error
Puede pararse al encontrar un error o intentar recuperar todos los errores de una pasada.
Es un mensaje de error que el compilador emite cuando detecta una anomalía o inconsistencia en cualquier fase del compilador.
Generador de Código
Se traducen las instrucciones intermedias a instrucciones que entiende la máquina
Se escogen posiciones de memoria para las variables utilizadas en el programa
Consiste en la generación de código
Lenguaje ensamblador
Código máquina reubicable
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 Intermedio
Existen 2 propiedades principales
Facil de traducir
Facil de producir
Puede tener muchas formas posible
si en la fase anterior no se producen errores, el generador de codigo intermedio traduce el analisis resultante a un formato propio del compilador
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.
Análisis Semántico
Se utiliza la estructura jerárquica creada por el analizador sintáctico para identificar los operadores y operandos de las expresiones.
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
Análisis Sintáctico
La misión del analizador sintáctico es comprobar que la sintaxis del programa fuente de entrada este bien formada.
Es un analizador jerárquico, tambien llamado parser
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.
Es la que recibe la secuencia de tokens generadas en la fase anterior y la vuelve a examinar.
Análisis Léxico
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 "++"
Es la única que tiene acceso al código fuente del programa
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
Análisis del programa fuente
Forma Tokens
Son cadenas de caracteres con un significado conjunto
Constituyen los datos de entrada para el análisis jerárquico
Su lectura es de Izquierda a Derecha
Lo realiza el Analizador Léxico