Академический Документы
Профессиональный Документы
Культура Документы
Lenguajes y Compiladores
Aspectos Formales (Parte 2)
Compiladores
2007
1
Derivaciones
Compiladores
2007
Definiciones
Compiladores
2007
Definiciones
Si:
X * X
es equivalente
puede derivarse directamente de o
puede reducirse directamente a .
Compiladores
2007
*
4
Jerarqua de gramticas
Jerarqua de Chomsky
Compiladores
2007
Jerarqua de gramticas
Tipo 0 : sin restricciones
Tipo 1 : sensibles al contexto
Tipo 3 : regulares
A Ba
A aB
Compiladores
2007
o
o
Aa
Aa
Definicin de CHOMSKY:
Gramtica de un Lenguaje (G)
G = ( N, T, P, S )
Es un cuarteto formado por:
N = Vocabulario No Terminal : Son sentencias que no
pertenecen al lenguaje, pueden ser variables y
nombre de procedimientos, se representan con
letra mayscula.
A
No Terminal
<A>
No Terminal
[A]
No Terminal
Compiladores
2007
Definicin de CHOMSKY
T = Vocabulario Terminal. sentencias que pertenecen al
lenguaje, se representan con minsculas.
<S> if x then <B>
<B> w z
P = Reglas de produccin o Reglas de derivacin.
<S>
do <A> while x
Produce o deriva.
Axioma Principal.
S = Es el axioma principal o smbolo distinguido.
<S> da inicio a las reglas de produccin.
<S> pertenece al vocabulario no terminal.
Compiladores
2007
Definicin de CHOMSKY
Si se tiene las siguientes reglas:
R1 : <S> w x do <A>
R2 : <A> if z then <B> else <C>
R3 : <B> x y z
R4 : <C> a b c
Donde :
N = {<S>, <A>, <B>, <C>}
T = {w, x, do, if }
Compiladores
2007
Tipos de Gramtica
Definicin Chomsky
G = ( N, T, P, S)
Gramtica.- Se clasifica en 4 tipos.
A.
B.
C.
D.
Compiladores
2007
Regla de Produccin
10
Tipos de Gramtica
A. Gramtica Estructura de Base Tipo 0.- No
existe restriccin en las Reglas.
donde :
( N U T )+
( N U T )*
Ejemplos :
R1 :
R2 :
R3 :
Compiladores
2007
11
Tipos de Gramtica
B. Gramtica Sensible contexto Tipo 1.
A w
donde :
(NUT)*
W (NUT)+
AN
Ejemplos :
R1:
R2:
Compiladores
2007
w <A> d abc
<A> a <B>c
12
Tipos de Gramtica
C. Gramtica Tipo 2 contexto Libre.- En la parte
izquierda tiene solo un smbolo del vocabulario no
termina.
donde :
N
(NUT)*
Ejemplos :
R1:
R2:
R3:
R4:
Compiladores
2007
<S> w x d <B>
<B> i x t <A>
<A> s c x <c>
<C>
13
Tipos de Gramtica
D. Gramtica Regular Tipo 3.- En la parte izquierda y
derecha debe existir un No Terminal como mximo
I).Gramticas regulares por la izquierda:
Se dice que G (T, N, P, S) es regular por la izquierda
si cada produccin P tiene la forma
<A> a <B>
o bien
<A> a
donde : <A> N
<B> N*
Compiladores
2007
a T+
14
Tipos de Gramtica
Estas gramticas tambin se conocen como regulares
o de estado finito.
II). Gramticas regulares por la derecha:
Se dice que G (T, N, P, S) es regular por la derecha si
cada produccin P tiene la forma.
<A> <B> a
o bien
<A> a
donde : <A> N
<B> N*
Compiladores
2007
a T+
15
Tipos de Gramtica
Compiladores
2007
16
Tipos de Gramtica
Compiladores
2007
17
Ejemplo
Ejemplo :
S abc aAbc
Ab bA
Ac Bbcc
bB Bb
aB aa aaA
Ejemplo de cadena:
?
Qu tipo de cadenas genera este lenguaje?
Compiladores
2007
*
18
Compiladores
2007
<S> * x
.and. x T* }
R1:
R2:
20
xR2
21
Ejercicio
1. Se tienen las siguientes reglas.
R1:
<S> a <B>
R2:
<S> b <A>
R3:
<A> a
R4:
<A> a <S>
R5:
R6:
<B> b
R7:
<B> b <S>
R8:
a)
a b a a a b
R9:
< B>
b)
b a a a a b b
Compiladores
2007
22
<S> a <B>
XR7 :
<S> ab <S>
XR1
XR8
XR8
XR6
XR9 x R9 :
Compiladores
2007
<S> abaaab
abaaab L (G)
23
<S> b <A>
xR4:
<S> ba <S>
xR1:
xR8:
xR8:
xR6 xR6xR9:
<S> baaaabb
baaaabb L (G)
Compiladores
2007
24
Ejercicio
2. Se tienen las siguientes reglas
R1:
R2:
<S> d
R3:
<A> w
R4:
a. Reconocer w d d w d
b. Reconocer w w w d d w d d
Compiladores
2007
25
a. Reconocer wddwd
Solucin:
xR1:
xR4:
xR2:
xR3:
xR2:
<S> wddwd
wddwd L(G)
Compiladores
2007
26
b. Reconocer wwwddwdd
L(G) = {x / <S> * x .and. x T* }
Solucin:
Compiladores
2007
xR1:
xR3:
<S> w w <S>
xR1:
xR4:
xR2:
xR3:
xR2:
<S> w w w d d w d
wwwddwdd L(G)
27
Resumen
A. Tipos Gramtica.
1. Estructura de Base Tipo 0 :
donde : ( N U T )+
( N U T )*
A w
donde :
(NUT)*
W (NUT)+
AN
Compiladores
2007
28
Resumen
3. Contexto Libre Tipo 2
donde : N
(NUT)*
4. Regular Tipo 3
<A> a <B>
<A> b
B. Lenguaje Reconocido por una Gramtica.
L (G) = { x / <S> * x
Compiladores
2007
.and. x T *}
Axioma Principal
29
Tcnicas de anlisis
Compiladores
2007
30
Tcnicas de anlisis
Representacin Grfica Arbol Sintctico
Implica usar un rbol ordenado, est formado por un
Nudo (Elemento no Terminal parte Izquierda) y por
ramas que sern la parte derecha de la regla.
<A> a <B> b
Ramas (derecha)
Nudo
a
Compiladores
2007
<A>
nudo
<B>
b Ramas
31
Anlisis descendente
T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
N = { Digito, Enn}
P = { Enn Digito | Enn Digito
Digito 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }
S = {Enn}
Para analizar la frase 123, se comienza con la raz
Enn que deriva a Enn Digito.
Enn
Enn
Compiladores
2007
Digito
32
Anlisis descendente
Aplicando la misma produccin:
Enn
Digito
Enn
Enn
Digito
Compiladores
2007
33
Anlisis descendente
Enn
Digito
Enn
Enn
Digito
Digito
Compiladores
2007
34
Anlisis descendente
Enn
Digito
Enn
Enn
Digito
Digito
35
Anlisis ascendente
1
Compiladores
2007
36
Anlisis ascendente
Enn
Digito
Y luego
Enn
Digito
Digito
1
Compiladores
2007
3
37
Anlisis ascendente
Podemos usar la reduccin Enn Digito Enn
Enn
Enn
Digito
Digito
38
Anlisis ascendente
Enn
Digito
Enn
Enn
Digito
Digito
Compiladores
2007
39
Anlisis sintctico
1
Compiladores
2007
40
Anlisis sintctico
Compiladores
2007
41
Tarea
Alternativas ( | )
Una repeticin de elementos ( { } )
Un elemento opcional ( [ ] )
Compiladores
2007
42
Ejercicio
1. Se tienen las siguientes reglas.
R1:
<S> a
R2:
<S> a <A> a
R3:
<A> b
R4:
<A> b <A>
43
Ejercicio
2. Se tienen las siguientes Reglas
Compiladores
2007
R1:
<S> do <B>
R2:
<S> ; <A>
R3:
<A> do
R4:
<A> do <S>
R5:
R6:
<B> ;
R7:
<B> ; <S>
R8:
R9:
<B>
do do do ;
c) ; do do do ; do do ; do
44
Compiladores
2007
45
:
:
:
:
:
<S> a <B> a
<S> b <A>
<S> a <S> a
<S> b
<S>
46
<S> <A> a
R2
<A> b
<S>
<A> a
R3
R4
R5
R6
:
:
:
:
<A> bb
<A> bbb
<A> bbbb
<A> bbbbb
<A>
{b}51
Compiladores
2007
47
Se puede usar o no se
puede usar
48
Ejercicio
1. Se tiene las siguientes reglas:
R1:
R2:
R3:
<T> <E><L>
R4:
<L> * <E><L>|
1) a*(a+a)
R5:
<E> ( <S> ) | a
2) (a+a)*a*(a+a)
3) a+a+a+a+(a+a)*a
Compiladores
2007
49
Ejercicio
2. Se tiene las siguientes reglas
R1:
<S> ( <A> )
R2:
R3:
<F> + <A> |
R4:
<T> <S>| a
Compiladores
2007
50