Académique Documents
Professionnel Documents
Culture Documents
Feltrim
DIN UEM
Este material foi gentilmente cedido pelo Prof. Thiago A. S. Pardo, ICMC-USP/So Carlos
ASD preditiva
Sabe-se de antemo qual regra aplicar
Gramticas LL(1)
Dois mtodos:
ASD preditiva recursiva
ASD preditiva no recursiva
Exemplo
<E>::=<T>+<E> | <T>
<T>::=<F>*<T> | <F>
<F>::=a | b | (<E>)
procedimento E
incio
T;
se (token='+) ento
prox_token();
E;
fim
procedimento T
incio
F;
se (token =*) ento
prox_token();
T;
fim
procedimento ASD
incio
prox_token();
E;
fim
procedimento F
incio
se (token ='() ento
prox_token();
E;
se (token =')) ento
prox_token()
seno ERRO;
seno se (token =a)
ou (token =b)
ento prox_token()
seno ERRO;
fim
Exemplo
<S> ::= a<A>d
<A> ::= c<A> | e<B>
<B> ::= f | g
Grafo sinttico
S:
Smbolo
terminal
A
Smbolo no
terminal
procedimento S
incio
se (token =a) ento
prox_token();
A;
se (token =d)
ento prox_token()
seno ERRO;
seno ERRO;
fim
procedimento A
incio
se (token =c) ento
prox_token();
A;
seno se (token =e) ento
prox_token();
B;
seno ERRO;
fim
<B> ::= f | g
B
f
g
procedimento B
incio
se (token =f) ou (token =g)
ento prox_token()
seno ERRO;
fim
Programa principal
procedimento ASD
incio
prox_token();
S;
se (terminou_cadeia)
ento SUCESSO
seno ERRO
fim
Geralmente, concatenamos um
smbolo $ no fim da cadeia
antes do seu reconhecimento.
terminou_cadeia a verificao
da condio token = $
Regras de transformao
Regras gramaticais
grafos sintticos
Exerccio
x
(
B
Regras de traduo
Grafos sintticos
procedimentos
1.
2.
T
E
A seqncia
A
origina o procedimento
incio
A;
B;
C;
fim
A alternativa
A
B
C
origina o procedimento
incio
fim
Uma repetio
A
origina o procedimento
incio
fim
O terminal
x
origina
incio
se (token = x)
ento prox_token()
seno ERRO;
fim
O no terminal
A
origina
incio
A;
fim
x
(
procedimento A
incio
se (token =x) ento prox_token()
seno se (token =() ento
faa
prox_token();
A;
at (token <>+);
se (token =))
ento prox_token()
seno ERRO;
seno ERRO;
fim
x
(
+
A