A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise Sintática - Continuação

Apresentações semelhantes


Apresentação em tema: "Análise Sintática - Continuação"— Transcrição da apresentação:

1 Análise Sintática - Continuação
Prof. Heloise Manica Paris Teixeira Parte 2 Slides cedidos pela Prof. Valéria Feltrin (DIN-UEM)

2 Coletando informações sobre uma gramática
Dada uma gramática GLC, podem-se identificar certas informações necessárias para a construção de compiladores Decisão de qual regra aplicar Para um não-terminal A, queremos saber: Se A gera a cadeia vazia ε (visto em aula anterior) Quais são os terminais que iniciam as cadeias geradas por A  Conjunto Primeiro(A) (ou first(A)) Quais são os terminais que seguem A  Conjunto Seguidor(A) (ou follow(A))

3 Seguidor (ou follow) Conjunto de terminais que seguem um símbolo da gramática, ou seja, que aparecem imediatamente à direita deste símbolo ‘a’ está em Seguidor(A) se A * Aa, para cadeias  e  quaisquer Em outras palavras: ‘a’ está em Seguidor(A) se em algum ponto de uma derivação ‘a’ for o símbolo imediatamente a direita de A

4 Regras para determinar o conjunto Seguidor
Inicialmente, para todos os não terminais A da gramática G, todos os conjuntos Seguidor(A) estão vazios, excetuando-se Seguidor(S)= { $ } Se há uma regra A  Ba, então acrescente a ao Seguidor(B) Se há uma regra A  Ba, e  =B1 ... Bm *ε, então acrescente a ao Seguidor(B) Se há uma regra A  BC, e  =B1 ... Bm *ε, então acrescente Primeiro(C), exceto ε, a Seguidor(B) Se há uma regra A  B, e  =B1 ... Bm *ε, então acrescente Seguidor(A) a Seguidor(B) Aplique as regras 2-5 enquanto houver modificação em algum dos conjuntos

5 Seguidor: Exemplo Uma forma de proceder é P: E  TE’ E’  +TE’ | ε
T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E Uma forma de proceder é para cada não terminal A, examine todas as produções em que A aparece do lado direito, segundo as regras para o cálculo do seguidor, e monte o conjunto seguidor(A). First (E) = Fistr(T) = First(F) = { ( , id } First (E’) = { +, ε } First (T’) = { *, ε } First (T) = { (, id } First (F) = { (, id }

6 seguidor(E) = { $ , ) } regras 1 e 2
Inicialmente, para todos os não terminais A da gramática G, todos os conjuntos Seguidor(A) estão vazios, excetuando-se Seguidor(S)= { $ } Se há uma regra A  Ba, então acrescente a ao Seguidor(B) P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E seguidor(E) = { $ , ) } regras 1 e 2

7 onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E
Regra 5: Se há uma regra A  B, e  =B1 ... Bm *ε, então acrescente Seguidor(A) a Seguidor(B) P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E seguidor(E) = { $ , ) } regras 1 e 2 seguidor(E') = seguidor(E) = { ), $ } regra 5

8 P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id
Se há uma regra A  BC, e  =B1 ... Bm *ε, então acrescente Primeiro(C), exceto ε, a Seguidor(B) E  T, e  =B1 ... Bm *ε, então acrescente Seguidor(E) a Seguidor(T) P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E seguidor(E) = { ), $ } regras 1 e 2 seguidor(E') = seguidor(E) = { ), $ } regra 5 seguidor(T) = primeiro(E’) U seguidor(E) = { +, ), $ } regras 4 e 5 First (E) = { ( , id } First (E’) = { +, ε } First (T’) = { *, ε } First (T) = { (, id } First (F) = { (, id }

9 P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id
Regra 5: Se há uma regra A  B, e  =B1 ... Bm *ε, então acrescente Seguidor(A) a Seguidor(B) P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E seguidor(E) = { ), $ } regras 1 e 2 seguidor(E') = seguidor(E) = { ), $ } regra 5 seguidor(T) = primeiro(E’) U seguidor(E) U seguidor(E’) = { +, ), $ } regras 4 e 5 seguidor(T’) = seguidor(T) = { +, ), $ } regra 5

10 P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id
Se há uma regra A  BC, e  =B1 ... Bm *ε, então acrescente Primeiro(C), exceto ε, a Seguidor(B) A  B, e  =B1 ... Bm *ε, então acrescente Seguidor(A) a Seguidor(B) P: E  TE’ E’  +TE’ | ε T  FT’ T’  *FT’ | ε F  (E) | id onde Vn = {E,T,F,E',T'}, Vt = { (, ), id, +, * }, S=E seguidor(E) = { ), $ } regras 1 e 2 seguidor(E') = seguidor(E) = { ), $ } regra 5 seguidor(T) = primeiro(E’) U seguidor(E) U seguidor(E’) = { +, ), $ } regras 4 e 5 seguidor(T’) = seguidor(T) = { +, ), $ } regra 5 seguidor(F) = primeiro(T') U seguidor(T) U seguidor(T’) = {*, +, ), $ } regras 4 e 5 First (E) = { ( , id } First (E’) = { +, ε } First (T’) = { *, ε } First (T) = { (, id } First (F) = { (, id }

11 Seguidor:Exercício Encontre os conjuntos Seguidor para a gramática abaixo: P  ABCD A  aA | ε B  Bb | ε C  AB | c D  d onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P F(P) = { a, b, c, d} F(A) = { a, ε } F(B) = { b, ε } F(C) = { a, b, c, ε} F(D) = { d }

12 Seguidor:Exercício S(P) = {$} regra 1 P  ABCD A  aA | ε B  Bb | ε
C  AB | c D  d onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P S(P) = {$} regra 1 P(P) = { a, b, c, d} P(A) = { a, ε } P(B) = { b, ε } P(C) = { a, b, c, ε} P(D) = { d } Inicialmente, para todos os não terminais A da gramática G, todos os conjuntos Seguidor(A) estão vazios, excetuando-se Seguidor(S)= { $ }

13 Seguidor:Exercício onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P
A  aA | ε B  Bb | ε C  AB | c D  d onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P S(P) = {$} regra 1 S(A) = P(B) U P(C) U P(D) = {a, b, c, d} regra 4 P(P) = { a, b, c, d} P(A) = { a, ε } P(B) = { b, ε } P(C) = { a, b, c, ε} P(D) = { d } Se há uma regra A  BC, e  =B1 ... Bm *ε, então acrescente Primeiro(C), exceto ε, a Seguidor(B)

14 Seguidor:Exercício onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P
A  aA | ε B  Bb | ε C  AB | c D  d onde Vn = {P, A, B, C, D}, Vt = { a, b, c, d }, S=P S(P) = {$} regra 1 S(A) = P(B) U P(C) U P(D) = {a, b, c, d} regra 4 S(B) = {b} U P(C) U P(D) U S(C) = {a, b, c, d} regras 2 e 4 S(C) = {d} regra 4 S(D) = {$} regra 5 P(P) = { a, b, c, d} P(A) = { a, ε } P(B) = { b, ε } P(C) = { a, b, c, ε} P(D) = { d }


Carregar ppt "Análise Sintática - Continuação"

Apresentações semelhantes


Anúncios Google