Compiladores: Un Análisis General
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7,2 KB
1. ¿Qué es un Traductor?
Un traductor es un programa que recibe como entrada código en un lenguaje escrito y produce como salida código en otro lenguaje.
2. Ejemplos de Traductores
Algunos ejemplos de traductores son los ensambladores y los compiladores.
3. ¿Qué es un Ensamblador?
Un ensamblador es un programa que traduce código de un lenguaje ensamblador a lenguaje máquina.
4. Definición de un Lenguaje de Programación
Un lenguaje de programación se define por dos componentes:
- Sintaxis del lenguaje
- Semántica del lenguaje
5. Estructura de un Compilador
La estructura de un compilador se compone de las siguientes etapas:
- Código fuente
- Preprocesador
- Compilador
- Código en ensamblador
- Ensamblador
- Código objeto
- Ligador
- Código ejecutable
6. Etapa de Análisis Léxico
El análisis léxico consiste en leer los caracteres del programa fuente y agruparlos en cadenas que representan los componentes léxicos (tokens).
7. Etapa de Análisis Sintáctico
En el análisis sintáctico, se agrupan los componentes léxicos en frases gramaticales que el compilador utiliza para sintetizar la salida.
8. Etapa de Análisis Semántico
El análisis semántico detecta instrucciones que, aunque tengan una estructura sintáctica correcta, carecen de significado para la operación implicada.
9. Etapa de Código Intermedio
La etapa de código intermedio genera una representación intermedia explícita del programa fuente una vez realizadas las fases de análisis.
10. Etapa de Generación de Código
La generación de código produce el código objeto, que generalmente consiste en código en lenguaje máquina o en lenguaje ensamblador.
11. Tabla de Símbolos
La tabla de símbolos es una estructura de datos que contiene un registro por cada identificador. Cada registro incluye los campos para los atributos del identificador.
12. Manejador de Errores
El manejador de errores gestiona de forma centralizada los errores de cada fase del proceso de compilación.
13. Analizador Léxico (Analizador Lineal)
El analizador léxico, también conocido como analizador lineal, crea tokens de una secuencia de caracteres de entrada y los transforma en una secuencia de componentes.
14. Tipos de Tokens
Los tokens se dividen en:
- Tiras específicas: Solo tienen tipo.
- Tiras no específicas: Tienen tipo y valor.
15. Función del Analizador Léxico
El analizador léxico crea tokens de una secuencia de caracteres de entrada.
16. Transformaciones del Analizador Lineal
El analizador lineal transforma la secuencia de símbolos de entrada en una secuencia de componentes.
17. Construcción de un Analizador Lineal
Las fases para la construcción de un analizador lineal son:
- Definición de todas las palabras reservadas del lenguaje.
- Construcción del autómata en base a las palabras reservadas.
- Construcción de la tabla de transiciones.
18. Proceso de Análisis Léxico
El proceso de análisis léxico se refiere al trabajo que realiza el escáner con relación al procesador de compilación.
19. Objetivo del Parser
El objetivo del parser es generar un árbol de sintaxis del programa fuente, tal como ha sido definido por una gramática.
20. ¿Qué es un Patrón?
Un patrón representa la regla para que una secuencia de caracteres sea considerada una unidad léxica.
21. ¿Qué es un Lexema?
Un lexema es el valor actual de un conjunto de caracteres que satisfacen un patrón.
22. ¿Qué es un Token o Ficha?
Un token o ficha es un grupo de caracteres con alguna relación entre sí, compuesto por el tipo de token y su valor.
23. ¿Qué son las Unidades Léxicas?
Las unidades léxicas son las categorías en que se clasifican las cadenas de caracteres válidas en un lenguaje.
24. Rol del Analizador Léxico
El analizador léxico realiza su procesamiento y envía los resultados al analizador gramatical.
25. Descripción de un Patrón
Un patrón representa la regla para que una secuencia de caracteres sea considerada una unidad léxica.
26. Aceptador de Estado Finito (Autómata Finito)
Un aceptador de estado finito o autómata finito es un modelo matemático que describe cómo se reconocen (o aceptan) los tokens.
27. Diagrama de Estado Finito (Diagrama de Transición)
Un diagrama de estado finito o diagrama de transición representa el aceptor para un número con al menos un dígito después del punto decimal. Tiene estructuras iniciales, finales e intermedias.
28. Nodos
Los nodos representan los estados del aceptor de estado finito.
29. Arcos
Los arcos indican las transiciones de estado.
30. Estado de Aceptación
Los estados finales son los estados de aceptación.
31. Construcción de un Diagrama de Transición
Para construir un diagrama de transición, se debe asegurar que a cada estado se llegue con el mismo conjunto de caracteres en todas las ocasiones en que haya una transición.
32. Descripciones Informales de Unidades Léxicas
Las descripciones informales de unidades léxicas incluyen: identificador, comentario, EOF (fin de archivo) y error.
33. Caracteres Selectores para cada Patrón
Los caracteres selectores para cada patrón (identificador, comentario, EOF y error) son los mismos que los mencionados anteriormente.
34. Representación de Información en un Diagrama de Transición
La información en un diagrama de transición se representa mediante: buffer = primer bloque, buffer + n/2 = segundo bloque, buffer + n = tercer bloque.
35. Tabla del Analizador Léxico
En la tabla del analizador léxico, los estados finales o de aceptación de las unidades léxicas quedan sin información en las columnas, ya que no existe una transición al reconocer o aceptar un patrón.
36. Funciones del Analizador Léxico
El analizador léxico utiliza las siguientes funciones:
- Inspecciona: Regresa un carácter aceptado por ap pero no lo incrementa.
- Avanza: No regresa nada, pero incrementa el valor de ap para estar en el siguiente símbolo a leer.
37. Memoria en el Analizador Léxico
La memoria en el analizador léxico permite depositar imágenes del contenido del archivo del programa fuente. Las funciones inspecciona y avanza se realizan directamente en la RAM.