Analizador léxico también conocido como analizador
morfólogico o scanner, es el elemento del compilador de la
division del codigo fuente en un conjunto de unidades
sintácticas con sentido lógico.
Que es un token: URL:
https://www.cartagena99.com/recursos/alumnos/apuntes/ININF2_M4_U2_T1.pdf
Tipos de tokens posibles: URL:
https://elibro.net/es/ereader/umg/106460
Palabras reservadas del
sistema.
Identificadores.
Literales.
Números.
Operadores y símbolos
operacionales.
Formas de interaccionar las
fases léxicas y sintácticas,
El analizador léxico opera a
petición del analizador sintáctico.
La fase léxica puede hacer un análisis de
todos los componentes léxicos del código
fuente.
Responsabilidad de un analizador léxico como
fase de un compilador
En esta fase de compilación lo principal será leer la
secuencia de caracteres del programa fuente, carácter por
carácter, y agruparlos.
¿Por qué separar el análisis léxico
del análisis sintáctico?
Primero: Si la fase del análisis léxico y
sintáctico se encuentran separadas, bien en
clases diferentes, bien en objetos distintos o
simplemente en métodos o subprogramas
distintos podremos realizar modificaciones
en la especificación léxica o sintáctica del
código fuente .
Segundo: el diseño y la
implementación de las distintas
fases del compilador serán mas
simples, a la vez que mas
eficientes.
Tercero: separar el análisis léxico del
sintáctico nos permitirá centralizar, en
un único módulo o clase, la lectura fisica
de los caracteres, lo que facilita
tratamientos especializados de E/S
Tratamiento De Los Errores Léxicos
Normalmente los errores durante
esta etapa son escasos, ya que el
compilador tiene todavía una
visión muy local del programa.
Los errores léxicos se pueden
agrupar entre los siguiente:
Símbolos no
permitidos.
Identificadores mal
construidos.
Valores numéricos
mal construidos.
Constante literal
mal construida.
Al detectar un final de
archivo a la mitad de
un componente léxico.
alternativas para el tratamiento
de errores en analizadores
léxicos.
Ignorar los caracteres no validos
hasta formar un token aceptado.
Borrar los caracteres
inválidos
Insertar un carácter
que pudiera ser
necesario.
Reemplazar un carácter
incorrecto o reemplazar
caracteres adyacentes
Definición Del Vocabulario
Básico Para Un Analizador
Léxico.
Componente léxico o token: Son
los elementos del lenguaje con
sentido lógico propio.
Lexema: Secuencia de caracteres del
código fuente que concuerda con el
patrón de un token.
Tabla de componentes léxicos o tablas de
tokens: estructura de datos donde se
almacenan los tokens.
Atributos de los componentes léxicos: Es la
información adicional sobre los tokens, (el
número de atributos y la forma de
implementar las distintas fases del compilador.
Alfabeto: Es un conjunto
finito y no vacío de
símbolos.
Cadena: secuencia finita de símbolos
Cadena vacía:
Operación de cadenas o
palabras.
Longitud:: es el numero de símbolos que
forman la cadena.
Concatenación
Igualdad de
cadenas.
Potencia de
cadenas.
Lenguajes regulares: ver imagen.
Elementos de un lenguaje. Ver
imagen.
Operaciones con lenguajes: ver imagen
Expresiones regulades: una ER es una forma
abreviada de representar cadenas de
caracteres.
Concatenación
Unión.
Cierre o
clausura.
Abreviatura en la notación: ver
imagen.
AFD. un autómata finito
determinista.
AFN autómata finito no
determinista.
Diferencia entre AFN y AFD
Equivalencia entre AFN y AFD
Autómata finito no determinista con transiciones
nulas.
Expresiones básicas. Ver
imagen.
Especificación de un analizador
léxico.
Existen tres métodos generales.
Utilizar un generador de analizadores
léxicos, como el compilador LEX.
Escribir el analizador léxico en un lenguaje
convencional de programación en sistemas.
Escribir el analizador léxico en lenguaje ensamblador
y manejar explícitamente la lectura de la entrada.
Reconocimiento de los componentes
léxicos.
Consta de una serie de pasos a seguir
para la implementacion de un
analizador.
Crear tabla de tokens con :
Nombre del componente
léxico.
Lexema de
ejemplo.
Descriptor informal del
patrón.
Construir un diagrama de
transiciones para poder
reconocer las diferentes cadenas
del código fuente.
Para DT podemos seguir los siguientes
pasos.
Obtener la expresión regular asociada a la
especificación del lenguaje de programación.
De la expresión regular crearemos el AFN-e que
acepte el lenguaje asociado a dicha expresión
regular.
Obtener el AFN equivalente al AFN-e anterior,
esto es, que acepte el mismo lenguaje.
Transformar el AFN obtenido en un
AFD
Minimizar el AFD resultante, que compruebe si
las cadenas de caracteres pertenecen o no al
lenguaje.
Obtener el DT a partir del AFD. De este modo,
este s funcionará ya como un analizador léxico.
Implementación del DT
La interacción entre las fases léxicas y sintacticas.
El procedimiento de identificación de palabras
reservadas del lenguaje de programación que
queremos compilar.
Otros factores que afectan a la implementación es el
lenguaje de programación en el que la llevemos a
cabo.
Video de analizador
Direcci´ñon de video URL:
https://youtu.be/zS2Bw8vOZYU