Buscar

Atividade Objetiva 3 - Compiladores - NOTA 1.0 de 1.0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Atividade 3
Iniciado: 10 abr em 18:38
Instruções do teste

Pergunta 1 0,2 pts
Importante:
Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que
você clique em "FAZER O QUESTIONÁRIO", no final da página.
Leia o texto a seguir:
 
Um parser LR é capaz de reconhecer uma determinada linguagem especificada por uma gramática
livre de contexto. O termo é usado para se referir a um programa de driver que pode ser chamado
com uma determinada tabela e que produz uma ampla gama de diferentes analisadores LR. Esses
programas devem ser chamados de geradores de analisadores.
 
Um gerador de analisador é um aplicativo que gera um analisador, o resultado é uma implementação
do analisador em alguma linguagem. Considerando isso, avalie as afirmações a seguir:
 
I. O parser, transforma uma simples lista de tokens obtida após a análise léxica em uma
representação em árvore e também verifica a sintaxe da linguagem. O processo de resolução
desse problema é chamado de "parsing".
II. Um analisador LR é um programa iterativo que pode ser implementado com eficiência por um
analisador descendente, que é um conjunto de funções mutuamente iterativas, semelhante a um
analisador ascendente.
III. O parser para gramática G determina se a string de entrada ‘w', é uma sentença de G ou não. Se
`w' é uma sentença de G, então o analisador sintático produz a árvore de análise para `w'. Caso
contrário, um erro é produzido.
IV. Por convenção, os analisadores LR são introduzidos e implementados facilmente por máquinas
de pilha baseadas em algoritmos, nas quais a pilha de chamadas do programa iterativo
subjacente é explicitamente manipulada.
 
É correto apenas o que se afirma em:
I e II, apenas.
A+
A
A-
NOTA: 1.0 de 1.0

Pergunta 2 0,2 pts
I, II e IV, apenas.
II, III e IV, apenas.
II e III, apenas.
I e III, apenas.
Leia o texto a seguir:
 
Erros lexicais e erros sintáticos são classificados como erros locais, e erros semânticos podem ser
globais. Erros lexicais e sintáticos são locais, ou seja, você não vai para trás e para frente na pilha
de análise ou no token sequência para corrigir o erro, o erro é corrigido onde ele acontece. Os
analisadores LL e LR têm uma propriedade de prefixo válida, ou seja, descobrem o erro quando a
substring que está sendo analisada junto com o próximo símbolo não formam um prefixo da língua.
 
Considerando o contexto apresentado, avalie as seguintes asserções e a relação proposta entre
elas:
 
I. Erros de sintaxe são erros que surgem durante uma análise de sintaxe. Os métodos de análise,
como LL e LR, podem detectar os erros imediatamente após sua ocorrência.
 
PORQUE
 
II. A tolerância para erros de síntese e a gramática de atributos das linguagens de programação
destinadas a limitá-los, como a compatibilidade de recebimento de tipos de dados, varia muito.
 
 
A respeito dessas asserções, assinale a opção correta:
As asserções I e II são proposições falsas.
A+
A
A-

Pergunta 3 0,2 pts
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Leia o texto a seguir:
 
Um compilador funciona por análise de síntese, no lugar de substituir cada construção da língua de
origem por uma sequência equivalente de construções da língua de origem. Ele começa analisando
o texto de origem para construir uma representação intermediária que, por sua vez, traduz para a
linguagem de destino.
 
Considerando o texto, avalie as afirmações abaixo:
 
I. Ao detectar o erro, o parser realiza as correções em todo o código, modificando todos os tokens
para permitir uma análise posterior.
II. Os tokens de sincronização são desbalizadores como o ponto e vírgula ou o end, cujo papel no
texto de origem é indefinido.
III. Lexemas são uma sequência de caracteres em um token. Algumas regras definem para que
cada lexema seja identificado como um token válido.
 
É correto o que se afirma em:
I, apenas.
III, apenas.
I e III, apenas.
II e III, apenas.
A+
A
A-

Pergunta 4 0,2 pts
I, II e III.
Leia o texto a seguir:
 
O principal objetivo de um analisador é determinar se os dados de entrada podem ser derivados do
símbolo inicial da gramática. Os dados de entrada podem ser derivados da seguinte forma: Análise
de cima para baixo ou Análise de baixo para cima. As informações do código-fonte devem, portanto,
ser processadas de acordo com um esquema específico para o compilador. O analisador cuida
disso. De cima para baixo, os analisadores começam no nó raiz (caractere inicial) e comparam a
string de entrada com as regras de produção para substituí-las (se forem correspondentes). Para
entender isso, pegue o seguinte exemplo de CFG:
 
S → rXd | rZd
X → oa | ea
Z → ai
 
Para uma string de entrada: read, o analisador top-down se comportaria assim:
Ele começará com um S nas regras de produção e corresponderá sua saída à letra mais à esquerda
da entrada, ou seja, 'R'. A própria produção S (S → rXd) coincide com isso. Assim, o analisador
descendente salta para a próxima letra de entrada (ou seja, 'e'). O parser tenta expandir o 'X' não-
terminal e verifica sua produção à esquerda (X → oa). Ele não corresponde ao próximo caractere de
entrada. Portanto, o analisador downstream retorna para obter a próxima regra de produção X, (X →
ea).
 
Considerando as reflexões apresentadas, assinale a opção correta.
O analisador descendente deve saltar para a próxima letra de entrada 'oa'.
O analisador downstream deve retornar para obter a regra X, (X → oa).
O analisador inicia com um S e sua saída à letra mais à esquerda da entrada, 'R'.
O método de análise utilizado é considerado ascendente por natureza.
A+
A
A-

Pergunta 5 0,2 pts
Salvo em 15:27 
O código tenta expandir o 'X' não-terminal e deve verificar sua produção à esquerda (X → oa).
Leia o texto a seguir:
 
Durante a análise sintática, os tokens são retirados do léxico. A análise sintática expõe a estrutura do
programa na forma de uma árvore, denominada árvore sintática. Cada nó corresponde a um
operador e seus filhos aos operandos sobre os quais atua.
 
Considerando as informações apresentadas, qual o papel da análise léxica no projeto de
compiladores?
Ter como base rotinas personalizadas para especificar as dependências hierárquicas dos elementos sintáticos.
Executar a primeira fase do Processamento de Linguagem Natural (PNL), conhecida como análise de sintaxe.
Unificar todas as sintaxes em uma série de tokens, removendo quaisquer espaços ou comentários no código-fonte.
Encontrar e destacar as principais construções sintáticas da linguagem na sequência de tokens.
Por ser a segunda fase de um compilador, ela leva o código-fonte modificado, que é escrito como sentença.
Enviar teste
A+
A
A-

Continue navegando