Logo Passei Direto
Buscar

atividade 4 de compiladores

User badge image
Kah L.N

em

Ferramentas de estudo

Questões resolvidas

Uma matriz de símbolos é muito conveniente para projetar como um tipo de dados abstrato ou como uma classe. Dessa forma:

Alterações internas na forma como ele é organizado não afetarão o restante do código do compilador.
Namespaces diferentes são facilmente definidos como tabelas de símbolos diferentes. Tabela de símbolos é uma importante estrutura de dados criada e mantida pelo compilador para acompanhar a semântica das variáveis, ou seja, armazena informações sobre o escopo e informações sobre nomes, informações sobre instâncias de várias entidades, como nomes de variáveis e funções, classes, objetos, etc.
Refletindo sobre a tabela de símbolos, avalie as seguintes asserções e a relação proposta entre elas.
I. A tabela com uma lista encadeada, quando uma sequência de células ligadas ou encadeadas umas às outras, é adequada para arrays com um número muito pequeno de símbolos.
II. É rápido inserir e pesquisar na tabela encadeada, já que serve para armazenar elementos em certa ordem, mas ela requer um design cuidadoso da provisão para casos de colisão.
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 ambas proposições falsas.
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, mas a II não é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Uma matriz de símbolos é muito conveniente para projetar como um tipo de dados abstrato ou como uma classe. Dessa forma:

Alterações internas na forma como ele é organizado não afetarão o restante do código do compilador.
Namespaces diferentes são facilmente definidos como tabelas de símbolos diferentes. Tabela de símbolos é uma importante estrutura de dados criada e mantida pelo compilador para acompanhar a semântica das variáveis, ou seja, armazena informações sobre o escopo e informações sobre nomes, informações sobre instâncias de várias entidades, como nomes de variáveis e funções, classes, objetos, etc.
Refletindo sobre a tabela de símbolos, avalie as seguintes asserções e a relação proposta entre elas.
I. A tabela com uma lista encadeada, quando uma sequência de células ligadas ou encadeadas umas às outras, é adequada para arrays com um número muito pequeno de símbolos.
II. É rápido inserir e pesquisar na tabela encadeada, já que serve para armazenar elementos em certa ordem, mas ela requer um design cuidadoso da provisão para casos de colisão.
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 ambas proposições falsas.
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, mas a II não é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Prévia do material em texto

Compiladores - S20261.347 Quizzes A�vidade 4
Conta
Painel de
controle
Cursos
Grupos
Calendário
Caixa de
entrada
Histórico
Ajuda
2
10
A�vidade 4
Iniciado: 18 mar em 10:26
Instruções do teste
Salvando... 
Graduação Semestral | 2026.1
Página inicial
Pesquisa IgniteAI
Avisos
Fóruns
Módulos
Tarefas
Notas
Zoom
Importante:
Caso você esteja realizando a a�vidade através do aplica�vo "Canvas Student", é necessário
que você clique em "FAZER O QUESTIONÁRIO", no final da página.
0,2 ptsPergunta 1
Leia o texto a seguir:
 
O comportamento de uma tabela de símbolos depende fortemente das
propriedades das declarações da linguagem traduzida. Por exemplo, a
forma como as operações inserir e remover manipulam a tabela de
símbolos, quando essas operações devem ser a�vadas e quais atributos
devem ser inseridos na tabela, tudo isso varia muito de linguagem para
linguagem. Até mesmo o momento durante a tradução/execução em que a
tabela de símbolos pode ser construída, e por quanto tempo essa tabela
deve exis�r, pode variar muito entre as diferentes linguagens.
 
Fonte: LOUDEN, K. C. Compiladores: princípios e prá�cas. São Paulo.
Cengage Learning Brasil, 2004.
 
Dependendo da linguagem escolhida, a tabela de caracteres pode servir
a qual propósito?
Criar símbolos predefinidos após o processo de compilação para guardar
informações dos nomes.
Armazenar os nomes de todas as en�dades de forma estruturada em vários
locais de acordo com a estrutura.
Mapear nomes lidos pelo compilador para suas informações
correspondentes.
Implementar novas atribuições e expressões no código-fonte que sejam
seman�camente incorretas.
Armazenar informações do código hash do objeto durante o processo de
compilação.
0,2 ptsPergunta 2
Leia o texto a seguir:
 
O processo de geração de código é realizado por um componente
conhecido como gerador de código, parte do compilador de programa. O
código-fonte original de qualquer programa passa por vários ganhos antes
que o executável final seja gerado, e quando for finalmente gerado é, na
verdade, um código de máquina que os sistemas de computador podem
executar facilmente. A geração do código é a úl�ma fase da tradução. Seu
resultado é um módulo montador ou um módulo de objeto (ou
inicialização). Ao contrário das linguagens interpretadas, as compiladas
não executam o código imediatamente. Ele deve ser construído primeiro,
o que é uma etapa extra e um tempo extra.
O código é mais di�cil de depurar: você tem que recompilá-lo para cada,
mesmo uma pequena mudança. O próprio processo de encontrar e
eliminar erros pode não ser claro.
 
Considerando as reflexões apresentadas, assinale a opção correta.
A geração de código inclui várias subtarefas específicas e rela�vamente
independentes. Obviamente, a independência dessas subtarefas é rela�va.
Todos os geradores de código têm muito em comum, e os principais
algoritmos u�lizados diferem, via de regra, apenas em detalhes relacionados
à geração de saída.
Nos estágios intermediários da construção, as regras de o�mização de
código são aplicadas várias vezes, sendo que esses processos de o�mização
dependem uns dos outros.
A tarefa de um gerador de código é construir um programa de máquina
equivalente para um programa em linguagem de entrada. A entrada para
um gerador de código é uma representação desprotegida.
Depois de passar pela face, várias árvores de análise são geradas. Neste
ponto, o gerador de código converte de imediato em endereçamento direto
por meio do registrador de endereços.
0,2 ptsPergunta 3
Leia o texto a seguir:
 
O código de três endereços é uma sequência de instruções no formato x :=
y op z, onde x, y e z são nomes, constantes ou objetos temporários
gerados pelo compilador. Aqui, op é uma operação de dois lugares, como
ponto flutuante ou aritmé�ca fixa, booleana ou bit a bit. O lado direito
pode conter apenas um sinal da operação.
Os objetos temporários são objetos que não possuem nomes no código e
são criados implicitamente pelo compilador em alguns casos.
Considerando isso, avalie as afirmações a seguir:
 
I. Quase todas as linguagens são capazes de criar automa�camente
variáveis temporárias para resultados intermediários de �pos simples.
II. Durante a chamada de uma função, o arquivo temporário apresenta
uma forma de alocação de dados, chamado de registro de desa�vação.
III. Ao executar o código, o interpretador usa os valores do contador do
programa, receptor, literais e variáveis temporárias.
IV. É recomendável usar ponteiros ou referenciar partes de um objeto
temporário, pois não há riscos de ir para o lixo.
 
É correto o que se afirma apenas em:
I e III, apenas.
I, II e IV, apenas.
I e II, apenas.
II e III, apenas.
II, III e IV, apenas.
0,2 ptsPergunta 4
Leia o texto a seguir:
 
O registro do �po de cada iden�ficador de variável é realizado durante a
análise de um bloco de declarações. Nessa altura é criada uma entrada na
tabela de símbolos e registrado o �po associado à variável. Quando a
definição de uma função é analisada, cria-se uma entrada na tabela dos
símbolos com o iden�ficador da função como chave. Deve-se associar o
�po de retorno e memorizar o �po de cada parâmetro.
 
Fonte: SANTOS, P. R.; LANGLOIS, T. Compiladores - Da Teoria à Prá�ca.
São Paulo. Grupo GEN, 2018.
 
Considere o texto acima para analisar as seguintes afirmações:
 
I. Podemos dizer que um iden�ficador permite criar regras específicas e
estas independam todas de um iden�ficador comum.
II. Um iden�ficador se comporta da mesma maneira, conforme apareça
em uma declaração ou na chamada de uma função.
III. É fato que um iden�ficador não pode ser uma palavra-chave devido as
palavras-chave serem de ordem reservadas.
 
É correto o que se afirma em:
I, II e III.
I e III, apenas.
II e III, apenas.
III, apenas.
I, apenas.
0,2 ptsPergunta 5
Leia o texto a seguir:
 
Uma matriz de símbolos é muito conveniente para projetar como um �po
de dados abstrato ou como uma classe. Dessa forma:
Alterações internas na forma como ele é organizado não afetarão o
restante do código do compilador.
Namespaces diferentes são facilmente definidos como tabelas de
símbolos diferentes. Tabela de símbolos é uma importante estrutura
de dados criada e man�da pelo compilador para acompanhar a
semân�ca das variáveis, ou seja, armazena informações sobre o
escopo e informações sobre nomes, informações sobre instâncias de
várias en�dades, como nomes de variáveis e funções, classes, objetos,
etc.
 
Refle�ndo sobre a tabela de símbolos, avalie as seguintes asserções e a
relação proposta entre elas.
 
I. A tabela com uma lista encadeada, quando uma sequência de células
ligadas ou encadeadas umas às outras, é adequada para arrays com um
número muito pequeno de símbolos.
 
PORQUE
 
II. É rápido inserir e pesquisar na tabela encadeada, já que serve para
armazenar elementos em certa ordem, mas ela requer um design
cuidadoso da provisão para casos de colisão.
 
A respeito dessas asserções, assinale a opção correta:
As asserções I e II são proposições verdadeiras, e a II é uma jus�fica�va da
I.
As asserções I e II são ambas proposições falsas.
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, mas a II não é uma
jus�fica�va da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Enviar teste
Perguntas
 Pergunta 1
 Pergunta 2
 Pergunta 3
 Pergunta 4
 Pergunta 5
Tempo transcorrido:
Prazo da tenta�va encerrado: 27 mai em
23:59
1 Hora, 52 Minutos, 43 Segundos
Ocultar hora
A+
A
A
https://famonline.instructure.com/courses/51305
https://famonline.instructure.com/courses/51305/quizzes
https://famonline.instructure.com/courses/51305/quizzes/246163
https://famonline.instructure.com/
https://famonline.instructure.com/profile/settings
https://famonline.instructure.com/
https://famonline.instructure.com/courses
https://famonline.instructure.com/groups
https://famonline.instructure.com/calendar
https://famonline.instructure.com/conversationshttps://famonline.instructure.com/courses/51305
https://famonline.instructure.com/courses/51305/search
https://famonline.instructure.com/courses/51305/announcements
https://famonline.instructure.com/courses/51305/discussion_topics
https://famonline.instructure.com/courses/51305/modules
https://famonline.instructure.com/courses/51305/assignments
https://famonline.instructure.com/courses/51305/grades
https://famonline.instructure.com/courses/51305/external_tools/52752

Mais conteúdos dessa disciplina