Catégories : Tous - compilador - código - sintaxis - análisis

par Guillermo Acuña Almendariz Il y a 3 années

1000

Etapas del Compilador3

En el proceso de compilación de un programa, se siguen varias etapas cruciales para transformar el código fuente en código objeto ejecutable. Una de las primeras fases es el análisis sintáctico, donde se verifica que la sintaxis del programa esté correctamente formada.

Etapas del Compilador3

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