Día, Fecha: Lunes, 22/01/2024
Hora de inicio: 14:50
Organización de Lenguajes y Compiladores 1
Sección N
Walter Alexander Guerra Duque
Temas para la Clase de Hoy
Presentación
Programa del Curso y Ponderación de
Laboratorio
Conceptos Generales
Procesadores de Lenguaje, Intérpretes y
Compiladores
Compiladores
Fase de Análisis, Fase de Síntesis
Explicación
Presentación
Programa de Laboratorio y Ponderación
Conceptos Generales
Conceptos Generales
Procesador de Lenguaje
Es un Programa que puede leer un programa en un lenguaje
fuente y producir una salida.
Intérprete Compilador
Lee el código fuente y lo Lee el código fuente y lo traduce a
ejecuta directamente sin otro equivalente en otro lenguaje.
generar ningún código. Comúnmente a Lenguaje Máquina
Compilador
1. Analizar y Traducir 2. Ejecutar
Ejemplos:
C, C++, Golang, Rust
Intérprete
Analizar y Ejecutar
Ejemplos:
Javascript, Python, Ruby
Compilador Híbrido
Compila e Interpreta Ejemplo: Java
Fases del Compilador
Fases del Compilador
Análisis Léxico
Lee el flujo de caracteres que componen el
programa fuente y los agrupa en secuencias
significativas.
Análisis Sintáctico
Utiliza los componentes de los tokens
producidos por el analizador de léxico para
crear una representación intermedia en forma
Análisis Semántico
de árbol que describa la estructura gramatical
del flujo de tokens.
Utiliza el árbol sintáctico y la información en
la tabla de símbolos para comprobar la
consistencia semántica del programa
fuente con la definición del lenguaje
Generación de Código Intermedio
Después del análisis sintáctico y semántico del programa fuente, muchos
compiladores generan una representación intermedia similar al código máquina.
Esta representación intermedia debe ser fácil de producir y fácil de traducir.
Optimización de Código
Trata de mejorar el código intermedio, de manera que se produzca un mejor
código destino. Por lo general, mejor significa más rápido, pero pueden lograrse
otros objetivos, como un código más corto, o un código de destino que consuma
menos poder
Generación de Código
El generador de código recibe como entrada una
representación intermedia del programa fuente y la asigna
al lenguaje destino.
Tabla de Símbolos
La tabla de símbolos es una estructura de
datos que contiene un registro para cada
nombre de variable, con campos para los
atributos del nombre
Manejador de Errores
Detecta e informa de errores que se
produzcan durante la fase de análisis. Debe
generar mensajes significativos y reanudar
el análisis.
Fases del Intérprete
Fases del Compilador Híbrido
Fases del Compilador
Para Compi1
Fase de Análisis
- Análisis Léxico
- Análisis Sintáctico
- Análisis Semántico
Para Compi2
Fase de Síntesis
- Generador de Código Intermedio
- Optimizador de Código
- Generador de Código
¿Cómo se implementa?
Análisis Léxico
Programa fuente
Analizador Léxico
(JFLEX)
Lista de Tokens
Análisis Sintáctico
Analizador
Sintáctico
(CUP)
Árbol Sintáctico:
Estructura de Datos
Análisis Semántico
Analizador
Semántico
(JAVA)
¿Dudas?
Hable ahora o escriba en el Foro