11.07.2015 Views

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

a + b $XYZParserTabela deAnáliseFigura 4.5: Funcionamento de um Analisador Sintático DescendenteO algoritmo para calcular a função FIRST já foi visto anteriormente. O algoritmopara calcular a função FOLLOW é apresentado a seguir:1. Se S é o símbolo inicial da gramática e $ é o marcador de fim de sentença, então $está em FOLLOW(S);2. Se existe produção do tipo A → αXβ, então todos os terminais de FIRST(β), fazemparte de FOLLOW(X);3. Se existe produção do tipo A → αX, ou A → αXβ, sendo que β → ε, então todosos terminais que estiverem em FOLLOW(A) fazem parte de FOLLOW(X).Dada a gramática G = ({E, E ′ , T, T ′ , F }, {∨, ∧, ¬, id}, P, E) para expressões lógicas:Cláusula FirstE → T E ′E ′ → ∨T E ′ | εT → F T ′T ′ → ∧F T ′ | εF → ¬F | idConvém iniciar o processo pelos não-terminais que gerem conjuntos triviais. No exemplo,temos os não-terminais F, E’ e T’ que só geram elementos terminais (ou vazio):F = {¬, id}E ′ = {∧, ε}T ′ = {∨, ε}Como T deriva apenas em FT’ e F não leva em vazio, conclui-se que FIRST(T) =FIRST(F). E ainda, FIRST(E) = FIRST(T) = FIRST(F) = {¬, id}.28

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!