You are on page 1of 36

Teora de lenguajes y compiladores

Unidad I

Analizadores lexicogrficos

Semana 3

Autmatas finitos
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
definicin de un lenguaje en particular,
teniendo en cuenta el contexto sintctico y
semntico. As mismo estar capacitado
para proponer nuevas formas estructurales
en la definicin de lenguajes de
programacin.
Objetivos Especficos

Desarrollar un analizador lexicogrfico

3
Objetivos Instruccionales

Comprender el funcionamiento
de los autmatas para el
reconocimiento o aceptacin
de cadenas que forman parte o
son generadas por un lenguaje.
DIAGRAMA PRINCIPAL

AFN

Expresiones AFD
Regulares

Manejador de Tabla
Implementacin de AFD
Especificacin
lxica
AUTOMATAS FINITOS
Son modelos matemticos de los dispositivos que
aceptan una entrada y producen una salida apropiada.
La caracterstica de un autmata es que la entrada
pasa por varios estados para producir la salida.

Un autmata finito puede ser determinista (AFD) o


no determinista (AFN), donde no determinista
significa que en un estado se puede dar el caso de
tener ms de una transicin para el mismo smbolo de
entrada.
PROCESO RECONOCIMIENTO AF
Tanto los AFD como los AFN pueden reconocer con
precisin a los conjuntos regulares.

Dispositivo de entrada
a b a a

cabeza lectura direccin movimiento


cabeza

1 Indicador de
6 2 estado
Alfabeto de entrada 5 3
4

Mecanismo de control
RECONOCIMIENTO DE FRASES
Ejemplo:
Que genera el lenguaje: L(G) = { am b an | n, m >= 1}
Sea G = (N, T, P, S)
Luego la frase aaabaa que pertenece a L(G) tiene la
T={a,b} siguiente derivacin.
N = { A , B, C }
P = { A Aa | Ba A Aa Baa Cbaa
B Cb Cabaa Caabaa
C Ca | a }
S = { A} aaabaa

Anlisis de expresiones regulares


Se lee de izquierda a derecha la frase y la acepta como elemento del lenguaje si se puede
reducir al smbolo inicial de la gramtica

Ejemplo: aaabaa Estado inicial

1ra reduccion : Caabaa Regla : Ca


2da reduccion : Cabaa Regla : C Ca
3ra reduccion : Cbaa Regla : C Ca
4ta reduccion : Baa Regla : B Cb
5ta reduccion : Aa Regla : A Ba
6ta reduccion : A Regla : A Aa
LENGUAJE ACEPTADO POR
UN AUTOMATA FINITO
Formalmente el lenguaje
aceptado por un AF llamado A es:

L(A)= w (q0,w) F

Los lenguajes aceptados por AFs se


conocen como regulares.
AUTOMATA FINITO NO DETERMINISTA
Hay que reconocer que las cadenas que deben analizarse en una aplicacin
estn construidas a partir de un conjunto de smbolos, y este conjunto de
smbolos es finito. A este conjunto lo llamaremos alfabeto.

Este dispositivo consta de un conjunto finito de estados internos P entre los


cuales hay un estado inicial especfico So y un conjunto designado F de estados
finales.

Un autmata finito no determinista consta de una quintupla (P, V , M, S o , F )


donde: P es un conjunto de estados, finito y no vaci.
V es el alfabeto de entrada
M es la funcin de transicin de estados
So es el estado inicial o de partida ( So P )
F es el conjunto de estados finales ( F P )

Una forma habitual de representar los autmatas finitos es mediante un grafo o


diagrama de estados donde los nodos son los estados y las aristas estn
orientados con los smbolos de alfabeto que hacen que el autmata transite a un
nuevo estado.
AUTOMATA FINITO NO DETERMINISTA
Ejemplo: El siguiente grafo de transiciones corresponde a un AFN que
reconoce el lenguaje: (a | b)* abb

a b b
0 1 2 3

b
M esta representada por:
Donde: estados entrada
P={ 0,1,2,3} a b
V={a,b} 0 { 0 , 1} {0}
So = { 0 } 1 - {2}
F ={3} 2 - {3}
AUTOMATA FINITO DETERMINISTA
Un autmata finito determinista, es un caso
especial de AFN en el cual:

a. Ningn estado tiene una transicin vaca


b. Para cada estado S y cada smbolo de
entrada a hay a lo sumo una arista
etiquetada a que sale de S.

Un autmata finito determinista tiene a lo


sumo una transicin desde cada estado con
cualquier entrada.
AUTOMATA FINITO DETERMINISTA
Ejemplo:

El siguiente grafo de transiciones corresponde a un AFD que reconoce el


lenguaje: (a | b)* abb
a a

a b b
0 1 2 3

Donde: M esta representada por:


P={ 0,1,2,3} estados entrada
V={a,b}
So = { 0 } a b
F ={3} 0 {1} {0}
Reconocer Secuencia de estados 1 {1} {2}
ababb 0, 1, 2, 1 , 2 , 3 2 {1} {3}
ababaabb 0, 1, 2, 1, 2, 1, 1, 2, 3
Ejercicio
Disear el grafo asociado a un AFD, para
reconocer palabras sobre {a, b, c} en las
cuales toda b es inmediatamente seguida de
al menos una c.
a,c
a,c
b b

b 0 1
c Aceptacin
0 1
2
c
a,b
a,b
a,c
3
2
Error

Solucin 1 Solucin 2
a,b,c
Investigar

Transformacin de un autmata finito


no determinstico (AFN) a un
autmata finito determinstico (AFD)
Se denominan gramticas regulares a una coleccin
de terminales y no terminales, junto con un smbolo
de inicio y un conjunto finito de reglas de reescritura.

Aqu usaremos una notacin menos engorrosa. Salvo


que se especifique lo contrario, representaremos a los
no terminales con letras maysculas y a los
terminales con letras minsculas.

Una gramtica regular se adhiere a las siguientes


restricciones:

S aB | a |
Definicin
Es una notacin equivalente a la de un lenguaje regular o a un
autmata

Los lenguajes regulares son reconocidos por autmatas finitos y


son generados por gramticas regulares.

Una tira de entrada t es reconocida o aceptada por un autmata


finito si puede escribirse una secuencia de movimientos entre las
configuraciones inicial y final.

( q0 , t ) * ( qi , ) donde qi pertenece a F

Por consiguiente, el conjunto de todas las tiras que son


reconocidas por un autmata finito, esto es, el lenguaje deducido
por un dispositivo de este tipo puede definirse como:
L(AF) = { t / t T* , ( q0 , t ) * ( qi , ) , qi F }
La expresin regular para un alfabeto T, permite
definir un conjunto de tiras de caracteres, llamado
conjunto regular, de la siguiente forma:

1. denota al conjunto vaco


2. denota el conjunto regular { }
3.Con a se indica a pertenece a T
4. Si P y Q son dos expresiones regulares entonces:

a. P + Q denota P U Q

b. (P Q) denota P Q

c. (P*) denota P*
Identificador de un lenguaje de
programacin
En notacin de expresin regular

Identificador = letra (letra + digito)*


letra = a + b + c + . + z
digito = 0 + 1 + 2 + + 9
Tambin lo son:

Como ejemplo, si el alfabeto V fuera {X, Y, Z}


entonces (X U (ZY)) seria una expresin
regular ya que (ZY) tambin es una expresin
regular y en consecuencia X U (ZY) tambin lo
seria:

Cada expresin regular r de un alfabeto V


representa un lenguaje denotado por L(r), que
se construye a partir de bloques de
construccin.
Para ser ms precisos:
a. L( ) es el lenguaje
b. L(x) es el lenguaje {x}, para cada x V
c. L((pUq)) = L(p) U L(q)
d. L((pq)) = L(p) L(q)
e. L(p*) = L(p)*

Por ejemplo, la expresin (X U (ZY)) representa el


lenguaje {X,ZY}, es decir, representa el lenguaje
generado al unir {X} con la concatenacin de {Z} y {Y}

De forma similar la expresin ((XY)* U Z*) representa


el lenguaje que consiste en cadenas de cero o ms copias
del patrn XY adems de las cadenas de cero o mas Z.
PROPIEDADES ALGEBRAICAS DE
LAS EXPRESIONES REGULARES
Axioma Descripcin

r|ss|r | es conmutativa

r|(s|t)(r|s)|t | es asociativo

(rs)t r(s t) La concatenacin es asociativa

r (s|t) r s |rt La concatenacin distribuye sobre |


(s | t ) r sr | tr
r r es el elemento identidad
r r
r* ( r + )* La relacin entre * y
r** r * es idempotente
EJEMPLO 1

Sean = {0, 1} y L, M dos lenguajes


sobre dados por L ={1, 10} y M = {1,
01}

Entonces:

LM = {11, 101, 1001}.

Mientras que ML = {11, 110, 011, 0110}.


EJEMPLO 2

Dado V = {0; 1} y la Expresin Regular


= 0*10*,
tenemos que:

L(0*10*) = L(0*) L(1) L(0*)


= (L(0))* L(1) (L(0))*
= {0}*.{1}.{0}*
= {0n10m | n, m 0}
EJEMPLO 3
Si = {a, b, c}
entonces
2 = {aa, ab, ac, ba, bb, bc, ca, cb, cc}

EJEMPLO 4

Sea = {0, 1} y L = {01, 1},


entonces
L3 = {010101, 01011, 01101, 0111,
10101, 1011, 1101, 111}
COMPONENTES BASICOS DE UNA
EXPRESION REGULAR
a
a+b = a|b
b

a b
ab

a*
COMPONENTES BASICOS DE UNA
EXPRESION REGULAR
Ejemplo:
r t
s

r*st*

Ejemplo:
r t
s
(r*st*)(u(r*st*))*
u
UNION DE LENGUAJES REGULARES
Ejemplo: Sean

x y
y x

Cero o mas x seguidas de una y Cero o mas y seguidas de una x

Para unirlos: se crea un nuevo estado inicial a partir del cual podamos entrar a uno de
los diagramas originales sin poder regresar.
x y
Anterior estado inicial
x
y
x

Nuevo estado inicial y


y x
CONCATENACION DE LENGUAJES
REGULARES
Ejemplo: Sean
x x
y y
y x
1 2 3 4

T1 T2

Se procede de la siguiente forma:

A partir de cada extremo de aceptacin de T1, dibuje un arco hacia cada


estado de T2.
Rotule cada uno de estos arcos con las etiquetas del arco correspondiente T2.
Deje que los estados de aceptacin de T1 sigan siendo estados de aceptacin
si solo si el estado inicial T2 es tambin un estado de aceptacin.
CONCATENACION DE LENGUAJES
REGULARES

Solucin:
x

y y x
1 2 3 4

x x y y
Reglas de precedencia de
las Expresiones Regulares
El operador * tiene la precedencia ms
alta .

El siguiente en precedencia es el
operador de concatenacin.

Finalmente, se aplican los operadores de


unin con sus operandos.

Ejemplo: la expresin 01* + 1


se aplica as (0(1*))+1
Ejercicio Propuesto 1
Construir un autmata finito determinista que
reconozca el lenguaje sobre {0, 1} que consiste de
las palabras que terminan con 1, es decir, (0 + 1)*1.

0 1
1

0 0
1 M esta representada por:
estados entrada
Donde: 0 1
P={ 0,1}
V={0,1} 0 {0} {1}
So = { 0 } 1 {0} {1}
F ={1}
Ejercicio Propuesto 2
Construir un AFD que reconozca cadenas con
un nmero par de 0s y/o un nmero par de 1s

M esta representada por:

Donde:
P = { q 0 , q 1 , q 2 , q3 }
V={0,1}
So = {q0 }
F = { q0 }
Ejercicio Propuesto 3
Construir un AFD que reconozca la ocurrencia
de la palabra 1011 en una cadena conformada
por ceros y unos.

35
Teora de lenguajes y compiladores

Unidad I

Analizadores lexicogrficos

Semana 3

Autmatas finitos

You might also like