Você está na página 1de 19

Analisador Sintático

Ascendente

Raphael de Souza – raphael@ic.ufmt.br


Analisador Sintático
 Análise Sintática Ascendente (Bottom-up)

2/19
2
Analisador Sintático
 Método shift-reduce

 Gramáticas LR (Left to right, Rightmost


derivation)

 Dado a gramática abaixo e a cadeia abbcde


S →aAcBe
A → Ab | b
B →d
S → aAcBe → aAcde → aAbcde
→abbcde
3/19
3
Analisador Sintático
 Tipos de Analisadores LR
 SLR (Simple LR)
 LR canônicos
 LALR (Look Ahead LR)

4/19
4
Analisador Sintático
 Redução é o inverso da derivação

 Enquanto derivação é a substituição de um


não terminal pelo lado direito da regra

 Redução é a substituição do lado direito pelo


não terminal correspondente

5/19
5
Analisador Sintático
 Dado a Gramática e a cadeia id * id
E → E+T | T
T →T∗F | F
F →( E)| id
 No ascendente fica:
id * id → F * id → T * id → T * F→T→E
 No descendente fica:
E → T → T * F → T * id→F * id→id * id

6/19
6
Analisador Sintático

7/19
7
Analisador Sintático
 Analisador sintático LR(0)

 Mantém estados que representam itens

 Item é uma produção G com um ‘.’ em alguma


posição do lado direito
 Dado a regra A → XYZ
A→⋅X Y Z
A→ X⋅Y Z
A→ X Y⋅Z
A→ X Y Z⋅
8/19
8
Analisador Sintático
 Autômato LR(0)
E→ E+T | T
T →T∗F | F
F→( E)| id

9/19
9
Analisador Sintático
 id * id

10/19
10
Analisador Sintático
 Analisador sintático LR

11/19
11
Analisador Sintático
 Tabela do analisador sintático LR

Estados Action Goto


 Action possui a lista de terminais e quais
ações fazer

 Goto possui a lista de não terminais e quais


estados ir

12/19
12
Analisador Sintático
 Tabela do analisador sintático LR

13/19
13
Analisador Sintático
 Tabela do analisador sintático LR

 si significa avança na entrada e empilha o


estado i na pilha

 rj significa reduce segundo a produção de


número j

14/19
14
Analisador Sintático
 id * id + id

15/19
15
Analisador Sintático
 Construa a tabela LR da gramática

E →T E '
E' →+T E '
E' →ϵ
T →F T '
T' →* F T '
T' →ϵ
F →( E)| id

16/19
16
Analisador Sintático
 Construa a tabela LR da gramática

E→ E+T | T
T →T∗F | F
F→( E)| id

17/19
17
Exercício
 Construa a tabela de análise para a
gramática. Proponha uma cadeia e analise-
a.

<Cmdos >→< Cmdo >; <Cmdos > | < Cmdo >


<Cmdo >→if exp then <Cmdo >< Pelse >
| for id :=exp to exp do <Cmdo >
| while exp do <Cmdo >
| id :=exp
| begin <Cmdos > end
< Pelse >→else <Cmdo > | ε
18/19
18
Referências Bibliográficas
 Livro:
 Compiladores: Princípios, técnicas e
ferramentas. Alfred V. Aho, et al

19/19
19

Você também pode gostar