14 Gramáticas libres de contexto - Sitio Web Docente del ...Teoría computacional Clase 14:...
Transcript of 14 Gramáticas libres de contexto - Sitio Web Docente del ...Teoría computacional Clase 14:...
Clase 14: Gramáticas libres de contexto
1M. en C. Edgardo Adrián Franco Martínez
http://computacion.cs.cinvestav.mx/~efranco@efranco_escom
Contenido• Gramáticas libres de contexto
• Propiedades de los lenguajes libres decontexto
• Otros lenguajes libres de contexto
• BNF (Backus-Naur Form)
• Ejemplo
• Árbol de derivación
2
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
Las gramáticas de tipo 2 o gramáticas
independientes del contexto, son las que generan
los lenguajes libres o independientes del contexto.
Los lenguajes libres del contexto son aquellos quepueden ser reconocidos por un autómata de pila
determinístico o no determinístico.
3
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
4
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Una gramática libre de contexto (GLC), describe unlenguaje libre de contexto.
• Son útiles para describir bloques anidados en
lenguajes de programación ya que describen su
sintaxis.
• Son llamadas así porque el elemento no terminal
del lado derecho se puede sustituir sin importar el
contexto en que este.
5
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Su característica es que piden que solamente existaun no terminal del lado izquierdo de la
producción.
6
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Una simple gramática libre de contexto es
S → aSb | ε
• Esta gramática genera el lenguaje no regular�����: � � 0
7
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Gramática libre de contexto para expresionesenteras algebraicas sintácticamente correctas sobrelas variables x, y y z:
S → x | y | z | S + S | S - S | S *S | S/S | (S)
• cadena (x + y) *x - z *y / (x + x) valida
8
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Lenguaje consistente en todas las cadenas que sepueden formar con las letras a y b, habiendo unnúmero diferente de una que de otra, sería:
S → U | V
U → TaU | TaT
V → TbV | TbT
T → aTbT | bTaT | ε
• T genera todas las cadenas con la misma cantidad de
letras a que b, U genera todas las cadenas con más
letras a, y V todas las cadenas con más letras b.
9
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Gramática libre de contexto para el lenguaje
�������: � � 0,� � 0
S → aSc | B
B → bBc | ε
10
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• La gramática G = ({E,T,F}, {a,+,*,(,)}, S, P)
P:
E → E + T | T
T → T * F | F
F → ( E ) | a
11
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• Las gramáticas libres del contexto seescriben, frecuentemente, utilizando unanotación conocida como BNF (Backus-Naur Form).
• BNF es la técnica más común para definir lasintaxis de los lenguajes de programación.
12
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• El inverso de un lenguaje libre de contexto estambién libre de contexto, pero el complemento notiene por que serlo.
• La unión y concatenación de dos lenguajes libres decontexto es también libre de contexto. Laintersección no tiene por que serlo.
• Los lenguajes regulares son libres de contextoporque pueden ser descritos mediante unagramática de libre contexto. 13
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• La intersección de un lenguaje libre de contexto y unlenguaje regular es siempre libre de contexto.
• Para demostrar que un lenguaje dado no es libre decontexto, se puede emplear el Lema del bombeopara lenguajes libres de contexto.
• El problema de determinar si una gramática sensibleal contexto describe un lenguaje libre del contextoes indecidible.
14
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• La siguiente es una definición BNF del lenguaje queconsiste de cadenas de paréntesis anidados:
<cadena_par>::=<cadena_par><paréntesis>|<paréntesis>
<paréntesis> ::= (<cadena_par> ) |( )
• Por ejemplo las cadenas ( ) ( ( ) ) y ( ) ( ) ( ) son cadenasválidas. En cambio las cadenas ( () y ( ) ) ) no pertenecen allenguaje.
15
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
• En esta notación se deben seguir lassiguientes convenciones:• Los no terminales se escriben entre paréntesis angulares
<>
• Los terminales se representan con cadenas de caracteressin paréntesis angulares
• El lado izquierdo de cada regla debe tener únicamente un no terminal (ya que es una gramática libre del contexto)
• El símbolo ::=, que se lee “se define como” o “se reescribe como”, se utiliza en lugar de
• Varias producciones del tipo• <A> ::= <B1>
• <A> ::= <B2> .. .
• <A> ::= <Bn>
• Se pueden escribir como <A> ::= <B1> | <B2> | ...| <Bn>16
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
La siguiente definición BNF describe la sintaxis(simplificada) de una sentencia de asignación de unlenguaje tipo Pascal:
17
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
<sent_asig> ::= <var> := <expresion><expresion> ::= <expresion> + <termino>| <expresion> - <termino> |<termino><termino> ::= <termino> * <factor>|<termino> / <factor>|<factor><factor> ::= ( <expresion> )|<var> | <num><var> ::= A|B|C|D|... |Z<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
18
Teo
ría
com
pu
taci
on
alC
lase
14
: G
ram
átic
as li
bre
s d
e co
nte
xto
Pro
f. Ed
gard
o A
dri
án F
ran
co M
artí
nez
<sent_asig> ::= <var> := <expresion><expresion> ::= <expresion> + <termino>| <expresion> - <termino> |<termino><termino> ::= <termino> * <factor>|<termino> / <factor>|<factor><factor> ::= ( <expresion> )|<var> | <num><var> ::= A|B|C|D|... |Z<num> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
A := A + B