0% encontró este documento útil (0 votos)
24 vistas3 páginas

Autómatas Finitos en Compiladores

Este documento describe los autómatas finitos, incluyendo su definición como una quíntupla con estados, alfabeto, función de transición, estado inicial y estados finales. Explica que los autómatas finitos reconocen lenguajes y pueden representarse mediante diagramas de estados o grafos dirigidos.

Cargado por

Enzo Juarez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
24 vistas3 páginas

Autómatas Finitos en Compiladores

Este documento describe los autómatas finitos, incluyendo su definición como una quíntupla con estados, alfabeto, función de transición, estado inicial y estados finales. Explica que los autómatas finitos reconocen lenguajes y pueden representarse mediante diagramas de estados o grafos dirigidos.

Cargado por

Enzo Juarez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Cátedra Compiladores

Facultad de Ingeniería – Universidad Católica de Salta

AUTÓMATAS FINITOS

Los autómatas finitos son entes o máquinas abstractas que se estudian desde dos puntos de
vista: como dispositivos capaces de determinar la pertenencia de una cadena de símbolos a un
lenguaje determinado y como traductores de una cadena en otra. En este último caso los au-
tómatas están computando una función.
Se puede imaginar un Autómata Finito como una máquina capaz de leer símbolos de una
cinta y según el estado corriente cambiar de estado hasta terminar la cinta. Consta, entonces
de una cinta de entrada y un control que mantiene el estado actual y posee una cabeza lecto-
escritora que luego de leer un símbolo se mueve hacia la derecha y es capaz de decidir dado
el estado corriente y el símbolo leído cual es el próximo estado.
La memoria central del autómata queda determinada al momento del diseño, ya que el
autómata “recuerda” a través de sus estados. El conjunto de situaciones, es decir, de estados
que registra el autómata es finito y queda determinado en su diseño. Esta es la memoria del
autómata, ya que “recuerda” a través de sus estados. Entre los estados siempre podemos dis-
tinguir el inicial y los finales o aceptadores. Los estados finales determinan la aceptación de
la cadena cuando ésta se terminó de leer. Eventualmente el estado inicial puede ser también
aceptador.
Ya que los estados le permiten al autómata “recordar” situaciones que se desea diferenciar,
es crucial en su diseño saber distinguir el conjunto de situaciones mínimas que se desea con-
trolar. Debido a que el conjunto de estados es finito, en cada momento el autómata estará en
alguno de ellos.

Autómatas Finitos Reconocedores


Para ver la importancia de estos autómatas, nótese que la fase de análisis léxico de un
compilador está basado en un Autómata Finito, pues son usados para describir el proceso de
reconocimiento de patrones en el texto de entrada.

Un autómata finito es una quíntupla M = (S, , , s0, F) donde:


S: es un conjunto de estados, S  
: es el alfabeto de entrada
s0: es el estado inicial , s0  S
F: es el conjunto de estados finales o aceptadores, F  S
: S    S es la función de próximo estado o de transición.

Ejemplo
Sea el autómata finito M que reconoce el lenguaje de los identificadores válidos de un
lenguaje de programación L. Recuerde que, según la definición, un identificador es una letra
seguida de una sucesión de letras o dígitos.
Cátedra Compiladores
Facultad de Ingeniería – Universidad Católica de Salta

M = (S, , , F, s0)
S = {s0, s1, s2}
 = {a .. z, 0 .. 9}
F = {s1}
Nota: Si bien el alfabeto  indica
 letra dígito en forma individual cada letra y dí-
s0 s1 s2 gito, por simplicidad en la tabla de es-
s1 s1 s1 tados se indica sólo una columna por
s2 s2 s2 las 28 letras y otra para los dígitos.

Se puede extender la definición de  de un autómata finito M de símbolos a cadenas, es


decir, (s0, w), donde el estado resultante es el que se obtiene de aplicar  a partir del estado
inicial y a cada símbolo de la cadena. Entonces: : S  *  S es la función de próximo
estado o transición.
(si, ) = si
(si, ax) = ((si, a), x) a  , x  *

Para el ejemplo anterior, sea id1 un identificador de L:

’(s0, id1) = s1 pues:


’(s0, id1) = ’((s0, i), d1) = ’(((s0, i), d), 1) = ’((((s0, i), d), 1), ) =
’(((s1, d), 1), ) = ’(( s1, 1), ) = ’( s1, ) = s1

Se dice que el autómata finito M acepta o reconoce la cadena w  * si (s0, w) = q, donde


q  F, es decir si M comenzando en el estado inicial s0, lee la cadena w de izquierda a derecha
y termina en un estado final o aceptador.

Aplicación de grafos dirigidos para representar la función de próximo estado


Un grafo dirigido es una terna (N, A, F) donde N es el conjunto de vértices o nodos. A es
un conjunto de arcos. F es la función que asocia a cada arco a  A con un par ordenado de
vértices.
Los grafos dirigidos se utilizan para representar autómatas finitos y se llaman Diagramas
de estados o Diagrama de transiciones. Las convenciones son las siguientes:

- Existe un nodo n  N del grafo por cada estado s  S


- Existe un arco a  A tal que F(a) = (si, sk) ⇔ (si, a) = sk, donde si, sk  S, a  
- Los estados finales se distinguen con un doble círculo.
- El estado inicial se marca con  . Debe notarse que cada arco puede tener más de un
rótulo.
Cátedra Compiladores
Facultad de Ingeniería – Universidad Católica de Salta

Ejemplo:
Lenguaje de los identificadores. Los nodos del grafo son s0, s1, s2. El estado inicial s0, el
final s1.
l, d
l
s1

s0

d s2 l, d

También podría gustarte