Documentos de Académico
Documentos de Profesional
Documentos de Cultura
y lenguajes
Conferencia 4
Orden del día
A
LENGUAJES INDEPENDIENTES DEL CONTEXTO
Los lenguajes independientes del contexto que también se conocen con el nombre de
gramáticas de contexto libre son un método recursivo sencillo de especificación de reglas
gramaticales con las que se pueden generar cadenas de un lenguaje.
Es factible producir de esta manera todos los lenguajes regulares, además de que existen
ejemplos sencillos de gramáticas de contexto libre que generan lenguajes no regulares
Las reglas gramaticales de este tipo permiten que la sintaxis tenga variedad y
refinamientos mayores que los realizados con lenguajes regulares, en gran medida
sirven para especificar la sintaxis de lenguajes de alto nivel y otros lenguajes
formales.
Hasta ahora, se han visto dos formas de definir lenguajes: a través de autómatas finitos, y
por medio de expresiones regulares. Ahora veremos otra forma, usando el concepto de
gramáticas.
Basamos el estudio siguiente en el concepto básico de gramática formal como un conjunto de
reglas para formar correctamente las frases de un lenguaje (ejemplo la gramática del español,
inglés, francés, etc).
Reglas Gramaticales
Los símbolos que no son variables son constantes. Por ejemplo una regla gramatical es
dada como:
V = Es el alfabeto de variables
Σ = Es el alfabeto de constantes
R = Es el conjunto de reglas, es un subconjunto finito de V x (ΣV U Σ )
S= Es el símbolo inicial y es un elemento de V
Se pueden derivar muchas otras palabras como bababa L(G) y que pertenecen también
al lenguaje generado por la gramática. Formalmente esta gramática se representaría
como:
({S, A,B}, {a, b}, {(S, aA), (S, bA), (A, aB), (A, bB), (A, a), (B, aA), (B, bA)}, S)
Para el caso de las reglas A → b, se tienen transiciones (A, b,Z), donde Z es un nuevo
estado para el que no hay un no terminal asociado; Z es el ´único estado final del
autómata.
Ejemplo:
S → aA │ S → bA │ A → aB │ A → bB │A → a │ B → aA │ B →bA
Es lo mismo que:
S → aA │ bA │, A → aB │ bB │ a │ , B → aA │ bA
haciendo uso del simulador JFLAP8
, que dentro de sus opciones nos
permite introducir una gramática y
generar el AF, se muestra el
resultado de la conversión
automática de G → AF (de
Gramática a Autómata Finito).
Ejemplo:
Dado el Lenguaje L generado por la gramática G2 = (V, Σ, R,S) (definida lineal por la derecha
para el ejemplo) así: S → 0A │ A → 10A │ A → se desea construir un autómata finito no
determinístico AFND que acepte el lenguaje L
OBTENCIÓN DE LA GRAMÁTICA A PARTIR DE UN
AUTÓMATA FINITO
A partir de un AFD M = (Σ, K, , s, F) obtener la gramática regular correspondiente. El
procedimiento sigue la siguiente secuencia:
• Para cada transición de la forma (( , ), q) habrá en la gramática una regla q X X , donde
Xi es la variable en la gramática que corresponde al estado i del AFD.
Los Lenguajes Libres de Contexto (abreviado LLC) forman una clase de lenguajes más amplia
que los Lenguajes Regulares, de acuerdo con la Jerarquía de Chomsky. Estos LLC relacionan
las Gramáticas libres de contexto (GLC) con los Autómatas de Pila.
Las GLC tienen reglas menos rígidas que las gramáticas regulares. Así toda gramática
regular es GLC pero no viceversa
ARBOLES DE DERIVACIÓN
Las GLC tienen la propiedad de que las derivaciones pueden ser representadas en forma
de árbol ramificado o arboles de derivación, o también arboles de compilación por usarse
extensivamente en los compiladores y son de vital importancia para la teoría de los
compiladores de los lenguajes de programación.
La definición formal de estos árboles de derivación está dada por:
Definición: Sea: G = (V, Σ, R, S) una GLC. Entonces el árbol de derivación cumple las
siguientes propiedades:
Analizamos la cadena o palabra = aabbaa que genera un árbol y que puede provenir
de varias cadenas de derivaciones distintas así:
Estas se diferencian de los autómatas finitos en que se ayudan para sus transiciones de
una memoria con estructura de pila. Como en los anteriores, la transición entre estados
depende del símbolo leído y del estado actual. Cada transición implica la modificación
de la pila.
DEFINICIÓN DE AUTÓMATA CON PILA
Σ es el alfabeto de entrada
es el alfabeto de la pila
S K es el estado inicial
Δ : K x (Σ U { }) x → 2 K x *
La pila funciona de manera que el ultimo carácter que se almacena en ella es el primero
en salir (“LIFO” por las siglas en ingles), como si se apilaran platos uno encima de otro, y
naturalmente el primero que quitaremos es el ´último que hemos colocado. Un aspecto
crucial de la pila es que solo podemos modificar su “tope”, que es el extremo por donde
entran o salen los caracteres. Los caracteres a la mitad de la pila no son accesibles sin
quitar antes los que están encima de ellos.
La pila tendrá un alfabeto propio, que puede o no coincidir con el alfabeto de la palabra de
entrada. Esto se justifica porque puede ser necesario introducir en la pila caracteres
especiales usados como separadores, según las necesidades de diseño del autómata.
Al iniciar la operación de un AP, la pila se encuentra vacía. Durante la operación del AP,
la pila puede ir recibiendo (y almacenando) caracteres, según lo indiquen las transiciones
ejecutadas. Al final de su operación, para aceptar una palabra, la pila debe estar
nuevamente vacía.
En los AP las transiciones de un estado a otro indican, además de los caracteres que se
consumen de la entrada, también lo que se saca del tope de la pila, así como también lo
que se mete a la pila.
La Notación gráfica que se asemeja a la de los autómatas finitos (AF) es la dada así:
Para los AP, adicionalmente tenemos que establecer una estrategia clara para el
manejo de la pila.
Se recuerda que un AP no puede realizar ningún movimiento si la pila está vacía. Por lo
que un AP reconocerá una cadena de entrada por estado final si partiendo de su
configuración inicial (q0, t, Z0), llega a una configuración final (qf, , ) empleando
movimientos válidos
La cadena será aceptada por vaciado de pila si después de leerse toda la cadena se llega
a un estado con la pila vacía, independientemente del tipo de estado en el que se
encuentre el AP.
Por ejemplo, la traza de ejecución del AP del último ejemplo, para la palabra aabb
Gracias…
REFERENCIAS
https://www.youtube.com/watch?v=ScR1T1DME14