Compiladores: Funcionamiento del Analizador Léxico y Estructura de la Tabla de Símbolos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,39 KB
Conceptos Fundamentales de Compiladores
Analizador Léxico y Lexicografía
1. ¿Qué es un analizador léxico?
R: Reconoce las palabras en función de una gramática regular, de manera que sus no terminales se convierten en los elementos de entrada de fases posteriores.
2. ¿Cómo trabaja el analizador léxico?
R: Consiste en leer los caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer el análisis.
3. ¿Cuál es la función principal de un analizador léxico?
R: Divide la secuencia de caracteres en palabras con significado propio y después convierte a una secuencia de terminales desde el punto de vista del analizador sintáctico, que es la entrada del analizador sintáctico.
4. ¿Qué otras funciones lleva a cabo el analizador léxico?
- Eliminar los comentarios del programa.
- Eliminar espacios en blanco, tabuladores, etc.
- Reconocer los identificadores de usuario, números, palabras reservadas y tratarlos correctamente con respecto a la tabla de símbolos.
- Llevar la cuenta del número de línea por la que va leyendo.
- Avisar de errores léxicos.
- Puede hacer funciones de preprocesador.
5. ¿Cuáles son las razones por las que se separa la fase de análisis lexicográfico y sintáctico?
- Un diseño sencillo es quizás la consideración más importante.
- Permite simplificar una u otra de dicha fase.
- Simplifica el analizador sintáctico.
6. ¿Cuál es la estructura del analizador lexicográfico?
( expresión regular 1 ) { acción 1 }
( expresión regular 2 ) { acción 2 }
( expresión regular 3 ) { acción 3 }
( expresión regular n ) { acción n }
8. ¿Qué es un lexema?
R: Es cada secuencia de caracteres concreta que encaja con un patrón, es decir, es como una instancia de un patrón.
9. ¿Qué es un token?
R: Es la terminal asociada a un patrón. Cada token se convierte en un número que es un código identificativo de cada patrón.
10. ¿Cuáles son las formas de crear un analizador léxico?
- Ad hoc (a pelo).
- Autómatas finitos (como en teoría de autómatas y lenguajes formales).
- Metacompilador (más fáciles): Le pasamos pares (exp. regular, {acción}). El metacompilador genera todos los autómatas finitos, los convierte a autómata finito determinista y lo implementa en C. El programa así generado se compila y se genera un ejecutable que es el análisis léxico del lenguaje.
Comportamiento del analizador léxico creado por PCLEX
Se comporta en sincronía con un analizador sintáctico.
11. ¿Qué es el lenguaje Lex?
R: Es el que permite expresar expresiones regulares y la acción a tomar al encontrar cada una de ellas.
12. ¿Cuáles son los pasos para crear un analizador léxico?
R: Construir el fuente en Lex, compilarlo con Lex, compilarlo con un compilador C.
13. ¿Cuál es el formato de un programa en Lex?
- Área de definiciones de Lex
%%(es lo único obligatorio en todo el programa)- Área de reglas
%%- Área de funciones
Tabla de Símbolos
14. ¿Con qué otros nombres se le conoce a la tabla de símbolos?
R: Tabla de identificadores y tabla de nombres.
15. ¿Qué funciones lleva a cabo la tabla de símbolos?
R: Verificar que la semántica sea correcta y ayudar en la generación apropiada de código.
16. ¿Cuándo se construye la tabla de símbolos?
R: El punto del procesador de traducción en el cual son invocadas las rutinas de manejo de la tabla de símbolos depende primeramente del número y la naturaleza de los pasos del compilador.
17. ¿Qué contiene una tabla de símbolos?
R: Contiene una lista de valores de atributos que son asociados con una variable en particular.
18. ¿Qué atributos tiene una tabla de símbolos y explica en qué consiste cada uno?
- Nombre de la variable
- Debe estar formando parte de la tabla de símbolos.
- Dirección del código objeto
- Debe asociarse con toda variable en un programa.
- Tipo
- Se almacena en la tabla de símbolos cuando los lenguajes compilados tienen tipos de datos implícitos o explícitos.
- Valor
- Número de parámetros para un procedimiento.
- Número de línea fuente
- Donde se declara la variable.
- Número de dimensiones
- Donde se hace referencia a la variable. Debe coincidir con el especificado en la declaración del arreglo y esto debe ser verificado en la fase de análisis semántico.
- Número de parámetros
- Se combinan sus atributos con el número de dimensiones.
- Liga
- Campo cuyos valores sirven para listar las variables en orden alfabético.
Matriz o Tabla de Transición
13. ¿Qué es una matriz o tabla de transición?
R: Es un arreglo bidimensional cuyos elementos proporcionan el resumen de un diagrama de transiciones.