Análisis léxico

 

Análisis léxico

La primera etapa de un compilador es llamado análisis léxico o escaneo. Esta fase se encarga de revisar la secuencia de caracteres que forman el programa fuente y los organiza en secuencias llamadas lexemas (que son componentes básicos como palabras clave, identificadores, operadores y símbolos), se genera un token por cada lexema con el siguiente formato: (nombre-token,valor-atributo). 

"Un token es un par que consiste en un nombre de token y un valor de atributo opcional. El nombre del token es un símbolo abstracto que representa un tipo de unidad léxica; por ejemplo, una palabra clave específica o una secuencia de caracteres de entrada que denotan un identificador. Los nombres de los tokens son los símbolos de entrada que procesa el analizador sin táctico. A partir de este momento, en general escribiremos el nombre de un token en negrita. Con frecuencia nos referiremos a un token por su nombre."  (Monroy Cedillo & Pérez Pérez, s. f.).


Figura 3- Ejemplos de tokens
https://compiinterprt2016ugbclass.blogspot.com/2016/05/analisis-lexico.html

Este token se envía a la siguiente fase que es el análisis sintáctico. El primer componente del token, nombre-token, es un símbolo abstracto que se usa en esta fase, por otro lado, el segundo componente, valor-atributo, apunta a una entrada en la tabla de símbolos especifica de cada token. Esta información en la tabla es fundamental para la siguiente fase y la generación de código.

 
Figura 4-Función de un analizador léxico
Fuente: https://lenguajesyautomatas1998.blogspot.com/2019/04/unidad-4-4.html

Funciones secundarias

"Como el analizador léxico es la parte del compilador que lee el texto fuente. También puede realizar ciertas funciones secundarias en la interfaz del usuario, como eliminar del programa fuente comentarios y espacios en blanco en forma de caracteres de espacio en blanco, caracteres TAB y de línea nueva. Otra función es relacionar os mensajes de error del compilador con el programa fuente. Por ejemplo, el analizador léxico puede tener localizado el número de caracteres de nueva línea detectados, de modo que se pueda asociar un número de línea con un mensaje de error.

En algunos compiladores, el analizador léxico se encarga de hacer una copia del programa fuente en el que están marcados los mensajes de error. Si el lenguaje fuente es la base de algunas funciones de pre procesamiento de macros, entonces esas funciones del preprocesador también se pueden aplicar al hacer el análisis léxico."  (Monroy Cedillo & Pérez Pérez, s. f.).

Implementación

Toda la implementación de analizadores léxicos suele realizarse mediante generadores de analizadores léxicos, como Lex o Flex, que toman como entrada una descripción formal de la gramática léxica del lenguaje y generan automáticamente el código del analizador léxico. Esto simplifica el desarrollo y mantenimiento del compilador, ya que cualquier cambio en la gramática léxica requiere únicamente una actualización de la entrada del generador.

Referencias completas:

- Monroy Cedillo, J. J., & Pérez Pérez, I. (s. f.). Autómatas y compiladores de http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/autocontenido/a utocon/crditos.html 

No hay comentarios:

Publicar un comentario

Compiladores: Lo que necesitas saber

En este blog, abordaremos los conceptos básicos de los compiladores, una parte vital de la informática que nos permite transformar código fu...