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.

Cláusula FollowPela regra 1 temos que FOLLOW(E) = {$}. Pela regra 3 tem-se que FOLLOW(E)= FOLLOW(E’). FOLLOW(T) é obtido a partir da união dos conjuntos obtidos pelaaplicação da regra 2 em (E ′ → ∨T E ′ ) e regra 3 em (E ′ → ε). Sendo assim temos:FOLLOW(T) = FIRST(E’) + FOLLOW(E’) = {∨, $}.FOLLOW(T’) = FOLLOW(T) pela aplicação da regra 3 em T → F T ′ . E finalmente,FOLLOW(F) = FIRST(T’) + FOLLOW(T’). Aplicação das regras 2 e 3 em T ′ → ∧F T ′ |ε, ou seja FOLLOW(F) = {∨, ∧, $}.4.4.1 Algoritmo para Construção da Tabela de AnáliseMétodo:• Para cada produção X → α, execute os passos 2 e 3 (para criar a linha X da tabelaM);• Para cada terminal a de FIRST(α), adicione a produção X → α a M[X,a];• Se FIRST(α) inclui a palavra vazia, então adicione X → α a M[X,b] para cada bem FOLLOW(X);Aplicando-se o algoritmo acima à gramática de expressões lógicas temos:Para E → T E ′ tem-se FIRST(TE’) = {¬, id} então, M[E, ¬] = M[E,id] = E → T E ′ .Para E ′ → ∨T E ′ tem-se FIRST(∨T E ′ ) = {∨} então, M[E’, ∨] = E ′ → ∨T E ′ .Para E ′ → ε tem-se FOLLOW(E’) = {$} então, M[E’, $] = E ′ → ε.Para T → F T ′ tem-se FIRST(FT’) = {¬, id} então, M[T, ¬] = M[T,id] = T → F T ′ .Para T ′ → ∧F T ′ tem-se FIRST(∧F T ′ ) = {∧} então, M[T’, ∧] = T ′ → ∧F T ′ .Para T ′ → ε tem-se FOLLOW(T’) = {∨, $} então, M[T’, ∨] = M[T’,$] = T ′ → ε.Para F → ¬F tem-se FIRST(¬F ) = {¬} então, M[F, ¬] = F → ¬F .Para F → id tem-se FIRST(id) = {id} então,M[F,id] = F → id.id ∨ ∧ ¬ $E E → T E ′ E → T E ′E’ E ′ → ∨T E ′ E ′ → εT T → F T ′ T → F T ′T’ T ′ → ε T ′ → ∧F T ′ T ′ → εF F → id F → ¬idSe, em cada entrada da Tabela de Análise, existe apenas uma produção, então agramática que originou a tabela é dita ser do tipo LL(1), ou seja: as sentenças geradaspela gramática são passíveis de serem analisadas da esquerda para a direita (Left toRight), produzindo uma derivação mais à esquerda (Leftmost Derivation), levandoem conta apenas um símbolo da entrada.Exercício: Considerando a gramática para a linguagem a ser reconhecida pelo protótipode compilador para análise descendente, construir a tabela de análise resultante.29

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

Saved successfully!

Ooh no, something went wrong!