| INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO |

Introducción | Contenido | Bibliografía

Introducción
Contenido
UNIDAD I
UNIDAD II Introducción 2.1 Estructura de un Compilador 2.1.1 Función del analizador léxico 2.1.2 Función del analizador sintáctico

2.1.3 Tabla de Símbolos

2.1.4 Función del analizador Semántico

2.1.5 Etapa de análisis

2.1.6 Etapa de Síntesis

UNIDAD III
UNIDAD IV
UNIDAD V
UNIDAD VI
UNIDAD VII
UNIDAD VIII
UNIDAD IX
PROBLEMARIO
Bibliografía

2.1.1 Función del Analizador Léxico

> El analizador léxico, también conocido como scanner, lee los caracteres uno a uno desde la entrada y va formando grupos de caracteres con alguna relación entre sí, llamados tokens, que constituirán la entrada para la siguiente etapa del compilador. Cada token representa una secuencia de caracteres que son tratados como una unidad. Por ejemplo, en el lenguaje de programación Pascal un token es la palabra reservada BEGIN, en lenguaje C, es WHILE.
> Hay dos tipos de tokens:

> - tiras específicas, tales como palabras reservadas (if, while, begin, etc.), el punto y coma, la asignación, los operadores aritméticos o lógicos, etc.

> - tiras no específicas, como identificadores, constantes o etiquetas.

> Se considera que un token tiene dos partes: el tipo de token y su valor.

> Las tiras específicas sólo tienen tipo (lo que representan), mientras que las tiras no específicas tienen tipo y valor. Por ejemplo, si "Contador" es un identificador, el tipo de token será identificador y su valor será la cadena "Contador".

> El analizador léxico es la etapa del compilador que permite conocer si es un lenguaje de formato libre o no. Frecuentemente va unido al analizador sintáctico en la misma pasada, funcionando entonces como una subrutina de este último, ya que es el que va leyendo los caracteres del programa, ignorará aquellos elementos innecesarios para la siguiente fase, como los tabuladores, comentarios, espacios en blanco, etc.

> El analizador léxico opera bajo petición del analizador sintáctico devolviendo un componente léxico conforme el analizador sintáctico lo va necesitando para avanzar en la gramática, siendo los componentes léxicos son los símbolos terminales de la gramática, el cual suele implementarse como una subrutina del analizador sintáctico. Cuando recibe la orden obteniendo el siguiente componente léxico, el analizador léxico lee los caracteres de entrada hasta identificar el siguiente componente léxico, como se muestra en la siguiente figura:

> Otras funciones secundarias:

> - Manejo de archivo de entrada del programa fuente: abrirlo, leer sus caracteres, cerrarlo y gestionar posibles errores de lectura.

> - Eliminar comentarios, espacios en blanco, tabuladores y saltos de línea (caracteres no validos para formar un token).

> - Inclusión de archivos # include ...

> - La expansión de macros y funciones inline: # define ...

> - Contabilizar el número de líneas y columnas para emitir los mensajes de error.

> - Reconocimiento y ejecución de las directivas de compilación (por ejemplo, para depurar u optimizar el código fuente).

> En este punto, valdría la pena preguntarse ¿Cuáles son las ventajas de separar el análisis léxico y el análisis sintáctico?

> La respuesta a esta pregunta conlleva a que facilita la transportabilidad del traductor (por ejemplo, si decidimos en un momento dado cambiar las palabras reservadas begin y end de inicio y fin de bloque, por f y g, solo hay que cambiar este modulo. Otra ventaja se enfoca a que se simplifica el diseño: el analizador es un objeto con el que se interactúa mediante ciertos métodos. Se localiza en un único módulo la lectura física de los caracteres, por lo que se facilita tratamientos especializados de E/S.

Atrás Siguiente

##### Introducción / Contenido / Unidad I / Unidad II / Unidad III / Unidad IV / Unidad V / Unidad VI / Unidad VII / Unidad VIII / Unidad IX / Problemario / Bibliografía

##### Inicio

##### Créditos

José Sánchez Juárez, Andrés Ortigoza Campos, Fabiola Ocampo Botello