Está en la página 1de 15

Implementación de los analizadores léxicos

Codificación manual utilizando un lenguaje de programación

Combinación de los Autómatas Finitos Deterministas


transformados
 Ejemplo (2.- Transformación AFD:)
Implementación de los analizadores léxicos

Codificación manual utilizando un lenguaje de programación

Combinación de los Autómatas Finitos Deterministas


transformados

 Estrategias de la codificación manual


 Utilizar directamente las tablas de la función de transición de
los AFDs.
 Simular el funcionamiento de los AFDs mediante sentencias
de control.
Implementación de los analizadores léxicos

Generación automática del analizador léxico


Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX
 Creado por M. E. Lesk y E. Schmidt (Bell Laboratories).
 Genera analizadores léxicos para C, Fortran, Raftor.
 Hay versiones para Unix, Linux, DOS, etc.
Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares
 Símbolos especiales:
 ǀ: disyunción
 ( ): agrupación de expresiones regulares
 *: repetición de un patrón cero o mas veces.
 +: repetición de un patrón una o mas veces.
 ?: el patrón puede aparecer cero o una vez.
 \ ": delimitadores de cadenas
 .: cualquier carácter distinto del salto de línea (\n).
 \n: salto de línea
 $ : carácter de final de línea
 [ ]: delimitadores de clases de caracteres
 ^ : inicio de línea y complementario de una clase.
Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares

Nota
Si se antepone la barra \ delante de un símbolo especial
entonces solo se representa así mismo:
\ . -- solo representa el punto.
Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares

Ejemplo (LEX: expresiones regulares


7. Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares

Ejemplo (LEX: expresiones regulares


Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares

Ejemplo (LEX: expresiones regulares


Implementación de los analizadores léxicos

Generación automática del analizador léxico


LEX: expresiones regulares

Ejemplo (Definiciones regulares)


Caso practico(modelo)

(Reconocimiento léxico)
La Figura se muestra un ejemplo de programa en lenguaje C, el cual vamos
a utilizar para los ejemplos y para el que se ha construido el compilador
Caso practico(modelo)

(Reconocimiento léxico)

El Lexer habría seleccionado como los siguientes tokens: :

PROGRAM, VARS, IDENTIFICADOR (a), INT, IDENTIFICADOR (b),


INT, IDENTIFICADOR(c), BOOL, ENDVARS, IDENTIFICADOR (a), :=,
ENTERO(1), IDENTIFICADOR(b), :=, ENTERO(2),
IDENTIFICADOR(a), :=, IDENTIFICADOR(a), +, IDENTIFICADOR(b),
IF, IDENTIFICADOR(a), =, ENTERO(3), THEN, WRIS,
STRING(Correcto), ELSE, WRIS, STRING(Inconrrecto), ENDIF,
ENDPROGRAM
Caso practico(modelo)

(mecanismo para el reconocimiento léxico:autómata finito)


Representaremos las máquinas de estado mediante
diagramas de estados como el del siguiente ejemplo.

Supongamos la palabra del lenguaje: bool


Caso practico(modelo)

(mecanismo para el reconocimiento léxico:token)


Cuando hablamos de lenguajes de programación
habituales, el Lexer busca reconocer los siguientes tipos de
tokens:

 Palabras clave propias del lenguaje: program, vars,


endvars, if, while,...
 Operadores: +, <, =, :=, AND,OR, ...
 Identificadores: x, y, oldValue,...
 Valores enteros: 520, 152, 1,...
 Cadenas de caracteres: “Hello World”,...
 Otros símbolos propios del lenguaje: paréntesis,
corchetes, puntos y comas, comas,..
Caso practico(modelo)

(mecanismo para el reconocimiento léxico:expresiones


regulares)

También podría gustarte