Análisis Léxico
Mediante Autómatas
Mediante Autómatas
ü
Analizador Léxico -> Código Fuente => Código
Tokenizado
ü
Analizador Sintáctico -> Parsed Code
ü
Analizador Semántico => Código Calificado
ü
Generador de Código -> Código Objeto
(Binario)
ü
Optimizador => Código Final
Análisis Léxico:
Es el proceso mediante el cual se escanea una cadena o
secuencia de caracteres que componen un bloque de código fuente y se valida su
correcta escritura.
Error
|
||||
| | | ||||
Cadena
|
à
|
Analizador Léxico
|
à
|
Validación
|
Funcionamiento del Analizador Léxico
Análisis
|
Validación
|
|||
5+3
|
à
|
DigitoOperadorDigito
|
à
|
þ Correcto
|
5+a
|
Análisis
|
Validación
|
||
à
|
DigitoOperadorCaracter
|
à
|
ý Incorrecto
|
Limitantes del Analizador Léxico
Ø
Alcance Limitado:
No es capaz de reconocer todos los tipos de errores
No es capaz de reconocer todos los tipos de errores
Ø
Análisis de Símbolos:
Detecta solo tokens no válidos o entidades mal formadas
Detecta solo tokens no válidos o entidades mal formadas
Ø
Sin Contexto: No es capaz de detectar tokens fuera
de lugar
Proceso
ü
Obtener la Expresión Regular
ü
Convertir la Expresión Regular a un AFN
ü
Convertir el AFN a un AFD
ü
Simplificar el AFD y programarlo
Método de Thompson (Convertir ER a AFN)
Definición:
Define un conjunto de reglas para convertir una expresión regular en un autómata finito no determinista.
Define un conjunto de reglas para convertir una expresión regular en un autómata finito no determinista.
Procesar carácter “r”:
Procesar concatenación “rs”:
Procesar alternativas “r|s”:
Procesar cerradura “r+”:
Procesar cerradura de Kleene “r*”:
Ejemplo: ER= (a+)(b*|cd)
Ejemplo: Operaciones
L= dod (digitooperadordigito)
ER= ([0-9])+((\+|\-|\*|\/)([0-9]))+
Investigación Final
Reporte de Investigación Final






