Está en la página 1de 13

Autmatas Finitos

Prof. Diego Mosquera


@diegomosuz

Implementacin - AL
AFN
Expresiones
Regulares

AFD

Especificacin
Lxica

Implementacin
AFD

Implementacin - AL
El AL debe ir leyendo carcter por carcter del archivo de entrada y
guardar los caracteres ledos en un buffer.
Cuando se encuentra un carcter que no le sirve para construir un
token vlido, para el scaneo y enva los caracteres acumulados al AS.
En este momento el AL queda en espera de una nueva peticin del AS.
Lleva a cabo la reinicializacin del buffer de lectura.
Repite este proceso hasta que llega a fin del archivo de entrada.

Por ejemplo, suponga un archivo de entrada con el siguiente cdigo


fuente:

Implementacin - AL
Pasos =>

IMPORTANTE:
Un AL debe aplicar la regla de la
cantidad mxima (leer el token ms
largo posible). En caso de que esa
lectura no lleve a un token vlido, debe
retroceder al menos largo que sea
vlido y volver a leer los desechados
para el siguiente token.

Implementacin - AL
Para la implementacin de un AL se utilizan AFD como mquinas de
estados (llamados diagramas de transiciones DT).
Diferencias entre un AFD y un DT:
El AFD slo verifica si una secuencia de caracteres pertenece o no al lenguaje.
Un DT debe leer la secuencia hasta completar el token y dejar la entrada preparada para el
siguiente token.

El AFD se atasca si una secuencia de caracteres no puede ser reconocida.


En un DT cada secuencia no determinada debe conducir a un procedimiento de manejo de
errores.

En un AFD todos los estados pueden ser estados de aceptacin.


En un DT los estados de aceptacin deben ser estados terminales.

En un DT, cuando se lea un carcter que no pertenezca a ninguna secuencia


especificada, se debe ir a un estado especial terminal y volver el cursor de lectura al
carcter siguiente a la secuencia correcta leda.

Implementacin - AL
Un AFD (o un DT) puede ser implementado usando una tabla T
(bidimensional)
Una dimensin para representar los estados (filas)
Otra dimensin para los smbolos de entrada (columnas)
Para cada transicin
defina T[i, a] = k

Veamos un ejemplo simple con un AFD

Implementacin - AL
Tambin es posible para un AFN

Implementacin - AL
Cmo combinar todo para implementar un DT?

Implementacin - AL
Ejemplo: Crear un analizador lxico para un lenguaje que reconoce
nmeros enteros sin signo, la suma, el incremento y el producto:
Las expresiones regulares son:

Digito = [0-9]
Entero = Digito+
Suma = +
Producto = *
Incremento = ++:

Implementacin - AL

Implementacin - AL
Estado

Digito

Otro

Token

Retroceso

q0

q5

q2

q1

Error

q1

PRODUCTO

q2

q3

q4

q3

q3

q3

SUMA

q4

INCREMENTO

q5

q5

q6

q6

q6

q6

ENTERO

Implementacin - AL
En el ejemplo, ejecute las siguientes entradas:
25+5
25+5*12++
25+5*12++5**3/8

Implementacin - AL
Recuerde que:
Hay dos casos en que hay que decidir entre ms de un token
El caso en que hayan dos lexemas, uno ms largo que otro, entonces el autmata debe
decidir por el token correspondiente al lexema ms largo.
El caso de que un mismo lexema pueda asociarse a ms de un token, entonces se debe
elegir el primero que se encuentre en la especificacin.

También podría gustarte