Want to create interactive content? It’s easy in Genially!
PRESENTACIÓN Fases de un compilador
EMANUEL MUÑOZ SANTANA
Created on January 26, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Memories Presentation
View
Pechakucha Presentation
View
Decades Presentation
View
Color and Shapes Presentation
View
Historical Presentation
View
To the Moon Presentation
View
Projection Presentation
Transcript
1.5 Fases de un compilador
Lenguajes y autómatas I
Integrantes:
- Victoria Gonzalez Bravo
- Emanuel Muñoz Santana
- Diego Alejandro Muñoz Aranzolo
- Maria Del Carmen Uribe Chavez
- Luis Angel Villeda Quijada
Empezar
Introducción
Introducción
Trabajo del compilador
Descripción de las fases del compilador
Detección de errores
Compilación
Compilación es el proceso de traducción del programa fuente a un programa objeto, el cual está codificado en lenguaje máquina.
El compilador
El compilador trabaja a través de la ejecución en secuencia de diferentes fases, cada una de las cuales produce un resultado o transformación del programa fuente. Tal modificación es necesaria para el arranque de la siguiente fase y así sucesivamente hasta la fase final.
Trabajo del compilador
Etapa 1 - Fase 1
Análisis léxico, lineal, morfológico, de exploración o scanner (en inglés).
La cadena de caracteres que constituye el programa fuente se lee carácter por carácter, de izquierda a derecha y de arriba hacia abajo, para crear un archivo de salida que contiene componentes léxicos, los cuales son secuencias de caracteres que tienen un significado colectivo.
Etapa 1 - análisis
En la etapa de análisis, cada fase separa los distintos elementos que integran el programa fuente para comprobar su correcta realización, y para verificar que no existan errores capaces de entorpecer la siguiente fase.
Etapa 1 - Fase 2
Análisis sintáctico, jerárquico o parser.
En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en colecciones anidadas, de acuerdo con el significado colectivo y según las gramáticas definidas para el lenguaje, con la finalidad de comprobar que la instrucción esté escrita correctamente.
Etapa 1 - Fase 3
Análisis semántico
En esta fase se realizan ciertas revisiones para garantizar que los componentes del programa se ajusten entre sí de modo significativo, por ejemplo, para asegurar la compatibilidad de los distintos tipos de variables en una expresión.
Etapa 2 - Síntesis
A partir del resultado de la etapa de análisis se construye el programa objeto, optimizando las instrucciones recibidas del programa fuente, el cual puede guardarse y ejecutarse cuando se desee, sin tener que traducirlo de nuevo. Las fases que comprende esta etapa son las siguientes
Etapa 2 - Fase 4
Generación de código intermedio.
Esta representación intermedia del programa objeto debe cumplir dos condiciones importantes: ser fácil de producir y fácil de traducir. La representación intermedia es llamada "código de tres direcciones", y funciona como un lenguaje ensamblador en donde cada posición de memoria puede actuar como un registro.
Etapa 2 - Fase 5
Optimización de código
Mejora la eficiencia del código intermedio, de modo que resulte un código de máquina más rápido de ejecutar, y con menor demanda de memoria.
Etapa 2 - Fase 6 (1)
Generador de código
Ésta es la fase final del compilador, y por lo general consiste en convertir el código intermedio en código máquina o código ensamblador. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa.
Etapa 2 - Fase 6 (2)
Generador de código
Después, cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de máquina que ejecutan la misma tarea. Un aspecto decisivo es la asignación de variables a registros.
Descripción de las fases del compilador
Proceso
El proceso produce un programa objeto que, como ya se mencionó, es la representación en lenguaje máquina del lenguaje de alto nivel. También están representados dos componentes importantes que ayudan al compilador como mecanismo de administración: la tabla de símbolos o identificadores, y la detección de errores.
Proceso
Tabla de simbolos
Consiste en un mecanismo que asocia valores o atributos según el nombre o clave que se le dé a cada uno de los elementos encontrados en el programa fuente. Estos atributos son, básicamente, una representación semántica del significado de los nombres que vamos a asociar. La tabla de símbolos también suele ser conocida como diccionario.
Tabla de simbolos
Esta tabla de símbolos o identificadores es un componente necesario del compilador, porque la definición del nombre o clave aparece solamente en un lugar del programa. Cuando se necesiten los atributos de los datos en cualquier lugar del compilador, lo único que se tiene que hacer para consultarlos es acudir a la tabla de símbolos.
Detección de errores
Situaciones donde se encuentran errores
Se pueden encontrar errores en todas las fases de la etapa inicial de compilación. Después de detectar un error, cada fase debe tratarlo de alguna forma para poder continuar la compilación y permitir la detección de más errores en el programa fuente.
Fase de análisis lexico
Detecta errores a partir de la identificación de caracteres que no forman algún componente léxico del lenguaje, o que no cumplen con un patrón o token definido por éste. En todos estos casos se asigna un token (con frecuencia identificado como ERLX o error léxico) para que la siguiente fase del analizador ignore la sintaxis del renglón en donde se encuentra el error léxico.
Fase de análisis sintático
Puede detectar errores donde la cadena de componentes léxicos no cumplen las reglas gramaticales de la estructura del lenguaje. Por ejemplo, ; error al representar en desorden u omisión los atributos a alguna palabra reservada. Al igual que el anterior en este renglón se asigna un token (esta vez llamado ERST o error sintáctico).
Fase de análisis semántico
El compilador detecta construcciones que tengan la estructura semántica correcta, pero que carezcan de significado para la operación implicada. Por ejemplo, que una variable se declare de tipo cadena y en el cuerpo del programa se esté utilizando en una expresión aritmética; la intención de sumar dos identificadores, uno de los cuales es el nombre de una matriz y el otro el nombre de un procedimiento. En esta fase se integra un token llamado ERSM o error semántico.
Bibliografía
Cantú Treviño, T. G., & Mendoza García, M. G. (2015). Teoría de autómatas: Un enfoque práctico. Pearson Educación de México, S. A. de C. V.
gracias