Buscar

COMPILADORES Atividade 09 - Quiz de Compiladores

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

01. Em um compilador, o ANALISADOR LÉXICO:
a) cria uma estrutura de dados
b) cria o código objeto
c) cria uma sequência de símbolos/tolkens
d) cria uma gramática livre de contexto
e) cria um código intermediário
02. Assinale a opção correta.
a) A conversão da representação física das instruções para código lógico é feita pelo Gerador.
b) O compilador é responsável por gerar um programa em linguagem de máquina executável, a partir de
um programa escrito em uma linguagem de alto nível.
c) A conversão da representação simbólica das instruções para código criptografado é feita pelo
Registrador.
d) O compilador é responsável por gerar um programa em linguagem de alto nível não executável, a
partir de um programa escrito em uma linguagem de máquina executável.
e) O cointerpretador é responsável por gerar um programa em linguagem de máquina não interpretável,
a partir de um programa escrito em uma linguagem de usuário.
3. O que o analisador semântico faz com a árvore sintática e a tabela de símbolos?
A. Transforma a árvore sintática em código de máquina diretamente.
B. Usa ambas para verificar se o código segue as regras semânticas da linguagem.
C. Ignora a árvore sintática e foca apenas na tabela de símbolos.
D. Deleta a árvore sintática após a análise léxica.
04. Um analista está responsável pelo projeto de um compilador para uma nova linguagem que sua
empresa está desenvolvendo. Este compilador deverá receber como entrada o código fonte do
programa e gerar como saída o código de linguagem de máquina para um determinado processador e
sistema operacional. O analista sabe que um processo de compilação é dividido em fases e que seu
compilador deverá possuir todas as fases de um típico processo de compilação mesmo que elas NÃO
sejam obrigatórias em outros compiladores. A fase que não faz parte de um processo de compilação e
que, portanto, não seria necessária no projeto do analista é a:
a) análise léxica.
b) análise sintática.
c) geração de código intermediário.
d) ligação dos módulos.
e) otimização de código.
05. Qual das seguintes verificações é realizada durante a análise semântica?
A. Verificação de parênteses correspondentes.
B. Verificação de declaração de variáveis antes de seu uso.
C. Contagem do número de linhas de código.
D. Conversão de código fonte para código de máquina.
06. Ao realizar testes durante a elaboração de um compilador, um analista descobriu que havia, no
compilador, um erro na checagem de tipos de variáveis em expressões, permitindo, por exemplo, a
multiplicação entre tipos de dados que não poderia ocorrer. Em compiladores, a checagem de tipos de
variáveis em expressões é uma função do:
a) analisador semântico.
b) analisador léxico.
c) otimizador de código.
d) scanner.
e) linker.
07. Durante a compilação de um código-fonte, a fase do compilador que é responsável por produzir
uma sequência de tokens é a:
a) análise léxica.
b) análise semântica.
c) análise sintática.
d) geração de código executável.
e) verificação de tipos.
08. No contexto dos compiladores, os scanners são responsáveis por executar a:
a) análise léxica.
b) análise sintática.
c) análise semântica.
d) otimização do código fonte.
e) tradução do programa fonte no programa objeto.
09. Por que a análise semântica não pode ser realizada apenas com expressões regulares ou
gramáticas livres de contexto?
A. Porque essas ferramentas não conseguem acessar a internet.
B. Porque elas são usadas apenas para a análise léxica.
C. Porque não podem verificar relações complexas e regras semânticas que envolvem contextos amplos
do código.
D. Porque são muito lentas para processar grandes volumes de código.
10. No contexto dos compiladores, os "parsers" são responsáveis por executar a:
a) análise léxica.
b) análise sintática.
c) análise semântica.
d) otimização do código fonte.
e) tradução do programa fonte no programa objeto.
11. Qual é o propósito da análise semântica no processo de compilação?
A. Verificar a sintaxe do código fonte.
B. Otimizar o código fonte para execução mais rápida.
C. Garantir que o código fonte siga as regras semânticas da linguagem de programação.
D. Converter o código fonte em linguagem de máquina.
12. O que é uma tabela de símbolos usada na análise semântica?
A. Uma lista de todos os símbolos gráficos usados no código.
B. Uma estrutura de dados que armazena informações sobre os identificadores usados no código.
C. Um índice de todas as funções definidas no código fonte.
D. Uma ferramenta para otimização de loops no código.
13. O que a análise léxica realiza durante o processo de compilação?
A. Transforma o código fonte em linguagem de máquina.
B. Verifica a correção semântica do código.
C. Separa o texto do código fonte em uma série de tokens.
D. Constrói a árvore sintática do programa.
E. Otimiza o código para melhor desempenho.
14. Qual dos seguintes é considerado um token em um programa de computador?
A. Um comentário no código.
B. Uma linha em branco no código fonte.
C. Uma palavra-chave, como if ou while.
D. O número de linhas de código.
E. O tamanho do arquivo de código fonte.
15. Qual é o principal objetivo da análise sintática (parsing) no processo de compilação?
A. Converter o código fonte em linguagem de máquina diretamente.
B. Verificar a correção ortográfica do código.
C. Construir a árvore sintática a partir dos tokens.
D. Otimizar o código fonte.
E. Separar o código fonte em tokens.
16. Qual tipo de erro o compilador detecta durante a análise semântica?
A. Erros de digitação no código.
B. Uso de uma variável não declarada.
C. Erros de sintaxe, como parênteses faltantes.
D. Falhas de conexão com a internet durante a compilação.
E. Erros de versionamento de software.
17. Para que são utilizadas as gramáticas livres de contexto na compilação de programas?
A. Para otimizar o código e melhorar o tempo de execução.
B. Para separar o código fonte em tokens.
C. Para construir a tabela de símbolos.
D. Para definir a sintaxe da linguagem de programação.
E. Para gerar código de máquina diretamente a partir do código fonte.
18. O que significa a verificação de tipos na análise semântica?
A. Confirmar que o código fonte segue o padrão de codificação.
B. Verificar se as operações em variáveis são compatíveis com seus tipos.
C. Garantir que todas as variáveis são inicializadas antes do uso.
D. Assegurar que o código fonte está bem documentado.
E. Verificar a profundidade da árvore sintática.
19. Qual aspecto a análise semântica avalia em relação ao escopo de variáveis?
A. Se uma variável global pode ser acessada de qualquer parte do programa.
B. Se as variáveis são declaradas ao topo do arquivo de código.
C. Se uma variável local é acessível apenas dentro da função ou bloco onde foi declarada.
D. O número total de variáveis declaradas em um programa.
E. Se variáveis de diferentes escopos podem ter o mesmo nome.
20. Como a análise semântica trata a sobrecarga de funções?
A. Verificando se todas as funções sobrecarregadas estão corretamente documentadas.
B. Assegurando que cada função sobrecarregada tem um número diferente de parâmetros ou tipos de
parâmetros.
C. Checando se a sobrecarga de funções é permitida na linguagem de programação.
D. Garantindo que funções sobrecarregadas tenham o mesmo tipo de retorno.
E. Verificando se funções sobrecarregadas estão localizadas no mesmo arquivo de código fonte.
21. Como a análise léxica trata as palavras reservadas de uma linguagem de programação?
A. Ignorando-as, pois não têm significado semântico.
B. Classificando-as como identificadores de usuário.
C. Reconhecendo-as como tokens específicos com significado pré-definido na linguagem.
D. Convertendo-as em literais string.
E. Armazenando-as na tabela de símbolos para análise semântica posterior.
22. Qual é a principal contribuição da análise sintática para o processo de compilação?
A. Gerar mensagens de erro detalhadas para cada tipo de exceção encontrada.
B. Produzir o código objeto final a partir do código fonte.
C. Checar a compatibilidade de tipos entre as operações.D. Verificar a correta alocação de memória para variáveis e funções.
E. Determinar a estrutura hierárquica do programa fonte.
23. O que a coerção de tipos implica na análise semântica?
A. A conversão automática de um tipo de dado para outro quando operações são realizadas entre tipos
incompatíveis.
B. A necessidade de declarar explicitamente todos os tipos de variáveis no início do programa.
C. A verificação da correta utilização de estruturas de controle de fluxo, como loops e condicionais.
D. A otimização do uso de memória por variáveis de diferentes tipos.
E. A proibição do uso de tipos dinâmicos em linguagens estaticamente tipadas.
24. Durante a análise semântica, o que envolve a resolução de nomes?
A. A compressão de todos os nomes de variáveis e funções para reduzir o tamanho do código.
B. A tradução de nomes de variáveis de uma linguagem para outra.
C. A determinação do significado de cada nome de variável e função no contexto em que são usados.
D. A renomeação automática de variáveis para evitar conflitos de nomeação.
E. A criação de um índice de todos os nomes usados no programa.
25. Como a análise semântica verifica a inicialização de variáveis?
A. Acompanhando o fluxo de execução do programa para garantir que cada variável seja atribuída um
valor antes de sua primeira utilização.
B. Comparando o nome da variável com uma lista de variáveis padrão da linguagem de programação.
C. Verificando a presença de variáveis não utilizadas no código fonte.
D. Assegurando que todas as variáveis sejam declaradas no início do programa.
E. Convertendo automaticamente todas as variáveis não inicializadas em um tipo padrão.

Outros materiais