Você está na página 1de 5

UNIP CONTEÚDOS ACADÊMICOS BIBLIOTECAS MURAL DO ALUNO

COMPILADORES E COMPUTABILIDADE CONTEÚDO


Revisar envio do teste: QUESTIONÁRIO UNIDADE I

Usuário
Curso COMPILADORES E COMPUTABILIDADE
Teste QUESTIONÁRIO UNIDADE I
Iniciado 01/09/22 21:22
Enviado 01/09/22 21:33
Status Completada
Resultado da tentativa 4,5 em 5 pontos
Tempo decorrido 10 minutos
Resultados exibidos Respostas enviadas, Perguntas respondidas incorretamente

Pergunta 1 0,5 em 0,5 pontos

Durante o processo de verificação da estrutura sintática de um programa, o


analisador simula o processo de construção da árvore de derivação para o
programa que está sendo compilado. Usualmente esse processo é realizado
adotando-se uma dentre duas abordagens possíveis. a top-down, em que se parte
do símbolo inicial da gramática e tenta-se alcançar os elementos que compõe o
programa; e a botton-up, que segue o princípio contrário, partindo do código e
realizado reduções na sentença até que se alcance o símbolo inicial que caracterize
o elemento raiz da árvore. A respeito destas estratégias assinale a alternativa
correta.

Resposta a.
Selecionada: Os métodos descendentes são usualmente mais convenientes em
casos de implementação manual, enquanto os métodos
ascendentes (botton-up) são considerados mais favoráveis para
construtores automáticos de analisadores.

Pergunta 2 0,5 em 0,5 pontos

Para o desenvolvimento de um compilador é possível que se adote um dos


diferentes modelos de construção. Um destes é o que chamamos de modelo de
múltiplas passagens, em que as atividades relacionadas a tradução e a escrita do
código alvo são realizadas em etapas encadeadas. Cada fase realiza sua tarefa
percorrendo todo o código fonte e, após uma conclusão bem-sucedida, inicia-se a
etapa subsequente tendo como entrada o resultado da fase anterior. Acerca deste
modelo analise as seguintes considerações.
- Trata-se de um modelo bastante didático, pois a modularização do processo
permite o desenvolvimento gradativo do compilador enquanto se estuda com mais
detalhes as atividades pertinentes a cada etapa.
- Por outro lado, uma desvantagem inerente ao modelo é que por exemplo um erro
semântico localizado nas primeiras linhas do código fonte somente seria detectado
após a conclusão das análises léxica e sintática de todas as linhas do programa.
Assinale a alternativa que representa o melhor juízo cabível sobre o que se afirmou.

Resposta a.
Selecionada: Ambas as assertivas são verdadeiras, sendo a segunda a
justificativa da primeira.

Pergunta 3 0,5 em 0,5 pontos

Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os movimentos


realizados por um reconhecedor ascendente para esta cadeia?

G = ({L,S}, {“(“, ”)”, ”a”, ”,”}, L, P )


P. L → (S)
S → I,S | I
I→a|L

Resposta a.
Selecionada: (a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,
(a,a)) ⇒ (I,I,(I,a)) ⇒(I,I,(I,I)) ⇒ (I,I,(I,S)) ⇒ (I,I,(S)) ⇒ (I,I,L) ⇒ (I,I,I) ⇒ (I,I,S) ⇒
(I,S) ⇒ (S) ⇒ L.

Pergunta 4 0,5 em 0,5 pontos

Os métodos ligados a análise sintática se agrupam em ascendentes e descendentes,


de acordo com a forma como derivam a estrutura sintática da sentença do
programa. Assinale a alternativa incorreta a respeito dos analisadores sintáticos.

Resposta d.
Selecionada: Dentre a categoria de analisadores descendentes podemos citar os
parses Descendentes Recursivos, de Cocke‐Younger‐Kasami e os
analisadores do tipo LR(k).
Pergunta 5 0,5 em 0,5 pontos

No modelo de Análise e Síntese o processo é dividido em duas grandes etapas. Na


primeira, são realizadas todas as tarefas pertinentes a análise e compreensão do
código fonte, enquanto na segunda, as atividades de otimização e a geração do
código propriamente dito. Cada uma destas grandes etapas pode ser decompostas
em fases, de propósito específico e cujo resultado de seu processamento servirá
como dado de entrada para a próxima fase. Analise as alternativas a seguir e
assinale aquela cuja atividade não corresponde a nenhuma das subfases deste
modelo.

Resposta e.
Selecionada: A fase de link edição, ou ligação, é responsável por criar o arquivo
executável combinando todos os arquivos objetos em um único
módulo de carga.

Pergunta 6 0,5 em 0,5 pontos

A gramática dada a seguir é LL(1). Nela os elementos +, *, (, ) e id configuram como


símbolos terminais, enquanto os E, T, F, E’ e T’ são considerados não-terminais. A
tabela de movimentos M fornece ao reconhecedor o número da regra que deve ser
aplicada durante a análise da sentença, sendo necessário apenas conhecer o não-
terminal a ser derivado e o primeiro símbolo presente no restante da entrada.

Sobre a construção de analisadores sintáticos deste tipo é incorreto afirmar que:

Resposta d.
Selecionada: A aplicação da regra 8 deve ser feita antes da regra 7, segundo a
interpretação que temos da tabela. Esse fato se comprova ao
observarmos que o símbolo “(“ poderia ocorrer imediatamente após
um “id” segundo o que determina as produções da gramática.

Pergunta 7 0,5 em 0,5 pontos


Um analisador sintático LL(1) somente pode ser construído para uma classe restrita
de gramáticas, que também recebem este mesmo nome. Uma de suas
características é que suas produções não apresentem prefixos comuns para cadeias
distintas derivadas a partir de um mesmo não-terminal. Ou seja, se duas produções
que começam com o mesmo símbolo ou conjunto de símbolos (prefixo), por
exemplo, como nas regras A→αβ e A→αδ e sendo First(α) ≠ ∅, implicará numa
interseção entre os conjuntos First(αβ) e First(αδ) e o analisador não será capaz de
decidir qual regra escolher utilizando um único símbolo da entrada. Usualmente o
problema pode ser resolvido substituindo as produções da gramática que causam o
problema por outras que acomodem essa restrição, mantendo a equivalência entre
elas. Supondo a produção S → if E then S else S fi | if E then S fi | K e
considerando ε como a sentença vazia, quais dentre as alternativas a seguir
representa uma substituição válida para resolver o problema apresentado e obter
uma gramática equivalente que seja LL(1)?.

Resposta Selecionada: S → if E then S R fi | K


a. R → else S | ε

Pergunta 8 0 em 0,5 pontos

Analisadores sintáticos do tipo LL(k) realizam a verificação da sentença de modo


descendente, entretanto tem como restrição poderem ser aplicados apenas aos
casos em que a gramática da linguagem é LL(k). Considerando a produção S → S x K
| K qual, dentre as alternativas a seguir, poderia substituí-la de modo a eliminar a
recursão a esquerda e criar uma gramática equivalente? (Considere ε representando
a sentença vazia).
Resposta Selecionada:
a.

Pergunta 9 0,5 em 0,5 pontos

Durante a varredura do código fonte pelo Scanner (Analisador Léxico) várias tarefas
ditas secundárias são realizadas. Assinale a alternativa cuja tarefa não corresponde
as atribuições esperadas para um analisador léxico.

Resposta e.
Selecionada: Detectar os marcadores de início e de fim de blocos para que os
comandos possam ser agrupados em um único elemento e
entregues para a fase de análise sintática com um comando único.
Pergunta 10 0,5 em 0,5 pontos

Os diferentes elementos básicos que compõe uma linguagem, tais como as palavras
reservadas, identificadores, operadores e quaisquer outros lexemas estabelecidos
por ela, também possuem uma estrutura sintática e podem ser descritos
formalmente através de expressões regulares. Entretanto a tarefa de
reconhecimento dos lexemas é realizada pelo Analisador Léxico, acontecendo de
maneira separada da Análise Sintática do código.
Assim, um analisador léxico é antes de mais nada um elemento reconhecedor
destas estruturas e pode ser definido como um autômato finito, dada a natureza
regular dos elementos da linguagem.
Julgue cada uma das afirmativas a seguir e assinale a alternativa correta.
I) As gramáticas regulares não permitem a descrição de estruturas aninhadas e
portanto não são capazes de descrever simultaneamente os lexemas e também as
demais estruturas típicas nas linguagem de programação, tais como parênteses
balanceados e comandos aninhados.
II) A separação das etapas permite utilizar gramaticas regulares, que são mais
simples e mais eficientes, para a descrição dos lexemas tornado a implementação
do reconhecedor mais fácil.
III) O analisador sintático ficaria muito mais complexo, pois estaria a todo momento
preocupado em prever a ocorrência de símbolos irrelevantes, tais como espaços em
branco, que teriam sido eliminados pela análise léxica.

Resposta e.
Selecionada: Todos itens são verdadeiros e os motivos apresentados justificam
a separação dos analisadores.

← OK

Você também pode gostar