Exercícios Resolvidos de Compiladores e Análise Sintática

Classificado em Matemática

Escrito em em português com um tamanho de 3,7 KB

Exercício 43

Dada a gramática abaixo, em que E, T, F, E’ e T’ são símbolos não terminais e os +, *, (, ) e id são símbolos terminais, a tabela de movimentos M indica qual regra deve ser utilizada pelo parser durante a análise de uma sentença, tomando como base o não terminal a ser derivado e o primeiro símbolo presente na entrada.

B) A regra 1 deverá ser aplicada quando o símbolo não terminal E for o derivado e na entrada houver um elemento que pertença ao conjunto First(E).

Exercício 45

As regras de produção a seguir são parte de uma gramática para a análise de expressões aritméticas parentizadas e que considera a precedência entre operadores. Nela, os símbolos E, T, F, E’ e T’ configuram como elementos não terminais, enquanto os +, *, (, ) e id são símbolos terminais. A tabela M corresponde às ações de derivação realizadas por um parser LL(1) durante a análise de uma sentença, tomando como base o não terminal a ser derivado e o primeiro símbolo presente na entrada.

B)

Exercício 46

Analise cada alternativa apresentada e assinale a incorreta:

  • A análise sintática apresenta como entrada uma sequência de tokens obtidos pelo analisador léxico e apresenta como saída: uma árvore, se a entrada for válida; emissão de erros sintáticos, se a entrada não for válida.
  • D) Analisadores sintáticos que empregam os métodos universais são usualmente muito eficientes para compiladores de produção, visto que podem tratar qualquer tipo de gramática livre de contexto.

Exercício 47

[Poscomp, 2003] Dada a seguinte linguagem, em que ε representa a string vazia e $ representa um marcador de fim de entrada:

D) O conjunto FOLLOW(B) = {c, $}.

Exercício 48

[Poscomp, 2004] Dada a seguinte linguagem, em que ε representa a sentença vazia:

Qual o conjunto de terminais que podem começar sentenças derivadas de S?

B) {a, b, f, c, g}

Exercício 49

[Poscomp, 2008] Considere as seguintes afirmativas sobre o FRONT-END de um compilador. I. As mensagens de erro de um compilador são geralmente geradas no FRONT-END. Mensagens de erro de compilação não são geradas no BACK-END.

E) I e III, apenas.

Exercício 50

[Poscomp, 2009] Considere uma produção pertencente a uma gramática G dada por: L → L a S | S. Assinale a alternativa que, substituindo essa produção, elimina a recursividade à esquerda criando uma gramática equivalente:

B) L → S R
R → a S R | ε

Exercício 1

Julgue as afirmativas a seguir e assinale a alternativa incorreta:

A) Após a recuperação do primeiro erro na sentença em análise sintática, as rotinas de verificação semântica devem continuar operacionais, enquanto as rotinas de geração de código devem ser desativadas, pois não existem motivos para executar o código-objeto, dado que grande parte das reparações no código-fonte requer descarte de parte da sentença em análise.

D) A descoberta de erros pode ocorrer em dois modos da análise:

  • I. Tempo mais cedo – em operações sobre a pilha, quando, numa redução, não se encontra na pilha o elemento esperado.
  • II. Tempo mais tarde – na leitura da sentença da entrada, quando o token lido...

Entradas relacionadas: