Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Es una herramienta de un compilador que nos ayuda a leer los caracteres de entrada para formar componentes y así poder identificarlos y pasar la información al analizador sintáctico.

  • El análisis léxico es una subrutina del análisis sintáctico que
  • devuelve el tipo de componente léxico y el lexema cada vez que es llamada.
  • Usar un tipo enumerado para los tipos de componentes léxicos. Usar un tipo enumerado para los estados del analizador.
  • En el analizador léxico debe haber una función que se encarga de gestionar el buffer de entrada.
  • Se leerá una linea que se almacenará en un vector de caracteres. Cuando haya sido procesada se carga de nuevo.

ANALIZADOR LEXICO

VIDEO

  • Como el analizador léxico es la parte del compilador que lee el texto fuente, también puede realizar ciertas funciones secundarias, como:

  • -Eliminar los comentarios del código fuente.
  • -Espacios en blanco.
  • -Caracteres TAB y de línea nueva.
  • -Relacionar los mensajes de error del compilador con el programa fuente.

COMPONENTES LÉXICOS

Los tokens son las unidades léxicas básicas de igual forma que las palabras y signos de puntuación son las unidades básicas de un enunciado:

Palabras reservadas:

If, while, do…

Operadores:

= * + - / == > < &! =….

Símbolos especiales e identificadores:

; ( ) [ ] 

Constantes numéricas.

Constates de caracteres.

A tener en cuenta en la implementación:

FUNCIÓN

  • Almacenar en variables el n¶umero de linea y columna para

emitir mensajes de error.

  • Las palabras reservadas se reconocen como identificadores y antes de devolver un identificador se comprueba si es una palabra reservada o un identificador consultando en una tabla
  • previamente inicializada con las palabras reservadas.
  • Hay casos en los que es necesario reinsertar un carácter en el buffer de entrada.
  • Además de los componentes léxicos definidos por el lenguaje es conveniente a~nadir un par especiales para indicar el final de fichero y la detección de un error.
  • Usar las funciones isdigit(), isalpha() para implementar las transiciones en el AFD.

  • El analizador léxico es la primera fase de un compilador. 
  • Lee los caracteres uno a uno desde la entrada y va formando grupos de caracteres con alguna relación entre sí(tokens), que constituirán la entrada para la siguiente etapa del compilador.

ERRORES

  • 1. nombre ilegales de identificadores: un nombre contiene caracteres inválidos.
  • 2. números incorrectos: un número contiene caracteres inválidos o no está formado correctamente, por ejemplo 3,14 en vez de 3.14 o 0.3.14.
  • 3. errores de ortografía en palabras reservadas: caracteres omitidos, adicionales o cambiados de sitio, por ejemplo la palabra hwile en vez de while.
  • 4. fin de archivo: se detecta un fin de archivo a la mitad de un componente léxico.

PATRON O EXPRESIÓN REGULAR

Es la regla que genera la

secuencia de caracteres que pueden representar un determinado componente léxico.

Aspectos prácticos en la implementación de un analizador léxico

  • Principio de máxima longitud
  • Palabras reservadas vs identificadores
  • Entrada de los identificadores en la Tabla de Símbolos
  • Gestión del buffer de entrada

Es una secuencia de caracteres concreta que encaja con un patrón.

Una vez detectado un grupo de caracteres que coinciden con un patrón, se ha creado un lexema.

Mediante bucles anidados

Usamos una variable para almacenar el estado actual y una

estructura tipo case doble anidada. El primer case comprueba

el estado actual y el siguiente el carácter en la entrada. Las transiciones se corresponden con asociar un nuevo estado a la variable

y avanzar en la entrada.

Mediante una tabla de transiciones

Se asume que los campos en blanco son errores. Los estados de

aceptación se marcan con una columna adicional. Los corchetes

representan que no se tiene que consumir un carácter en la entrada

(no avanzar).

LEXEMA

IMPLEMENTACIÓN

¿¿¿ QUE ES ???

Learn more about creating dynamic, engaging presentations with Prezi