Está en la página 1de 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 Produccin1 . 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, A aAb|b}, S) se representar en un archivo de texto de la manera siguiente: SA ab 3 S aA A aAb Ab 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

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 A FD, M=(Q, , , q0 , F), la gramtica regular, G=(V, T, P, S), que genera el mismo lenguaje que acepta M se define:
T = , Si q0 no es un estado final, qoQ, entonces V=Q, S=q0 y las reglas de produccin de G son: o Si (qi ,a) = qj , qi aqj o Si qi F, qi Si q0 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: Sq0 , 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,,q0 ,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. q0 = [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.

También podría gustarte