Sesión 19. Gramáticas Incontextuales

Anuncio
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Computabilidad y lenguajes formales:
Sesión 19. Gramáticas Incontextuales (Context
Free Grammars)
Prof. Gloria Inés Alvarez V.
Departamento de Ciencias e Ingenierı́a de la Computación
Pontificia Universidad Javeriana Cali
6 de abril de 2008
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Gramáticas Incontextuales
Son una forma de representar lenguajes. Sus caracterı́sticas
principales son:
Son más poderosas que los DFAs y las expresiones regulares.
Pueden describir algunas caracterı́sticas con estructura
recursiva.
Se utilizaron primero en el estudio de los idiomas humanos.
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Gramáticas Incontextuales
Tienen múltiples aplicaciones:
Para expresar la relación que hay entre las diversas categorı́as
gramaticales en el estudio de los idiomas humanos.
En la especificación y compilación de los lenguajes de
programación.
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Gramáticas Incontextuales
Definición
Una gramática incontextual es una 4-tupla (V , Σ, R, S) donde:
V es un conjunto finito de sı́mbolos no terminales (variables)
Σ es un conjunto finito de sı́mbolos terminales
R es un conjunto finito de producciones de la forma A → α
donde A ∈ V y α ∈ {V ∪ Σ}∗
S ∈ V es el sı́mbolo inicial
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Ejemplo de Gramática Incontextual
Sea G1 = (V , Σ, R, S), donde:
V = {A, B}
Σ = {0, 1, #}
R = A → 0A1, A → B, B → #
S =A
Una gramática se utiliza para generar cadenas. Por ejemplo, G1
genera la cadena 000#111, se puede ver su derivación y dibujar su
árbol de análisis sintáctico.
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Derivación
Definición
Sean u, v , w ∈ {V ∪ Σ}∗ y (A → w ) ∈ R se dice que uAv ⇒ uwv .
Definición
Se dice que u deriva v , (u ⇒∗ v ) si u = v ó si existe u1 , u2 , . . . , uk
con k ≥ 0 tal que u ⇒ u1 ⇒ u2 ⇒ · · · ⇒ uk ⇒ v .
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Lenguaje de una gramática
Definición
El lenguaje de una gramática G es {w | w ∈ Σ∗ , S ⇒∗ w }, siendo
S el sı́mbolo inicial de G .
Ejemplos:
G3 = ({S}, {a, b}, {S → aSb | SS | ε}, {S})
G4 = ({EXP, TERM, FACT }, {a, +, ∗, (, )}, {EXP →
EXP + TERM | TERM, TERM →
TERM ∗ FACT | FACT , FACT → (EXP) | a}, {EXP})
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Diseño de Gramáticas Incontextuales
Un lenguaje incontextual puede ser la unión de otros más
simples
Si el lenguaje es regular, se puede construir un DFA que lo
reconozca y luego convertir el autómata en gramática:
Construir un no terminal Ri por cada estado qi
Agregar una regla Ri = aRj por cada transición δ(qi , a) = qj
Agregar una regla Ri → ε por cada estado final
R0 será el sı́mbolo inicial de la gramática si q0 es el estado
inicial del autómata
Para coordinar la primera y segunda parte de una cadena, usar
reglas de la forma R → uRv
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Ambigüedad
Definición
Una derivación de una cadena w en una gramática incontextual G
es una derivación más izquierda si a cada paso se reemplaza el
sı́mbolo no terminal que se encuentra más a la izquierda.
Definición
Una cadena w es derivada ambiguamente de una gramática
incontextual G si tiene dos o más derivaciones más izquierdas. Una
gramática G es ambigua si genera alguna cadena ambiguamente.
Definición
Un lenguaje inherentemente ambiguo es aquel que sólo puede
reconocerse con gramáticas ambiguas.
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Ejemplo 1 de Gramática ambigua
EXP → EXP + EXP
EXP → EXP ∗ EXP
EXP → (EXP)
EXP → a
Ver árboles de análisis sintáctico para a + a ∗ a
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Ejemplo 2 de Gramática ambigua
ORACION → F SUST F VERBAL
F SUST → SUST COMP | SUST COMP F PREP
FV ERBAL → VERBO COMP | VERBO COMP F PREP
F PREP → PREP SUST COMP
SUST COMP → ART SUST
VERBO COMP → VERBO | VERBO F SUST
ART →un | una | el | la
SUST →juan | maria | flor | telescopio
VERBO →mira | cuida
PREP →con
juan mira a maria con el telescopio
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Forma Normal de Chomsky
Definición
Una gramática incontextual está en forma normal de Chomsky si
todas sus reglas son de la forma: A → BC ó A → a donde A, B, C
son no terminales y B, C no son el sı́mbolo inicial de la gramática.
Se permite la producción S → ε para el sı́mbolo inicial.
Teorema
Todo lenguaje incontextual es generado por una gramática en
forma normal de Chomsky.
Computabilidad y lenguajes formales: Sesión 19. Gramáticas Incontextuales (Context Free Grammars)
Demostración
Demostración.
Toda gramática incontextual puede transformarse en una en forma
normal de Chomsky que reconoce el mismo lenguaje. La
transformación se realiza por etapas:
1
Se adiciona un nuevo sı́mbolo inicial
2
Se consideran las reglas vacı́as: A → ε se elimina y por cada
vez que aparece A en el lado derecho de una regla se adiciona
otra regla igual salvo que la ocurrencia de A no está.
3
Se considera las reglas unitarias: A → B se elimina y toda
regla de la forma B → u se duplica cambiando B por A.
4
Se convierten el resto de reglas: A → u1 , u2 , . . . , uk con k ≥ 3
se reemplaza por las reglas:
A → u1 A1 , A1 → u2 A2 , . . . , Ak−2 → uk−1 uk . Si ui es un
terminal, se reemplaza por Ui y se adiciona Ui → ui
Descargar