You are on page 1of 4

Unidad 4.

-
Autmatas Finitos y
Gramticas Regulares










1. Gramticas Regulares

Una gramtica, G = (V, T, P, S), est formada por cuatro elementos:
1. El alfabeto de variables V.
2. El alfabeto de smbolos terminales T.
3. El conjunto de reglas de produccin P.
4. El smbolo inicial SV.

La clase Gramtica se utilizar para representar cualquier gramtica. As,
necesitaremos disponer de las variables de instancia y mtodos necesarios para
manipularlas de acuerdo con la definicin anterior.

Analicemos, en primer lugar, qu variables de instancia sern necesarias. Los
alfabetos de variables y de smbolos terminales pueden representarse mediante dos
objetos de tipo String, asumiendo que los elementos que los componen se dan de
manera ordenada y que el primer carcter de la cadena que representa al alfabeto de
variables corresponde al smbolo inicial de la gramtica. El conjunto de reglas de
24 Jos del Sagrado Martnez Prcticas de Teora de Autmatas y Lenguajes Formales
produccin se representar mediante un objeto de la clase Vector que contendr a su vez
objetos de la clase Produccin
1
.

Adems del constructor por defecto que se encarga de construir una gramtica
vaca, habr que incluir un constructor que reciba todos los elementos de la gramtica
(alfabeto de variables, alfabeto de terminales y conjunto de reglas de produccin).
Tambin ser necesario disponer de un mtodo que visualice la gramtica en pantalla
void print( ), de otro que lea de un archivo de texto la gramtica void leer (String
archivo) , o escribirla void escribir (String archivo)y de mtodos que permitan
acceder a sus elementos de manera individual String getVariables( ), String
getTerminales( ), String getProducciones( ).

A la hora de leer y escribir el archivo con la definicin de una gramtica hay que
tener en cuenta cmo se especificarn sus elementos en el mismo. Por ejemplo, la
gramtica G = ({S,A}, {a,b}, {SaA, AaAb|b}, S) se representar en un archivo de
texto de la manera siguiente:
SA
ab
3
S aA
A aAb
A b
Cada una de las filas de este archivo representa:
Primera fila.- Una cadena en la que se especifican, ordenadamente, los smbolos
que forman el alfabeto de las variables.
Segunda fila.- Una cadena en la que se especifican, ordenadamente, los smbolos
que forman el alfabeto de los smbolos terminales.
Tercera fila.- Nmero de reglas de produccin que componen la gramtica.
Cuarta fila.- Primera regla de produccin. Se especifica primero la parte
izquierda de la regla y, despus, la parte derecha ambas separadas por espacios
en blanco. Cuando se trate de una produccin nula, A , la cadena vaca se
representar por e.
Siguientes filas.- Resto de reglas de produccin.

Una gramtica se dice que es regular si sus reglas de produccin son de la forma
A uB A u

1
Esta clase se proporcionar como documentacin adicional e incluye todos sus mtodos y
documentacin propia.
Unidad 4 Autmatas Finitos y Gramticas Regulares 25
donde uT
*
y A,BV. Esta comprobacin la llevar a cabo el mtodo boolean
esRegular ( ) dentro de la clase Gramtica. Una vez, finalizada la implementacin de
esta clase, dispondremos de todos los elementos necesarios para llevar a la prctica la
equivalencia entre AFDs y gramticas regulares.


2. De AFD a Gramticas Regulares

Dado un AFD, M=(Q, , , q
0
, F), la gramtica regular, G=(V, T, P, S), que genera el
mismo lenguaje que acepta M se define:
T = ,
Si q
0
no es un estado final, qoQ, entonces V=Q, S=q
0
y las reglas de produccin de G
son:
o Si (q
i
,a) = q
j
, q
i
aq
j

o Si q
i
F, q
i

Si q
0
es un estado final, entonces hay que aadir una nueva variable inicial S, V = {S}
Q, y adems de las reglas de produccin anteriores aadiremos las siguientes: Sq
0
,
S.

El mtodo
Gramtica afd2gramatica ( )
de la clase AFD se encargar de realizar el proceso de transformacin de AFD a
gramtica regular descrito. Adems deber modificar el mtodo main de la clase AFD
para que tambin pueda encontrarse la gramtica regular equivalente a cualquier AFD.
Para ello el usuario deber escribir en la lnea de rdenes:
AFD <nombre archivo>
donde <nombre archivo> indicar la ubicacin y nombre del archivo de texto que
contiene la definicin del autmata cuya que se desea transformar. Como resultado
main visualizar y, despus, almacenar en el archivo de texto afd2gr.txt, siguiendo la
estructura anteriormente indicada, la gramtica regular obtenida.


3. De Gramticas Regulares a AFNE

Dada una gramtica regular, G=(V,T,P,S), el AFNE, M=(Q,T,,q
0
,F), que reconoce el
mismo lenguaje que genera la gramtica viene definido por:
Q = {[] | (=S) ( AV, uT
*
tales que A uP)}. Es decir, los estados son
todas las cadenas formadas por smbolos terminales y variables que se obtienen a partir
de la parte derecha de las producciones al ir eliminando smbolo a smbolo desde el
inicio de estas. P.ej. si la parte derecha de la regla de produccin es la cadena 10A,
obtendremos los estados [10A], [0A], [A] y [].
26 Jos del Sagrado Martnez Prcticas de Teora de Autmatas y Lenguajes Formales
La funcin de transicin, , se define de la manera siguiente:
o Si A es una variable, ([A], ) = {[] | AP}. Es decir, aadiremos tantas
producciones nulas como reglas de produccin tenga la variable y cada una de
ellas conducir al estado formado por la cadena que aparece en la parte derecha
de estas reglas.
o Si aT y T
*
T
*
V, entonces ([a],a) = {[]}. Para los estados cuya cadena
comienza por un smbolo terminal, iremos consumiendo ste y aadiendo una
transicin que conduzca al estado formado por la palabra que queda despus de
eliminarlo.
q
0
= [S]
F = {[]}.

El mtodo
AFNE gramatica2afne ( )
de la clase Gramtica se encargar de realizar el proceso descrito de transformacin de
una gramtica regular a AFNE. Adems deber incluir un mtodo main en la clase
Gramtica para que pueda encontrarse el AFNE equivalente. Para ello el usuario deber
escribir en la lnea de rdenes:
Gramtica <nombre archivo>
donde <nombre archivo> indicar la ubicacin y nombre del archivo de texto que
contiene la definicin de la gramtica regular que se desea transformar. Como resultado
main visualizar y, despus, almacenar en el archivo de texto gr2afne.txt, siguiendo
la estructura anteriormente indicada en la Unidad 2, el AFNE obtenido.

You might also like