Академический Документы
Профессиональный Документы
Культура Документы
Analisadores
Descendentes com
Retrocesso
Definio
Prog. fonte
Anlise
lxica
pede token
token
Anlise
sinttica
rvore
sinttica
Aceita/No
aceita
Anlise
semntica
Bottom-up
Mtodos de anlise
Existem mtodos universais de anlise sinttica,
como o algoritmo de Cocke-Younger-Kasami e o
de Earley,
que
pois
Mtodos de anlise
Earley, em 1970, apresentou um mtodo de A.S.
Top-Down sem Backtracking que reconhece todas
as GLCs com O(n3);
Mtodos de anlise
Os mtodos Top-Down e Bottom-Up mais eficientes e
interessantes so determinsticos (O(n)).
LL(k)
Mtodos de anlise
Veremos 3 tipos de A.S.D. e suas vantagens e desvantagens:
A.S.D. Recursiva com Retrocesso/Backtracking (tentativa e
erro na escolha de produo)
Parsers Preditivos:
JavaCC, no entanto, cai neste tipo, mesmo sendo um compiler compiler. Ele
tambm permite que certas regras possam ser analisadas com um K maior que 1
mais adequado para serem implementados automaticamente pela prcomputao da Tabela de Anlise
Funcionamento
cadeia a ser analisada
D rvore formada apenas pelo smbolo
reservado S
folha corrente S
Repita:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
a*b
a*b
a*b
a*b
*b
T+E
T+E
T+E
T+E
T+E
T+E
T+E
F*T
F*T
F*T
F*T
F* T
F* T
a F*T
a F*T
a
(9)
(10)
(11)
(12)
(13)
(14)
T+E
T+E
T+E
T+E
T+E
T+E
F* T
F* T
F* T
F*T
F*T
F*T
a F*T
a F*T
a F*T
( E ) 67
F
a 12
F
b
(15)
(16)
(17)
(18)
(19)
a*b
a*b
*b
T+E
T+E
T+E
T+E
T+E
F*T
a
F*T
a
12
F*T
3612
F*T
3
( E ) 23
( E)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
a*b
a*b
a*b
a*b
a*b
a*b
a*b
T+E
T+E
T+E
T+E
F*T
F*T
19
19
( E)
1219
(27)
(28)
(29)
(30)
(31)
(32)
*b
F*T
F*T
F* T
F* T
F* T
F* T
a F*T
a F*T
29
a
(33)
b
E
T
F* T
a F*T
( E)
2829
a F*T
a F*T
(34)
(35)
(36)
(37)
F*T
F*T
F*T
F*T
a F
a F
a F
a F
29
Exemplo
E ::= E op T | T
T ::= a
recursiva a esquerda
Associa /resolve os operadores da mesma classe da
esquerda para a direita
E
E
a op a op a
op
E op T
T
a
T
a
Exemplo
E ::= T op E | T
T ::= a
recursiva a direita
Associa /resolve os operadores da mesma classe da
direita para a esquerda
E
T
a op a op a
op
E
T op E
a
T
a
Eliminao de retrocessos e de
recurso a esquerda
Para eliminar retrocessos:
fazer com que o algoritmo tome a deciso
correta quanto produo a ser aplicada.
Na anlise da sentena + a * b a
(1)
(2)
(3)
(4)
(5)
(6)
+a*ba
+a*ba
a*ba
a*ba
*ba
*ba
+ E E
+ E E
+ E E
+ E E
+ E E
a * E E
(7)
(8)
(9)
(10)
ba
ba
+ E E
+ E E
+ E E
+ E E
+ E E
a * E E
a * E E
b
a * E E
b
(11)
a * E E
a * E E
b a
b a
Seja a gramtica:
S AS | BA
A aB | C
B bA | d
Cc
Gerem o conjunto
dos FIRST para
todos os smbolos
S AS | BA
A aB | C
B bA | d
Cc
S
A
B
C
a
b
c
d
p
A, B
a, C
b, d
c
-
*p
First
A,B,a,C,b,d,c,S a,b,d,c
a,C,c,A
a,c
b,d,B
b,d
c,C
c
a
b
c
d
(2)
(3)
(4)
(5)
(6)
(7)
(8)
abcdad
abcdad
abcdad
bcdad
bcdad
cdad
cdad
cdad
A S
A S
A S
A S
A S
A S
A S
a B
a B
a B
b A
a B
b A
a B
a B
b A
b A
(9)
(10)
(11)
(12)
dad
dad
dad
ad
a B
a B
B A
a B
B A
a B
B A
b A
b A
b A
b A
(13)
(14)
(15)
ad
a B
b A
A
A
d a B
a B
b A
A
A
d a B
a B
b A
a B
E T (+E | )
E T {+ T}
3) Combinao de Fatorao e Substituio
fatora:
substitui:
EE+T|E-T|T
E E (+ T | - T) | T
E T { +T | - T} ou E T {(+|-) T}