Professional Documents
Culture Documents
GRAMÁTICA REGULAR
Una gramática, G = (V, T, P, S), está formada por cuatro elementos:
1. El alfabeto de variables V.
2. El alfabeto de símbolos terminales T.
3. El conjunto de reglas de producción P.
4. El símbolo inicial S V.
En informática una gramática regular es una gramática formal (N, Σ, P, S) que puede
ser clasificada como regular izquierda o regular derecha. Las gramáticas regulares
sólo pueden generar a los lenguajes regulares de manera similar a los autómatas
finitos y las expresiones regulares.
3. A → ε, donde A pertenece a N.
3. A → ε, donde A pertenece a N.
Un ejemplo de una gramática regular G con N = {S, A}, Σ = {a, b, c}, P se define
mediante las siguientes reglas:
S → aS
S → bA
A→ε
A → cA
Además del constructor por defecto que se encarga de construir una gramática
vacía, habrá que incluir un constructor que reciba todos los elementos de la
gramática (alfabeto de variables, alfabeto de terminales y conjunto de reglas de
producción). También será necesario disponer de un método que visualice la
gramática en pantalla void print( ) , de otro que lea de un archivo de texto la
gramática void leer (String archivo), o escribirla void escribir (String archivo) y de
métodos 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 definición de una gramática hay que
tener en cuenta cómo se especificarán sus elementos en el mismo. Por ejemplo,
la gramática G = ({S,A}, {a,b}, {S aA, 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:
Dado un AFD, M=(Q, , , q0, F), la gramática regular, G=(V, T, P, S), que genera el
mismo lenguaje que acepta M se define:
T= ,
Si q0 no es un estado final, qo Q, entonces V=Q, S=q0 y las reglas de producción de G
son:
o Si (qi ,a) = qj, qi aqj
o Si qi F, qi
Si q0 es un estado final, entonces hay que añadir una nueva variable inicial S, V =
{S} Q, y además de las reglas de producción anteriores añadiremos las
siguientes: S q0 , S .
El método
Gramática afd2gramatica ( )
de la clase AFD se encargará de realizar el proceso de transformación de AFD a
gramática regular descrito. Además deberá modificar el método main de la clase
AFD para que también pueda encontrarse la gramática regular equivalente a
cualquier AFD. Para ello el usuario deberá escribir en la línea de órdenes:
AFD <nombre archivo>
donde <nombre archivo> indicará la ubicación y nombre del archivo de texto que
contiene la definición del autómata cuya que se desea transformar. Como
resultado main visualizará y, después, almacenará en el archivo de texto “afd2gr.txt”,
siguiendo la estructura anteriormente indicada, la gramática regular obtenida.
Lenguajes Regulares Karina Vásquez
Dada una gramática regular, G=(V,T,P,S), el AFNE, M=(Q,T, ,q0,F), que reconoce el
mismo lenguaje que genera la gramática viene definido por:
Q = {[ ] | ( =S) ( A V, u T* tales que A u P)}. Es decir, los estados son
todas las cadenas formadas por símbolos terminales y variables que se obtienen a
partir de la parte derecha de las producciones al ir eliminando símbolo a
símbolo desde el inicio de estas. P.ej. si la parte derecha de la regla de producción es
la cadena 10A, obtendremos los estados [10A], [0A], [A] y [ ].
Ejemplo:
BIBLIOGRAFÍA: