Teoría de lenguajes y compiladores

12
Teoría de lenguajes y compiladores Errores lexicográficos Semana 5 Unidad I Analizadores lexicográficos

description

Teoría de lenguajes y compiladores. Unidad I. Analizadores lexicográficos. Semana 5. Errores lexicográficos. Objetivo General. - PowerPoint PPT Presentation

Transcript of Teoría de lenguajes y compiladores

Page 1: Teoría de lenguajes y compiladores

Teoría de lenguajes y compiladores

Errores lexicográficos

Semana 5

Unidad I

Analizadores lexicográficos

Page 2: Teoría de lenguajes y compiladores

Objetivo General

El alumno al finalizar el curso podrá desarrollar aplicaciones que le permitan determinar si una estructura gramatical corresponde a una sentencia valida en la definición de un lenguaje en particular, teniendo en cuenta el contexto sintáctico y semántico. Así mismo estará capacitado para proponer nuevas formas estructurales en la definición de lenguajes de programación.

Page 3: Teoría de lenguajes y compiladores

Objetivos Específicos

3

Desarrollar un analizador lexicográfico

Page 4: Teoría de lenguajes y compiladores

Objetivos Instruccionales

• Aplicar criterios para la recuperación de errores durante la etapa del análisis lexicográfico.

• Utilizar herramientas para la generación de analizadores léxicos.

Page 5: Teoría de lenguajes y compiladores
Page 6: Teoría de lenguajes y compiladores

El scanner agrupa a uno o mas caracteres del programa fuente formando un token, para ello se apoya en el concepto de “delimitador”, que es un carácter que sirve para acabar un token pero sin incluirse en el.

Page 7: Teoría de lenguajes y compiladores

Según Morgan los errores lógicos se dividen en cuatro grupos:

1.Se ha incluido un símbolo o carácter absolutamente extraño para vocabulario terminal de la gramática del lenguaje de programación

2.Se ha omitido un carácter (se declaro conta y se uso cont).

3.Se ha introducido un nuevo carácter que viene a sumarse a los que realmente componen el nombre (se indico arrays en vez de array en la definición de arreglos).

4.Han sido permutados dos caracteres del token analizado (se indico esle en vez de else)

Tipos de errores léxico

Page 8: Teoría de lenguajes y compiladores

Los errores léxicos se detectan cuando el analizador léxico intenta reconocer componentes léxicos en el código fuente. Los errores léxicos típicos son:

•Nombres ilegales de identificadores: un nombre contiene caracteres inválidos;•Números inválidos: un número contiene caracteres inválidos (por ejemplo; 2,13 en lugar de 2.13), no está formando correctamente (por ejemplo, 0.1.33), o es demasiado grande y por tanto produce un desbordamiento;•Cadenas incorrectas de caracteres: una cadena de caracteres es demasiado larga (probablemente por la omisión de comillas que cierran);•Errores de ortografía en palabras reservadas: caracteres omitidos, adicionales, incorrectos o mezclados;•Etiquetas ilegales: una etiqueta es demasiado larga o contiene caracteres inválidos.

Manejo de errores en el análisis léxico

Page 9: Teoría de lenguajes y compiladores

La mayoría de los errores léxicos se deben a descuidos del programador. En general, la recuperación de los errores léxicos es relativamente sencilla.

•Si un nombre, un número o una etiqueta contiene un carácter inválido, se elimina el carácter y continúa el análisis en el siguiente carácter; en otras palabras, el analizador léxico comienza a reconocer el siguiente componente léxico. El efecto es la generación de un error de sintaxis que será detectado por el analizador sintáctico. Este método también puede aplicarse a números mal formados.

•Las secuencias de caracteres como 12AB pueden ocurrir si falta un operador (el caso menos probable) o cuando se han tecleado mal ciertos caracteres. Es imposible que el analizador léxico pueda decidir si esta secuencia es un identificador ilegal o u número ilegal. En tales casos, el analizador léxico puede saltarse la cadena completa o intentar dividir las secuencias ilegales en secuencias legales más cortas. Independientemente de cuál sea la decisión , la consecuencia será un error de sintaxis.D

ete

cció

n d

e e

rro

res

en

el a

lisis

le

xico

grá

fico

Page 10: Teoría de lenguajes y compiladores

• La detección de cadenas demasiado largas no es muy complicada, incluso si faltan las comillas que cierran, porque por lo general no está permitido que las cadenas pasen de una línea a la siguiente. Si faltan las comillas que cierran, puede usarse el carácter de fin de línea como el fin de cadena y reanudar el análisis léxico en la línea siguiente. Esta reparación quizás produzca errores adicionales. En cualquier caso, el programador debe ser informado por medio de un mensaje de error.

• Un caso similar a la falta de comillas que cierran en una cadena, es la falta de un símbolo de terminación de comentario. Como por lo regular está permitido que los comentario abarquen varias líneas, no podrá detectarse la falta del símbolo que cierra el comentario hasta que el analizador léxico llegue al final del archivo o al símbolo de fin de otro comentario.

• Si se sabe que el siguiente componente léxico debe ser una palabra reservada, es posible corregir una palabra reservada mal escrita. Esto se hace mediante funciones de corrección de errores.D

ete

cció

n d

e e

rro

res

en

el a

lisis

le

xico

grá

fico

Page 11: Teoría de lenguajes y compiladores

• Un procedimiento corrector para tales situaciones consiste en formar subconjuntos de los mismos n caracteres que el nombre no ha encontrado en la tabla de símbolos (no

declarado) y comparar.

• Se debe tener especial cuidado al realizar la recuperación, pues pudiera suceder que una vez “interpretado” el error mediante este procedimiento no fuera coincidente con la idea original del programador.

Re

cup

era

ció

n d

e e

rro

res

en

el

an

ális

is le

xico

grá

fico

Page 12: Teoría de lenguajes y compiladores

Teoría de lenguajes y compiladores

Errores lexicográficos

Semana 5

Unidad I

Analizadores lexicográficos