Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles de Derivacion
Arboles de Derivacion
U A donde U
N
y no aparece en a parte derecha
de nnguna otra rega y U no es e smboo de axoma.
U es accesbe S xUy, x,y
*
*
Departamento de Ciencias de la Computacin
Gramti cas bi en formadas
Rega superfuas
G = (
T
,
N
, S, P)
para cada A
N
se genera G(A)
s L(G(A)) es vaco A es un smboo no generatvo
Emnacn de regas de redenomnacn, A B
para cada A
N
ta que A B y para cada rega de a
forma B x donde x
N
se aadr una rega de a forma
A x
*
Departamento de Ciencias de la Computacin
Gramti cas bi en formadas
Emnacn de regas no generatvas, A :
S L(G) no contene
es posbe emnarar todas
En caso contraro
se pueden emnar todas menos S
donde para cada A
N
(A S) ta que A y
por cada rega B xAy se aadr otra rega de a
forma B xy excepto s x=y=
*
Departamento de Ciencias de la Computacin
Gramti cas bi en formadas
Ccos:
S A
S a
A S
Regas que ofrezcan camnos aternatvos:
S A
S B
A B
Departamento de Ciencias de la Computacin
Gramti cas bi en formadas
Produccones recursvas en as que as
varabes no recursvas de a produccn
pueden dervar a a cadena vaca:
S H R S
S s
H h |
R r |
S H R
H h |
R r |
Departamento de Ciencias de la Computacin
Ej empl o
Lmpar a sguente gramtca
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A | C
A 0AB |
B B1 |
Departamento de Ciencias de la Computacin
Ej empl o
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A | C
A 0AB |
B B1 |
Smboo no
generatvo
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A
A 0AB |
B B1 |
Departamento de Ciencias de la Computacin
Ej empl o
Emnacn de
regas de a
forma x
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A | B |
A 0AB | 0B | 0A | 0
B B1 | 1
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A
A 0AB |
B B1 |
Departamento de Ciencias de la Computacin
Ej empl o
Emnacn de
regas de
redenomnacn
S A | B
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | 0AB | 0A | 0B | B1 | 0 | 1 |
A 0AB | 0B | 0A | 0
B B1 | 1
G = ({0,1}, {S, A, B, C}, S, P)
S AB | 0S1 | A | B |
A 0AB | 0B | 0A | 0
B B1 | 1
Departamento de Ciencias de la Computacin
Ej erci ci o
G = ({,+}, {Z, E, F, G, P, O, S, T}, Z, P)
Z E + T
E E | S + F | T
F F | FP | P
P G
G G | GG | F
T T * |
O E | E + F | T | S
S
Departamento de Ciencias de la Computacin
Asoci ati vi dad de l os operadores
La asocatvdad de un operador bnaro
defne cmo se operan tres o ms
operandos.
Por a zda: se evaan de zda. a dcha. Es
a que utzan a mayora de os engua|es.
E|empo "b#a#3.8".
s
Departamento de Ciencias de la Computacin
Organi zaci n de l as fases en front end y
back end
Programa fuente
Front
end
Anss xco
Anlisis sintctico
Generacn de
cdgo ntermedo
Anss
semntco
Cdgo ntermedo
Back
end
Optmzacn
cdgo ntermedo
Generacn
cdgo ob|eto
Cdgo ob|eto
Optmzacn
cdgo ob|eto
Departamento de Ciencias de la Computacin
Front end y back end
Front end:
fases de anss y generacn de cdgo
ntermedo.
depende de engua|e fuente y es
ndependente de engua|e ob|eto.
Back end:
fases de generacn y optmzacn de cdgo.
depende de engua|e ob|eto y es
ndependente de engua|e fuente.
Departamento de Ciencias de la Computacin
Ti pos de anl i si s si ntcti co.
Descendente.
Anss descendente: se parte de a raz de
rbo (smboo nca de a gramtca) y se
van apcando regas por a zquerda
obtenendo una dervacn por a zda. de
smboo nca. Las ho|as de rbo tendrn os
tokens que nos devueve e anazador xco.
Ascendente
Anss ascendente: se empeza por as ho|as
(tokens) y se van creando os nodos
ntermedos hasta egar a a raz (smboo
nca).
Departamento de Ciencias de la Computacin
Ej empl o
E|.: Dada a entrada "num*num+num"
y a gramtca:
E E + T | T
T T * F | F
F num
obtener as dervacones por ambos
mtodos de anss
Departamento de Ciencias de la Computacin
Ej empl o de anl i si s si ntcti co: descendente
Producciones:
E E + T
E T
T T * F
T F
F num
F num
T F
F num
E
T
T
F
T
num
num
+
*
num
E
F
F
Gramtica
E E + T | T
T T * F | F
F num
Departamento de Ciencias de la Computacin
Ej empl o de anl i si s si ntcti co: ascendente
Producciones:
F num
T F
F num
T T * F
E T
F num
T F
E E + T
E
T
T
F T
num num +
*
num
E
F
F
Gramtica
E E + T | T
T T * F | F
F num
Departamento de Ciencias de la Computacin
Gramti cas que permi ten un anl i si s en ti empo
l i neal O( n)
Anss descendente: gramtcas LL(k)
Anss ascendente: gramtcas LR(k)
L es left to right: a secuenca de tokens de
entrada se anaza de zquerda a derecha.
L/R es left-most/right-most: obtene a
dervacn por a zquerda/derecha.
k es e nmero de smboos de entrada que es
necesaro conocer en cada momento para
poder hacer e anss.
Departamento de Ciencias de la Computacin
Gramti cas que permi ten un anl i si s en ti empo
l i neal O( n)
E|.: LL(2): cadenas
anazadas de zquerda a derecha
dervando e no termna que quede por
dervar ms a a zquerda
necesta mrar dos tokens.
Departamento de Ciencias de la Computacin
Ej empl o
Dsear una gramtca no ambgua que
genere todos os nmeros enteros sn
sgno que sean pares, consderando
que e 0 es par tambn.
N D N
N Dgpar
D 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Dgpar 0 | 2 | 4 | 6 | 8
Departamento de Ciencias de la Computacin
Ej erci ci o
Sea a gramtca
S c A d
A a b
A a
y a cadena de entrada cad
Construr e rbo sntctco
Ou paso reaza para a generacn de
rbo?
Departamento de Ciencias de la Computacin
Ej erci ci o
S
c A d
S
c A d
a b
S
c A d
a
error
A a b
S c A d
A a
Gramtica
S c A d
A a b
A a
Departamento de Ciencias de la Computacin
Ej erci ci o
Sea a gramtca
S a S b S
S b S a S
S
y a cadena de entrada abab
Construr dos rboes sntctco
Ou paso reaza para a generacn de
rbo?
Departamento de Ciencias de la Computacin
Ej erci ci o
S
S S
S S
S
S S
S S
Gramtica
S a S b S
S b S a S
S
Cadena Cadena
abab
Departamento de Ciencias de la Computacin
Ej erci ci o
Consderese a gramtca ndependente de
contexto G = ({*,+, a}, {S}, S, P).
S S S +
| S S *
| a
Demostrar como se puede generar a cadena
aa+a*
Construr e rbo sntctco para esta cadena
Ou engua|e genera esta gramtca?
Departamento de Ciencias de la Computacin
Ej empl o
Dsear una gramtca no ambgua para a
decaracn de varabes enteras, carcter o rea
en C.
Debe admtr decaracones de tpo:
nt ,|; char c,r;
foat f, f2;
lista_decl decl lista_decl
| decl
decl tipo lista_var ';'
lista_var ident ',' lista_var
| ident
tipo int
| char
| float
Departamento de Ciencias de la Computacin
Ej empl o
Dada a gramtca sguente, escrbe
as dervacones por a zquerda y os
rboes de anss gramatca para as
sguentes expresones:
3 + 4 * 5 - 6
3 * (4 - 5 + 6)
3 - (4 + 5 * 6)
expr expr opsuma term
| term
opsuma '+'
| '-'
term opmult factor
| factor
opmult '*'
factor '(' expr ')'
| num
Departamento de Ciencias de la Computacin
Ej empl o
Dada a sguente gramtca de
expresones smpfcadas tpo LISP.
Escrbe una dervacn por a zquerda
y otra por a derecha para a cadena
( a 23 ( m x y ) )
dbu|a rbo de anss
gramatca para esta cadena
list '(' list_exp ')'
list_exp list_expr expr
| expr
expr atomo
| list
atomo numero
| identificador