Analizador léxico
El analizador léxico, también conocido como tokenización, es la primera fase del compilador. Este consiste en leer secuencias de caracteres, dividirlas y agruparlas en tokens léxicos, después los tokens son validados con un autómata finito, cuando el analizador léxico encuentra elementos no importantes como espacios en blanco, tabulaciones y comentarios, los ignora o los elimina, ya que no afectan al funcionamiento del programa.
¿Qué es un lexema?
Un lexema es una secuencia de caracteres en el programa fuente que coincide con el patrón de un token y que el analizador léxico identifica como una instancia de ese token.
Academia Lab. (2024). Análisis léxico. Enciclopedia. Revisado el 17 de noviembre del 2024. https://academia-lab.com/enciclopedia/analisis-lexico/
¿Qué es un token?
Es la unidad mínima de un programa, la cual agrupará los caracteres y los separará en partes, definiendo la importancia que tiene cada token dentro del código. Algunos ejemplos de tokens son: palabras clave, identificadores, delimitadores, números, operadores y signos de puntuación.
En la figura 3. se muestra un ejemplo de código fuente de un compilador que clasifica imágenes y se separo en caracteres uno por uno y luego se agrupo en tokens con su tipo de función que tiene dentro del código.

Figura 3. Separación de tokens de un compilador que es clasificador de imágenes.
Imagen creada por el autor en Excel el 25 de noviembre del 2024.
Clasificación de Tipos de Token
Palabras Reservadas:
- categorias, cargarModelo, imagen, clasificar.
Identificadores:
- gatos, perros, entrada.
Delimitadores:
- :, ,, ;, (, ).
Operadores:
- = (operador de asignación).
Literals:
- "modeloPreEntrenado.clf", "perro.jpg".
Para que se pueda tener mas claro los tokens tienen una tabla de símbolos el cual es una estructura de datos utilizada en el proceso de traducción de un lenguaje de programación, gestionada por un compilador o intérprete, como se mostrara en el siguiente código el cual es de un lenguaje clasificador de imágenes al cual se le sacara la tabla de símbolos entera del código creado en python.
import tensorflow as tf
# Categorías
categorias = ["gatos", "perros"]
# Cargar modelo preentrenado
modelo = tf.keras.models.load_model("modeloPreEntrenado.clf")
# Cargar imagen
from tensorflow.keras.preprocessing import image
entrada = image.load_img("perro.jpg", target_size=(224, 224))
entrada = image.img_to_array(entrada)
entrada = entrada.reshape((1, 224, 224, 3))
# Clasificar
resultado = modelo.predict(entrada)
print(f"La imagen es un {categorias[resultado.argmax()]}")
Figura 4, 5, 6 muestra que el código fuente está siendo procesado por un analizador léxico, que lo divide en tokens. El proceso implica separar el código en unidades más pequeñas, llamadas tokens, que pueden ser identificadores, operadores, literales, etc. Este análisis se hace carácter por carácter, pero el objetivo final no es solo separar los caracteres, sino agruparlos en categorías significativas (tokens) que luego se utilizarán en la siguiente etapa del compilador.

Figura 4. Se podrá ver la tabla de símbolos del programa de clasificación de imágenes.
imagen creada por el autor en Excel el 25 de noviembre del 2024.

Figura 5. Se podrá ver la tabla de símbolos del programa de clasificación de imágenes.
imagen creada por el autor en Excel el 25 de noviembre del 2024.

Figura 6. se podrá ver la tabla de símbolos del programa de clasificación de imágenes.
imagen creada por el autor en Excel el 25 de noviembre del 2024.
El código que se esta utilizando sera el ejemplo para todas las fases del compilador, del cual es un lenguaje de clasificación de imágenes que se compila en Python.
¿Qué es un autómata?
Un autómata es una máquina que procesa una secuencia de símbolos (como letras o números) y cambia de estado según las reglas que tiene. Lee una palabra, pasa de un estado a otro según lo que lee, y al final decide si acepta o rechaza la palabra, dependiendo de si llega a un estado de aceptación. Este proceso se usa para reconocer patrones o lenguajes
Para mas información del tema ingrese al siguiente link:
https://www.tutorialspoint.com/es/compiler_design/compiler_design_finite_automata.htm
(Teoría de los autómatas, n.d.)Teoría de los autómatas. (n.d.). Academia-lab.com. Retrieved November 18, 2024, from https://academia-lab.com/enciclopedia/teoria-de-los-automatas/
Expresiones regulares
Es una secuencia de caracteres que especifica un patrón de búsqueda en el texto. Por lo general, estos patrones son utilizados por algoritmos de búsqueda de cadenas para "buscar" o "buscar y reemplazar" operaciones en cadenas, o para la validación de entrada. Las técnicas de expresión regular se desarrollan en informática teórica y teoría del lenguaje formal.
(Expresión regular, n.d.)
Expresión regular. (n.d.). Academia-lab.com. Retrieved November 18, 2024, from https://academia-lab.com/enciclopedia/expresion-regular/
Gramática léxica
Para que los tokens se puedan formar, es necesario contar con una gramática léxica, que consiste en un conjunto de reglas que determinan cómo se agrupan y clasifican las secuencias de caracteres en categorías como palabras clave, identificadores, literales, operadores o delimitadores. Estas reglas se representan comúnmente mediante expresiones regulares o lenguajes formales y los autómatas finitos deterministas y no deterministas son de suma importancia en este proceso. ya que estos autómatas son máquinas matemáticas que ayudan a reconocer las secuencias de caracteres que corresponden a los tokens definidos por la gramática. Los autómatas, al ser muy eficientes para procesar cadenas de caracteres, permiten que el analizador léxico reconozca los patrones de manera rápida y confiable, facilitando la identificación y clasificación de los tokens.
Una de las reglas más importantes para formar un token es que debe coincidir exactamente con las palabras clave definidas por el lenguaje de programación.
Las expresiones regulares funcionan como fórmulas que ayudan a identificar patrones dentro del texto. Estas expresiones le permiten al analizador léxico reconocer las partes del código que corresponden a los tokens.
A continuación la gramática simple del programa de clasificación de imágenes:
Símbolo inicial: <programa>.
No terminales:
- <programa>, <declaracion>, <asignacion>, <importacion>, <llamada_funcion>, <expresion>.
Terminales (tokens):
- Palabras reservadas: import, from, as, print.
- Delimitadores: [, ], (, ), {, }, =, :, ,, ".
- Operadores: ..
- Identificadores: tensorflow, categorias, modelo, entrada, etc.
- Literales: "..." (cadenas de texto), números (e.g., 224).
- Comentarios: Comienzan con #.
Vea el siguiente video como refuerzo del tema.
(- YouTube, s/f)
- YouTube. (s/f). Youtu.Be. Recuperado el 27 de noviembre de 2024, de https://youtu.be/rNCim3Pxn90