Upload
nereidathompson
View
216
Download
0
Embed Size (px)
Citation preview
8/3/2019 errores lexicos
1/6
EXPOSICIN:MANEJO DE ERRORES LEXICOS.
CATEDRATICO:ING. DAVID SALOMON DE LA O.
NOMBRE DE LOS ALUMNOS:JUANA MARIA NAVA GUTIERREZ
NICOLAS PEREZ VELAZCO.
MATEO DIAZ LOPEZ.
8/3/2019 errores lexicos
2/6
MANEJO DE ERRORES LXICO
ANALISADOR LXICO
Es la primera fase de la compilacin
Leer caracteres de entrada y generar como salidaSecuencia de componentes lxicos
Elimina espacios en blanco
Elimina comentarios
Proporciona informacin acerca de errores lxicos
8/3/2019 errores lexicos
3/6
COMO MANEJAR ERRORESCOMO MANEJAR ERRORES
U
n compilador es un sistema que en la mayora de loscasos tiene que manejar una entrada incorrecta.
Es indispensable lo siguiente:
El compilador debe ser capaz de detectar errores en laentrada;
El compilador debe recuperarse de los errores sin perderdemasiada informacin;
El compilador debe producir un mensaje de error quepermita al programador encontrar y corregir fcilmente los
elementos (sintcticamente) incorrectos de su programa.
8/3/2019 errores lexicos
4/6
Recuperacin en modo pnico: este tipo de estrategia esla ms comn. Consiste en que cuando se detecta unacadena no reconocible, se siguen leyendo caracteres hastaque se vuelve a detectar un token vlido.
Borrar un carcter extrao.Insertar un carcter que falta (e.g. reemplazar 2C por 2*C).Reemplazar un carcter incorrecto por otro correcto (e.g.Reemplazar INTEJER por INTEGER si el lugar en dondeaparece el primer lexema no es el indicado para un
identicador). Intercambiar dos caracteres tokens,adyacentes (e.g. I INTEGER por INTEGER I).
MANEJO DE ERRORES LEXICOSMANEJO DE ERRORES LEXICOS
8/3/2019 errores lexicos
5/6
La recuperacin de errores durante el AL puedeproducir otros en las siguientes fases.
var numero : integer;
beginnum?ero:=10;end
8/3/2019 errores lexicos
6/6
El compilador podra producir los siguientesmensajes de error:
ERROR LXICO: carcter no reconocido (?)ERROR SEMNTICO: identicador no declarado (num)ERROR SINTCTICO: falta operador entreidenticadoresERROR SEMNTICO: identicador no declarado (ero)
Otras veces novar i,j: integer;
begini:=1;?
j:=2;end