miércoles, 30 de octubre de 2024

Funciones del analizador léxico, Componentes léxicos, patrones y lexemas

 Lectura del Código Fuente:

El analizador léxico toma el código fuente como entrada y lo escanea carácter por carácter.

Se asegura de leer el archivo línea por línea y mueve un puntero a través del texto para identificar las cadenas de caracteres que forman los tokens.

Generación de Tokens:

Agrupa los caracteres en unidades significativas llamadas tokens. Cada token representa una categoría específica (como una palabra clave, identificador, operador, etc.).

Por ejemplo, en la expresión int x = 5;, los tokens serían int, x, =, 5, y ;.

Los tokens generados se pasan luego a la siguiente fase del compilador, generalmente el analizador sintáctico.

Manejo de Errores Léxicos:

Identifica y reporta errores léxicos, como caracteres no válidos o malformaciones.

Proporciona mensajes de error descriptivos para ayudar a los desarrolladores a corregir los problemas en el código fuente.

Por ejemplo, un error léxico ocurriría si hay un símbolo no reconocido en el código, como @int x = 5;.

Eliminación de Espacios en Blanco y Comentarios:

Ignora espacios en blanco, tabulaciones, saltos de línea y comentarios, ya que no son significativos para el análisis sintáctico.

Esta limpieza permite al analizador léxico centrarse únicamente en los elementos importantes del código.

Optimización del Flujo de Entrada:

Implementa técnicas de buffering para manejar la entrada de manera eficiente.

Utiliza un buffer para leer grandes bloques de texto en lugar de carácter por carácter, lo que mejora el rendimiento.


Componentes Léxicos (Tokens):

Son las unidades mínimas del código fuente con significado léxico. Cada token pertenece a una clase específica, como palabras clave, identificadores, literales, operadores, etc.

Ejemplo: En int x = 5;, int es un token de tipo palabra clave, x es un identificador, = es un operador de asignación, 5 es un literal entero y ; es un delimitador.

Patrones:

Son las descripciones formales que definen cómo se forman los tokens. Los patrones se describen usualmente mediante expresiones regulares.

Ejemplo: El patrón para un identificador puede ser [a-zA-Z][a-zA-Z0-9]*, lo que significa que un identificador empieza con una letra y puede ser seguido por cualquier número de letras o dígitos.

Lexemas:

Son las instancias reales de los patrones en el código fuente, es decir, las secuencias específicas de caracteres que coinciden con un patrón.

Ejemplo: En int x = 5;, int, x, =, 5 y ; son lexemas que se ajustan a los patrones definidos para palabras clave, identificadores, operadores, literales y delimitadores, respectivamente

jueves, 10 de octubre de 2024

Lenguaje de un AFN

 Acepta cadenas puede tener múltiples transiciones, varias opciones posibles desde un estado alguna de ellas funciona, acepta la cadena de entrada.


jueves, 3 de octubre de 2024

Programa automata abc

 








Regular expression

A regular expression (shortened as regex or regexp), sometimes referred to as rational expression, is a sequence of characters that specifies a match pattern in text. Usually such patterns are used by string-searching algorithms for "find" or "find and replace" operations on strings, or for input validation. Regular expression techniques are developed in theoretical computer science and formal language theory.The concept of regular expressions began in the 1950s, when the American mathematician Stephen Cole Kleene formalized the concept of a regular language. They came into common use with Unix text-processing utilities. Different syntaxes for writing regular expressions have existed since the 1980s, one being the POSIX standard and another, widely used, being the Perl syntax.


Autómata abc

 


Automata