Вы находитесь на странице: 1из 25

SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES



1


















INTRODUCCIN A LOS LENGUAJES FORMALES













GUA TERICO-PRCTICA
PARA ALUMNOS DE LA CTEDRA
SINTAXIS Y SEMNTICA DE LOS LENGUAJES
DE LA CARRERA DE INGENIERA EN SISTEMAS DE INFORMACIN




ING. EDUARDO AMAR
FACULTAD REGIONAL ROSARIO
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

2

UNIDAD DIDCTICA N 1

INTRODUCCIN A LOS LENGUAJES FORMALES




1. Definiciones bsicas

1.1. ALFABETO

o vocabulario o clase de carcter, es cualquier conjunto finito de smbolos.

Se lo denomina con: V = { s
1
, s
2
, ........, s
n
}

Ej:
V = { a, b } a y b son letras de V

V = { 0, 1 } alfabeto binario

V = { a, b, ........, z } alfabeto castellano


1.2. CADENA

sobre un alfabeto, es una secuencia finita de smbolos tomados de ese alfabeto.

Tambin se llama a la cadena, palabra o tira.

Ej:
V = { a, b } cadenas: a, aa, baab, bba

V = { 0, 1 } cadenas: 01, 0010, 1001, 11

V = { a, b, ........, z } cadenas: perro, loro, pato


1.3. LONGITUD DE UNA CADENA S

se escribe |s|, es la cantidad de smbolos o letras que la componen.


Ej:
V = { a, b }
s
1
= a |s
1
| = 1
s
2
= bab |s
2
| = 3
s
3
= aaaba |s
3
| = 5



SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

3
V = { a, b, ......, z}
s
1
= oca |s
1
| = 3
s
2
= zapato |s
2
| = 6
s
3
= repollo |s
3
| = 7


1.4. CADENA VACA

se representa con , es una cadena de longitud cero, no tiene ninguna letra.


1.5. CERRADURA DE UN ALFABETO V

o clausura de V, se representa con V* y es el conjunto de todas las palabras
posibles obtenidas de V, incluyendo la palabra vaca. Siempre es un conjunto .

Ej:
V = { a, b } V* = { , a, b, aa, ab, ba, bbb, .....}

V = { a, b, ......, z} V* = { cualquier palabra del idioma castellano}


1.6. CERRADURA POSITIVA DE V

se representa con V
+
, no contiene la palabra vaca. V
+
= V* - { }


Ej:
V = { a, b } V
+
= { a, b, aa, ab, ba, bbb, .....}


1.7. PARTES DE UNA CADENA

Trmino Definicin
Prefijo de s
Cadena que se obtiene eliminando 0 o ms smbolos desde la
derecha.
(Ej: s = bandera ban)
Sufijo de s
Cadena que se obtiene eliminando 0 o ms smbolos desde la
izquierda.
(Ej: s = bandera dera)
Subcadena de s
Cadena que se obtiene eliminando un prefijo y un sufijo de s.
(Ej: s = bandera ande)
Para toda s, tanto s como son: prefijo, sufijo y subcadena
Prefijo, sufijo o
subcadena propios de s
Cualquier cadena no vaca x, que sea prefijo, sufijo o
subcadena, pero s x

Subsecuencia de s
Cualquier cadena formada eliminando 0 o ms smbolos no
necesariamente contiguos de s
(Ej: s= bandera bada)
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

4

Ej:

S = compiladores

compi, compila, com
dores, compiladores,
pila, , compila
pila, , compi
compis, compiladores, cmpr


2. Lenguajes

se denomina lenguaje sobre un alfabeto V a cualquier conjunto de cadenas de V y se
representa con L.

L V*. L puede ser finito o infinito.

Tanto V como V* son lenguajes sobre V.

Ej:
V = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }

L
1
(V) = { n de 3 cifras }
L
2
(V) = { todos los n }
L
3
(V) = { n binarios }


2.1. CONJUNTO VACO

o {} , es aquel conjunto que no tiene ninguna palabra.


2.2. CONJUNTO QUE CONTIENE LA CADENA VACA

{ }.


2.3. OPERACIONES APLICADAS A LENGUAJES

Dados dos lenguajes L y M se define:

Unin de L y M: L U M

L U M = { s / s est en L o s est en M }

Concatenacin de L y M: L . M

L . M = { s . t / s est en L y t est en M }
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

5


Cerradura de Kleene: L*


L* = U L
i


i=0


L* = L
0
U L
1
U L
2
U .................. L
n
U ......

L
0
= { }

L
1
= L

L
2
= L . L

L
n
= L
n-1
. L


Cerradura positiva de L: L
+



L
+
= U L
i


i=1


Exponenciacin: L
n

L
n
= L
n-1
. L = L . L . L . L .......... L

n veces



Ej:
L = { a, aab}
M = { b, bb }

L U M = { a, aab, b, bb }

L . M = { ab, aabb, abb, aabbb }

L* = L
0
U L
1
U L
2
U ..........
= { , a, aab, aa, aaab, aaba, aabaab, ......... }

L
+
= L* - { }

L
2
= { aa, aaab, aaba, aabaab }


SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

6

Ej:

L = { A, B, .........., Z, a, b, ...........z }
D = { 0, 1, ..........., 9 }


L U D = { conjunto de letras y dgitos }

L . D = { conjunto de cadenas con 1 letra y 1 dgito }

L
4
= { conjunto de cadenas de 4 letras }

L* = { conjunto de cadenas de 1 o ms letras, includa }

D
+
= { conjunto de cadenas de 1 o ms dgitos }

L (L U D) = { conjunto de cadenas de letras y dgitos que empiezan
con una letra}



2.4. REPRESENTACIN DE LENGUAJES

Una forma de representar un lenguaje es dar un algoritmo que determine si una
palabra pertenece o no al lenguaje.

Una forma ms general es dar un procedimiento que se detenga con SI, si la
palabra pertenece al lenguaje, y no se detenga o genere un NO, en caso de que no
pertenezca.

Estos algoritmos o procedimientos se llaman Reconocedores de lenguajes

Algunos lenguajes pueden ser reconocidos con procedimientos, pero no con
algoritmos.

La diferencia que existe entre algoritmo y procedimiento es que el primero logra
llegar a un resultado final luego de varias iteraciones, mientras que el segundo puede
no terminar nunca.


Ej:

Dado un n saber si es primo Algoritmo

Dado un n buscar el primer entero > que ste, que sea perfecto
Procedimiento




SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

7


3. Gramticas

3.1. DEFINICIN

Una gramtica es una cuaterna: G = { V
T
, V
N
, P, S } donde:

V
T
: es el alfabeto terminal (finito). Es el conjunto de smbolos que formarn las
palabras que se quieran definir.

V
N
: es el alfabeto no terminal (finito). Es el conjunto de smbolos auxiliares o
variables que se usan para llegar a obtener las palabras.

P : es el conjunto de producciones (finito). Son las reglas de transformacin de una
cadena en otra que dan el mecanismo para generar palabras.

S : es el smbolo de arranque (Start). Se lo llama axioma o raz de la gramtica,
pertenece a V
N
y es la forma de comenzar el proceso.


3.2. PROPIEDADES

Adems:

V
T
V
N
= V
T
V
N
= V


Las producciones P son expresiones de la forma:
donde V
+
y V*

Decimos que produce directamente si existe una produccin

*
Decimos que produce w (y lo notamos) w, si existe una secuencia de
producciones directas

= v
0
v
1
v
2
............. v
n
= w

Toda cadena w que contenga algn no terminal se llamar forma sentencial.


3.3. LENGUAJE GENERADO POR UNA GRAMTICA

es el conjunto de todas las palabras o cadenas generadas por G.

Se lo indica con L (G).

*
L (G) = { w / w V
T
* s w }

SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

8
Ej:

Sea G = { V
T
, V
N
, P, S } V
T
= { 0, 1 }
V
N
= { S }

P = { S 0S1, S 01 }




L (G) = { 0
n
1
n
/ n 1 }



Ej:

Sea G = { V
T
, V
N
, P, S } V
T
= { a, b }
V
N
= { S }

P = { S Sa, S b }





L (G) = { b a
n
/ n 0 }



Ej:

Sea G = { V
T
, V
N
, P, S } V
T
= { a, b }
V
N
= { A, B, S }

P /
1) S aSBA
2) S abA
3) AB BA
4) bB bb
5) bA ba
6) aA aa



L (G) = { a
n
b
n
a
n
/ n 1 }


3.4. TIPOS DE GRAMTICAS

Las gramticas se pueden clasificar segn distintas restricciones que se colocan al
sistema de reescritura o producciones:
S
0S1
00S11
000S111
0..01..1
S
Sa
Saa
Saaa
Sa..a
b a..a

S
aSBA

a
n-1
S (BA)
n-1

a
n
b B
n-1
A
n
a
n
b B B
n-2
A
n

a
n
b
n
A
n

a
n
b
n-1
bA A
n-1

a
n
b
n-1
ba A
n-1

a
n
b
n
aA A
n-2



SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

9


Gramtica de tipo 0: o de estructura de frases

Es la menos restrictiva de todas. Corresponde a la definicin general dada
anteriormente.

Gramtica de tipo 1: o dependiente del contexto o sensible al contexto.

Es ms restrictiva que la anterior.
Las producciones tienen la forma:

x A y x z y, donde A V
N

(x, y, z) ( V
N
V
T
) *

El nombre dependiente del contexto se debe a que solo se puede cambiar A por z
en el contexto de x _ y

Ej: el lenguaje natural

Gustavo e Ignacio

Gramtica de tipo 2: o libre de contexto

Las producciones tienen la forma:

A x , donde A V
N

x ( V
N
V
T
) *

Permiten definir reglas aritmticas

Ej:

E T / E + T / E T
T F / T * F / T F
F D
D 0 / 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9

En general la sintaxis de los lenguajes de programacin se define con gramticas de
tipo 2.

Gramtica de tipo 3: o regular

Las producciones son de la forma:

A a o A aB, donde ( A, B ) V
N

a V
T


Esta definicin corresponde a una gramtica regular a izquierda.

SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

10

Si usamos una gramtica regular a derecha:

A Ba


Ej: gramtica binaria

S 0 / 1
S T
T 0 / 1 / 0T / 1T


Ej: Hallar una gramtica para el siguiente lenguaje

L (G) = { w / w { 0, 1 }* y no tiene dos 1 seguidos }

G = { V
T
, V
N
, P, S } V
T
= { 0, 1 }
V
N
= { S }

P /
1) S 0
2) S 1
3) S 0S
4) S 10S



4. Arboles de derivacin para Gramticas libres de contexto

4.1. ARBOL

es un conjunto finito de nodos conectados por flechas direccionadas que satisface las
tres siguientes condiciones:

1) Existe un nodo al que no llega ninguna flecha (raz).
2) Para todo nodo del rbol una secuencia de flechas que van desde la raz al
nodo.
3) A cada nodo, excepto la raz, llega solamente una flecha.


4.2. DESCENDIENTE DIRECTO

un nodo n se dice descendiente directo de otro nodo m si llega directamente una
flecha desde m a n.

4.3. DESCENDIENTE

un nodo n se dice descendiente de otro nodo m, si una secuencia de nodos n
1
, n
2
,
........., n
k
/ n
1
= m, n
k
= n y n
i+1
es descendiente directo de n
i
.
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

11

Arbol de derivacin para G

Sea G = { V
T
, V
N
, P, S } una gramtica libre de contexto. Un rbol es un rbol de
derivacin para G si:

1) Todo nodo tiene un label que es un smbolo de V.
2) El label de la raz es S.
3) Si un nodo tiene al menos un descendiente distinto de s, y tiene etiqueta A,
entonces A V
N.

4) Si los nodos, etiquetados con A
1
, A
2
, ........., A
n
son los descendientes directos del
nodo A entonces:
A A
1
, A
2
, ........., A
n
es una produccin en P.


4.4. SUBRBOL

es un rbol obtenido a partir de uno de los nodos del rbol de derivacin. La raz del
subrbol no tiene que ser obligatoriamente el Start.


Ej:

G = { {S, A } , { a, b } , P , S }

P /
1) S aAS
2) A SbA
3) A SS
4) S a
5) A ba



Subrbol












*
Palabra generada: aabbaa A abba


S


a A S


S b A a

a b a

A


S b A

a b a
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

12
Ej:

G = { { S } , { 0, 1 } , P , S }
P /
1) S 0S1
2) S 01



Subrbol











*

Palabra generada: 000111 S 01


Ej:

G = { { S, E, F, G } , { +,
*
, 0 - 9 } , P , S } P /
1) S E / E + F / E - F
2) E F / F
*
G
3) G 0 9
4) F G



Subrbol












*

Palabra generada: 7
*
6 + 8 E 7
*
6

S


0 S 1


0 S 1

0 1

S


0 1


S


E + F

F
*
G G

G 6 8

7
E

F
*
G

G 6

7
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

13
4.5. AMBIGEDAD

Una gramtica es ambigua si el lenguaje que genera tiene cadenas que son
ambiguas.
Una cadena es ambigua si dos rboles de derivacin distintos que la representan.

Ej:
G = { { S }, { a, +,
*
, ( , ) }, P, S }

P /
1) S S + S
5) S S
*
S
6) S ( S )
7) S a















a + a
*
a


5. Expresiones Regulares

letra ( letra | digito ) *

Una expresin regular r, representa un lenguaje L ( r ).
Una expresin regular se construye a partir de expresiones regulares ms simples,
usando un conjunto de reglas definitorias.

Las reglas de definicin especifican como se forma L ( r ) combinando de varias
maneras los lenguajes representados por las subexpresiones de r.
Las siguientes reglas definen las expresiones regulares del alfabeto .
1) es una expresin regular designada por { }, el conjunto que contiene la
cadena vaca.
2) Si a es un smbolo de , entonces a es una expresin regular designada por
{ a }, el conjunto que contiene la cadena a.
3) Suponiendo que r y s son expresiones regulares representadas en los
lenguajes L ( r ) y L ( s ) entonces:
S

S
*
S


S + S

a a a


S

S + S


S + S

a a a


SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

14
( r ) | ( s ) es una expresin regular representada por L ( r ) L ( s ).

( r ) . ( s ) es una expresin regular representada por L ( r ) . L ( s ).

( r ) * es una expresin regular representada por ( L ( r ) ) *.

( r )
2
es una expresin regular representada por L ( r )
2
.


Un lenguaje designado por una expresin regular es un conjunto regular.
La especificacin de una expresin regular es un ejemplo de definicin recursiva. Las
reglas 1 y 2 son la base. La regla 3 proporciona el paso inductivo.

( a ) | ( ( b ) * ( c ) ) = a | b * c

Se pueden evitar los parntesis innecesarios en las expresiones regulares si se
adoptan las convenciones:

el operador * tiene la mayor precedencia y es asociativo por izquierda.
la concatenacin tiene la siguiente mayor precedencia y es asociativa por
izquierda.
| tiene la menor precedencia y es asociativo por izquierda.


Ej: Sea = { a, b }

1) La expresin regular a | b designa { a, b }
2) La expresin regular ( a | b ) ( a | b ) designa { aa, ab, ba, bb }
3) La expresin regular a * designa { , a, aa, aaa, ... }
4) La expresin regular ( a | b ) * designa { 0 o ms casos de una a o b }
5) La expresin regular a | a * b designa { a y todas las que tienen 0 o ms a
seguidas de una b}

Si 2 expresiones regulares r y s representan el mismo lenguaje, se dice que son
equivalentes ( r = s ).

Ej: ( a | b ) = ( b | a )


5.1. PROPIEDADES DE LAS EXPRESIONES REGULARES

r | s = s | r | es conmutativo
r | ( s | t ) = ( r | s ) | t | es asociativo
( r . s ) . t = r . ( s . t ) . es asociativa
r . ( s | t ) = r . s | r . t
(s | t ) . r = s . r | t . r
. es distributiva sobre |
. r = r
r . = r
es el elemento identidad en la
concatenacin
r * = ( r . ) * es el elemento identidad
r * * = r * * es idempotente
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

15

5.2. DEFINICIONES REGULARES

Es posible definir expresiones regulares usando nombres como si fueran smbolos.
Dado un alfabeto , una definicin regular es una secuencia de definiciones de la
forma:

d
1
r
1

d
2
r
2
. .
. .
d
n
r
n

donde cada d
i
es un nombre distinto y cada r
i
es una expresin regular sobre los
smbolos de { d
1
, d
1
, .... ,d
i-1
}

(los smbolos bsicos y los nombres previamente definidos)

Ej:

= { A, B, ......., Z, a, b, ......., z } { 0, 1, ......., 9 }

letra A | B | ..... | Z | a | b | ..... | z
digito 0 | 1 | ..... | 9
id letra ( letra | digito ) *



Ej:

= { Claudio, Anala, Diego, juega, no juega, tenis, ftbol, voley }


nombre Claudio | Anala | Diego
actividad juega | no juega
deporte tenis | ftbol | voley

oracin nombre . actividad . deporte *


5.3. ABREVIATURAS EN LA NOTACIN

Algunas construcciones aparecen con mucha frecuencia en una expresin regular. En
estos casos se pueden usar algunas abreviaturas.


1) Uno o ms casos. El operador
+
significa uno o ms casos de. La expresin
regular a
+
representa al conjunto de todas las cadenas de 1 o ms a.

Entonces: r r* = r
+

SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

16

2) Cero o un caso. El operador ? significa cero o un caso de
Entonces: r | = r ?

3) Clases de caracteres. Se puede abreviar una expresin regular a | b | c,
mediante la notacin [ a b c ] o [ a c ]


Ej:

digito 0 | 1 | .....| 9
digitos digito . digito *
fraccion_optativa digitos |
exp_opt ( E ( + | - | ) digitos ) |
num digitos . fraccion_optativa . exp_opt


digito [ 0 9 ]
digitos digito
+

fraccion_optativa ( digitos ) ?
exp_opt ( E ( + | - ) ? digitos ) ?
num digitos . fraccion_optativa . exp_opt



6. Autmatas Finitos

Un autmata finito puede representar un reconocedor de un lenguaje. Es un
programa que toma como entrada una cadena x y responde SI, si x es una frase del
programa y NO, en caso contrario. El autmata finito representa una expresin
regular y reconoce gramticas de tipo 3.

ste puede ser determinista o no determinista dependiendo de que desde un
estado se pueda producir una transicin a solo uno o ms estados.



6.1. AUTMATAS FINITOS NO DETERMINISTAS

Un AFN es un modelo matemtico formado por:

1) Un conjunto de estados S.
2) Un conjunto de smbolos de entrada (alfabeto).
3) Una funcin de transicin mueve que transforma pares estado-smbolo en
conjuntos de estados.
4) Un estado s
0
que se considera inicial.
5) Un conjunto de estados F considerados estados de aceptacin o finales.



SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

17

6.2. GRAFO DE TRANSICIONES

Un AFN se representa mediante un grafo de transiciones en el que los nodos son
estados y las aristas, transiciones.
Las aristas pueden etiquetarse con el smbolo especial .

El siguiente es el grafo de transiciones que reconoce al lenguaje ( a | b ) * a b b



a






Estados: 0, 1, 2, 3 Estado inicial: 0
Alfabeto: { a, b } Estados finales: { 3 }



6.3. TABLA DE TRANSICIONES

Otra forma de representar un AFN es mediante una Tabla de Transiciones, donde
hay una fila por cada estado y una columna por cada smbolo de entrada y si es
necesario.
Cada entrada representa el conjunto de estados que puede ser alcanzado por una
transicin desde el estado i con la entrada j.




Estado Smbolo de entrada
a b
0 { 0, 1 } { 0 }
1 - { 2 }
2 - { 3 }



Un AFN acepta una cadena de entrada x si hay algn camino en el grafo de
transiciones desde el estado de inicio a algn estado de aceptacin, de forma que las
etiquetas de las aristas a lo largo de dicho camino deletreen x.

El AFN anterior acepta las cadenas abb, aabb, babb, aaabb.
El lenguaje definido por un AFN es el conjunto de cadenas que acepta.



0 1 2 3
a b b inicio
b
a
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

18

6.4. AUTMATAS FINITOS DETERMINISTAS

Un AFD es un caso especial de un AFN en el cual:

1) Ningn estado tiene una transicin .
2) Para cada estado s y cada smbolo de entrada a, hay a lo sumo una arista
etiquetada a que sale de s.

Por lo tanto es fcil determinar si un AFD acepta una cadena, ya que hay a lo sumo un
camino desde el estado de inicio etiquetado con esa cadena.

El siguiente grafo reconoce el mismo lenguaje que el anterior pero respetando un AFD.











6.5. PASO DE UNA EXPRESIN REGULAR A UN AFN

Para el pasaje de una expresin regular a un AFN se utiliza un mtodo llamado
Construccin de Thompson.
Primero se hace un anlisis sintctico de la expresin regular en sus subexpresiones
correspondientes que la constituyen. Se construye un AFN para cada uno de los
smbolos bsicos de la expresin regular r ( y smbolos del alfabeto).
Luego, guindose por la estructura sintctica de r, se combinan inductivamente los
AFN hasta obtener el AFN de la expresin completa.

La construccin de los AFN sigue las siguientes reglas:


1) Para , construir el AFN





2) Para a de , construir el AFN





3) Si N ( s ) y N ( t ) son AFN para s y t (expresiones regulares)

0 1 2 3
a b b inicio
a
b
a
a
b

i f
inicio

i f
a inicio
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

19
a) Para s | t, construir el AFN N ( s | t )









b) Para s.t, construir el AFN N ( s . t )






c) Para s *, construir el AFN N ( s ) *








d) Para la expresin regular ( s ), construir el AFN N ( s )

Cada vez que se construye un nuevo estado se le debe dar un nombre distinto.
El AFN generado tiene a lo sumo el doble de estados que de smbolos y operadores
en r, ya que en cada paso de la construccin se crean a lo sumo 2 nuevos estados.
El AFN N ( r ) tiene exactamente un estado de inicio y otro de aceptacin.

Ej:

r = (a | b) * a b b

















i
f
inicio

N ( s )


N ( t )





i
f N ( s )





i
f
N ( t ) N ( s )
inicio
a
b
5

2 3
a inicio

4 5
b inicio
6
inicio


4
b
1

2 3
a



a | b

5
6


4
b
1

2 3
a



inicio
0

8
1

7 10

b
9
b a


SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

20

6.6. CONVERSIN DE UN AFN EN UN AFD

El objetivo de esta conversin consiste en construir un AFD que reconozca el mismo
lenguaje que un AFN del cual se parte. Esto se logra mediante un algoritmo llamado
de construccin de subconjuntos.

La base del proceso de conversin consiste en relacionar cada estado del AFD con
un conjunto de estados del AFN.
En la tabla de transiciones de un AFN, cada entrada es un conjunto de estados,
mientras que en la tabla de un AFD, cada entrada es un estado a lo sumo.

El AFD usa un estado para localizar todos los posibles estados en los que puede
estar el AFN despus de leer cada smbolo de la entrada.
Llamamos N al AFN de entrada y D al AFD de salida.

El algoritmo construye una tabla de transiciones para D teniendo en cuenta las
siguientes operaciones, para localizar los conjuntos de estados del AFN (donde s
representa un estado del AFN y T, un conjunto de estados del AFN).


cerradura- ( s ) Conjunto de estados del AFN alcanzables desde el estado s del
AFN con transiciones solamente.

cerradura- ( T ) Conjunto de estados del AFN alcanzables desde algn estado s
en T con transiciones solamente.

mueve ( T, a ) Conjunto de estados del AFN hacia los cuales hay una transicin
con el smbolo de entrada a, desde algn estado s en T del AFN.


El primer paso consiste en detectar el estado de inicio de N, llamado s
0
, que definir
cerradura- ( s
0
).
Este es un conjunto de estados alcanzables desde s
0
.

Ahora corresponde tomar cada smbolo de entrada a y ejecutar la operacin mueve
( T, a ), para obtener cada nuevo conjunto de estados, que se definir por cerradura-
(mueve ( T, a ) ).

Luego se debe ingresar el conjunto obtenido en cada caso como nuevo miembro de
la tabla de transiciones D.

Para cada conjunto obtenido, que no haya sido analizado se ejecuta nuevamente la
operacin mueve ( T, a ), hasta que se hayan recorrido todos.

Finalmente se definen como estados de aceptacin de D a aquellos conjuntos de
estados del AFN que contengan al menos un estado de aceptacin de N.




SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

21
Ej:

r = (a | b) * a b b













cerradura- ( 0 ) = { 0, 1, 2, 4, 7 } = A
mueve ( A, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = { 1, 2, 3, 4, 6, 7, 8 } = B
mueve ( A, b ) = { 5 }
cerradura- ({ 5 }) = { 1, 2, 4, 5, 6, 7 } = C
mueve ( B, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = { 1, 2, 3, 4, 6, 7, 8 } = B
mueve ( B, b ) = { 5, 9 }
cerradura- ({ 5, 9 }) = { 1, 2, 4, 5, 6, 7, 9 } = D
mueve ( C, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( C, b ) = { 5 }
cerradura- ({ 5 }) = C
mueve ( D, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( D, b ) = { 5, 10 }
cerradura- ({ 5, 10 }) = { 1, 2, 4, 5, 6, 7, 10 } = E
mueve ( E, a ) = { 3, 8 }
cerradura- ({ 3, 8 }) = B
mueve ( E, b ) = { 5 }
cerradura- ({ 5 }) = C














Estado Smbolo de entrada
a b
A B C
B B D
C B C
D B E
E B C

5
6


4
b
1

2 3
a



inicio
0

8

7 10

b
9
b a


SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

22













6.7. MINIMIZACIN DEL N DE ESTADOS DE UN AFD

Se debe suponer inicialmente que tenemos un AFD llamado M con un conjunto de
estados S y un alfabeto de smbolos de entrada .
Se supone tambin que cada estado tiene una transicin con cada smbolo de la
entrada. Si no fuera as, se puede introducir un nuevo estado inactivo , con
transiciones de a con todas las entradas y aadir una transicin desde el estado s
al en la entrada a si no hubo transicin desde s en a.

Se dice que una cadena w distingue al estado s del estado t si, empezando con el
AFD M en el estado s y alimentndolo con w, se termina en un estado de aceptacin,
pero comenzando en t, no se termina en un estado de aceptacin o viceversa.

Se puede definir un algoritmo que minimice el n de estados del AFD, que funciona
encontrando todos los grupos de estados que pueden ser diferenciados por una
cadena de entrada. Cada grupo que no puede diferenciarse, se fusiona en un nico
estado.

Las caractersticas de dicho algoritmo son las siguientes:

Entrada: un AFD M con un conjunto de estados S, un alfabeto , y
transiciones para todos los estados y entradas de smbolos, un estado de
inicio s
0
y un conjunto de estados de aceptacin F.

Salida: un AFD M que acepta el mismo lenguaje que M y tiene el menor
nmero de estados posible.


Procedimiento

1) Construir una particin inicial del conjunto de estados con 2 grupos: los estados
de aceptacin F y los estados de no-aceptacin S-F.

2) Construir una nueva particin
nueva
en la que: para cada grupo de , dividirlo en
subgrupos tales que, dos estados s y t del grupo estn en el mismo subgrupo si,
para todos los smbolos de entrada a, los estados s y t tienen transiciones en a
hacia estados del mismo grupo de .
A B D E
a b b inicio
a
a
a
a
b
C
b
b
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

23
Finalmente sustituir el grupo de
nueva
, por todos los subgrupos.

3) Si
nueva =


hacer
final =
e ir al paso 4)
Sino, repetir el paso 2) con

=

nueva.

4) Elegir un estado en cada grupo de
final
como representante del grupo. Los
representantes sern estados del AFD M reducidos.
Se elige el estado inicial de M como representante de estado inicial de M y los
estados finales de M como representantes de finales de M .

5) Si M tiene un estado inactivo, , que no es de aceptacin y que tiene
transiciones hacia l mismo con todos los smbolos de entrada, eliminarlo
de M .
Eliminar tambin todos los estados que no sean alcanzables desde el estado
inicial y todas las transiciones a desde otros estados se convierten en
indefinidas.

Ej:

Dado el siguiente AFD:












Particin inicial :

Grupos:
(E) estado de aceptacin

(ABCD) estados de no-aceptacin



(E) no se puede dividir, as que va a
nueva


(ABCD) con la entrada a: se va en todos los casos a estados del mismo
grupo

con la entrada b: A,B,C van al grupo (ABCD)
D va al grupo (D)

Entonces
nueva
: (ABC) (D) (E)
A B D E
a b b inicio
a
a
a
a
b
C
b
b
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

24


(ABC) con la entrada a: no hay divisin

con la entrada b: A,C van al grupo (ABC)
B va al grupo (D)


Entonces
nueva
: (AC) (B) (D) (E)


Ya no se pueden hacer ms divisiones entonces:

final
: (AC) (B) (D) (E)



Se elige A como representante de (AC) y B, D, E como representantes de los
respectivos grupos.

A es el estado de inicio y E, el de aceptacin


La tabla de transiciones queda definida de la siguiente manera:


Estado Smbolo de entrada
a b
A B A
B B D
D B E
E B A




El autmata reducido queda as:














A B

D E
a b b inicio
a
b
a
a
b
SINTAXIS Y SEMNTICA DE LOS LENGUAJES (UTN-FRR)

PROF. ING. EDUARDO AMAR - INTRODUCCIN A LOS LENGUAJES FORMALES

25
Ej:

r = x (x | y ) * y


La tabla de transiciones queda definida de la siguiente manera:


Estado Smbolo de entrada
x y
A B -
B B D
D B D



El autmata reducido queda as:

A
B
D
x inicio
y
x
y
x

Вам также может понравиться