Logo Passei Direto
Buscar

COMPILADORES Teste de Conhecimento

Ferramentas de estudo

Questões resolvidas

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 poderiam ocorrer.
Em compiladores, a checagem de tipos de variáveis em expressões é uma função do:
analisador semântico.
otimizador de código.
scanner.
linker.
analisador léxico.

Com relação aos softwares básicos envolvidos no processo de transformação de um programa escrito em linguagem de alto nível para um código executável ou interpretado, assinale a alternativa correta.
Os link-editores são usados para resolver as referências aos símbolos internos de um programa, produzindo um código-objeto simplificado. Compilação e montagem são processos semelhantes; contudo, o processo de montagem é bem mais complexo. No processo de análise semântica da compilação, é verificada a consistência dos tipos de variáveis envolvidas em operações aritméticas. Os montadores buscam referências externas em rotinas de bibliotecas e inserem-nas no código-objeto. No processo de compilação, o analisador léxico e o sintático estão preocupados com a semântica e os significados dos programas como um todo.

Um compilador está verificando se uma variável foi declarada somente uma vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na fase de:
análise léxica.
otimização do código
análise sintática.
análise semântica.
geração do código.

O tradutor que gera um código objeto a partir de uma linguagem de baixo nível é o:
Compilador
Interpretador
Ligador
Montador
Carregador

Considerando a ciência da criação de um compilador, há vários objetos que são importantes para o processo de compilação. Esse é um componente importante para o processo e representa uma estrutura de dados que contém um registro para cada nome de variável, com campos para os atributos do nome. Assinale a alternativa que apresenta o nome desse componente.
Árvore de Sintaxe.
Otimizador de código.
Tabela de Símbolos.
Ligador (Linker).
Fluxo de tokens.

Qual é o elemento de um compilador que lê um fluxo de entrada (caracteres) e produz um fluxo de saída que contém palavras das quais cada uma é rotulada com sua categoria sintática, equivalente a uma classe gramatical da palavra na linguagem natural?
Scanner.
Parsing.
Reader.
Input.
Interface.

Um compilador é um programa que executa vários passos, dentre os quais o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal.
O resultado típico dessa análise é uma estrutura conhecida como:
Árvore sintática
Árvore AVL
Gramática livre de contexto
Fluxo (stream) de tokens
Gramática dirigida a sintaxe

A Hierarquia de Chomsky é uma classificação das gramáticas formais, proposta pelo linguista Noam Chomsky, que divide as gramáticas em 4 classes.
Nesse sentido, Linguagens livres de contexto são exatamente as linguagens que podem ser reconhecidas por:
expressões regulares.
autômatos com pilha.
autômatos finitos não determinísticos.
autômatos finitos determinísticos.
máquinas de Turing.

Considere as afirmativas: I. cria o código objeto traduzindo as instruções da linguagem de montagem (assembly) para código de máquina; II. recebe como entrada um conjunto de arquivos objetos e bibliotecas, e produz como resultado um arquivo objeto de saída; III. traduz um programa descrito em uma linguagem de alto nível para um programa em linguagem simbólica ou linguagem de máquina.
Nessa ordem, os itens de I a III referem-se a:
Compilador, ligador e montador.
Interpretador, ligador e compilador.
Ligador, montador e compilador.
Ligador, montador e interpretador.
Montador, ligador e compilador.

No contexto das estruturas de dados avançadas como listas, pilhas, filas e árvores é comum se encontrar referência à notação polonesa reversa (notação posfixa).
Nesse sentido, a expressão X*(Y+W)/(X-Y) é representada nessa notação, como:
XYW+*XY/-
XYW*+XY/-
XYW+*XY-/
XYW*+XY-/
XYW+*/XY-

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

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

Questões resolvidas

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 poderiam ocorrer.
Em compiladores, a checagem de tipos de variáveis em expressões é uma função do:
analisador semântico.
otimizador de código.
scanner.
linker.
analisador léxico.

Com relação aos softwares básicos envolvidos no processo de transformação de um programa escrito em linguagem de alto nível para um código executável ou interpretado, assinale a alternativa correta.
Os link-editores são usados para resolver as referências aos símbolos internos de um programa, produzindo um código-objeto simplificado. Compilação e montagem são processos semelhantes; contudo, o processo de montagem é bem mais complexo. No processo de análise semântica da compilação, é verificada a consistência dos tipos de variáveis envolvidas em operações aritméticas. Os montadores buscam referências externas em rotinas de bibliotecas e inserem-nas no código-objeto. No processo de compilação, o analisador léxico e o sintático estão preocupados com a semântica e os significados dos programas como um todo.

Um compilador está verificando se uma variável foi declarada somente uma vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na fase de:
análise léxica.
otimização do código
análise sintática.
análise semântica.
geração do código.

O tradutor que gera um código objeto a partir de uma linguagem de baixo nível é o:
Compilador
Interpretador
Ligador
Montador
Carregador

Considerando a ciência da criação de um compilador, há vários objetos que são importantes para o processo de compilação. Esse é um componente importante para o processo e representa uma estrutura de dados que contém um registro para cada nome de variável, com campos para os atributos do nome. Assinale a alternativa que apresenta o nome desse componente.
Árvore de Sintaxe.
Otimizador de código.
Tabela de Símbolos.
Ligador (Linker).
Fluxo de tokens.

Qual é o elemento de um compilador que lê um fluxo de entrada (caracteres) e produz um fluxo de saída que contém palavras das quais cada uma é rotulada com sua categoria sintática, equivalente a uma classe gramatical da palavra na linguagem natural?
Scanner.
Parsing.
Reader.
Input.
Interface.

Um compilador é um programa que executa vários passos, dentre os quais o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal.
O resultado típico dessa análise é uma estrutura conhecida como:
Árvore sintática
Árvore AVL
Gramática livre de contexto
Fluxo (stream) de tokens
Gramática dirigida a sintaxe

A Hierarquia de Chomsky é uma classificação das gramáticas formais, proposta pelo linguista Noam Chomsky, que divide as gramáticas em 4 classes.
Nesse sentido, Linguagens livres de contexto são exatamente as linguagens que podem ser reconhecidas por:
expressões regulares.
autômatos com pilha.
autômatos finitos não determinísticos.
autômatos finitos determinísticos.
máquinas de Turing.

Considere as afirmativas: I. cria o código objeto traduzindo as instruções da linguagem de montagem (assembly) para código de máquina; II. recebe como entrada um conjunto de arquivos objetos e bibliotecas, e produz como resultado um arquivo objeto de saída; III. traduz um programa descrito em uma linguagem de alto nível para um programa em linguagem simbólica ou linguagem de máquina.
Nessa ordem, os itens de I a III referem-se a:
Compilador, ligador e montador.
Interpretador, ligador e compilador.
Ligador, montador e compilador.
Ligador, montador e interpretador.
Montador, ligador e compilador.

No contexto das estruturas de dados avançadas como listas, pilhas, filas e árvores é comum se encontrar referência à notação polonesa reversa (notação posfixa).
Nesse sentido, a expressão X*(Y+W)/(X-Y) é representada nessa notação, como:
XYW+*XY/-
XYW*+XY/-
XYW+*XY-/
XYW*+XY-/
XYW+*/XY-

Prévia do material em texto

ANÁLISE SEMÂNTICA 
 
 
1. 
 
 
(IBGE/2010) 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 poderiam ocorrer. Em compiladores, a 
checagem de tipos de variáveis em expressões é uma função do: 
 
analisador semântico. 
 
 
otimizador de código. 
 
 
scanner. 
 
 
linker. 
 
 
analisador léxico. 
 
 
Explicação: 
A análise semântica é responsável por verificar a validade da semântica do programa, 
incluindo a checagem de tipos de variáveis em expressões. Ela tem como objetivo 
identificar erros de semântica, tais como operações inválidas com tipos de variáveis 
diferentes, declarações duplicadas de variáveis, etc. Por isso, é o analisador semântico que 
está responsável por detectar o erro mencionado na questão. 
 
 
 
 
 
2. 
 
 
(PC-DF/2012) Com relação aos softwares básicos envolvidos no processo de transformação de um 
programa escrito em linguagem de alto nível para um código executável ou interpretado, assinale a 
alternativa correta. 
 
 
No processo de compilação, o analisador léxico e o sintático estão preocupados com 
a semântica e os significados dos programas como um todo. 
 
 
Os montadores buscam referências externas em rotinas de bibliotecas e inserem-nas 
no código-objeto. 
 
 
Os link-editores são usados para resolver as referências aos símbolos internos de um 
programa, produzindo um código-objeto simplificado. 
 
 
Compilação e montagem são processos semelhantes; contudo, o processo de 
montagem é bem mais complexo. 
 
No processo de análise semântica da compilação, é verificada a consistência dos 
tipos de variáveis envolvidas em operações aritméticas. 
 
 
Explicação: 
A análise semântica é uma das etapas do processo de compilação. Ela tem como objetivo 
verificar a correção semântica do código-fonte, incluindo a consistência dos tipos de 
variáveis envolvidos em operações aritméticas. Esse processo verifica se o código está 
sendo usado corretamente de acordo com as regras da linguagem. 
 
 
O COMPILADOR 
 
 
3. 
 
Um compilador está verificando se uma variável foi declarada somente uma vez, se 
foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os 
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
 
tipos de dados em uma expressão aritmética são compatíveis. Essas verificações 
são realizadas na fase de: 
 
análise semântica. 
 
 
geração do código. 
 
 
otimização do código 
 
 
análise léxica. 
 
 
análise sintática. 
 
Explicação: 
A resposta correta é: análise semântica. 
 
 
 
 
 
4. 
 
 
O tradutor que gera um código objeto a partir de uma linguagem de baixo nível é o : 
 
 
Montador 
 
 
Interpretador 
 
 
Compilador 
 
 
Ligador 
 
 
Carregador 
 
 
Explicação: 
A resposta correta é: Montador. 
 
 
ANÁLISE LÉXICA 
 
 
5. 
 
 
Considerando a ciência da criação de um compilador, há vários objetos que são importantes para o 
processo de compilação. Esse é um componente importante para o processo e representa uma 
estrutura de dados que contém um registro para cada nome de variável, com campos para os 
atributos do nome. Assinale a alternativa que apresenta o nome desse componente. 
 
Tabela de Símbolos. 
 
 
Árvore de Sintaxe. 
 
 
Ligador (Linker). 
 
 
Fluxo de tokens. 
 
 
Otimizador de código. 
 
Explicação: 
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
A tabela de símbolos é uma estrutura de dados utilizada pelo compilador para armazenar 
informações sobre nomes de variáveis, constantes, funções, etc. presentes no código fonte. 
Ela é construída durante a fase de análise sintática e mantida atualizada ao longo do 
processo de compilação. A tabela de símbolos é importante pois permite ao compilador 
realizar verificações de semântica, alocação de memória, geração de código objeto, entre 
outras tarefas. 
 
 
 
 
 
6. 
 
 
(INSTITUTO AOCP/2019) Qual é o elemento de um compilador que lê um fluxo de entrada 
(caracteres) e produz um fluxo de saída que contém palavras das quais cada uma é rotulada com 
sua categoria sintática, equivalente a uma classe gramatical da palavra na linguagem natural? 
 
Scanner. 
 
 
Parsing. 
 
 
Reader. 
 
 
Input. 
 
 
Interface. 
 
Explicação: 
O scanner, também conhecido como análise léxica, é o primeiro passo no processo de 
compilação. O scanner lê o código fonte como um fluxo de entrada de caracteres e produz 
um fluxo de saída que consiste em tokens, que são palavras rotuladas com sua categoria 
sintática. Essas categorias sintáticas correspondem às classes gramaticais dessas palavras 
na linguagem natural, como palavras-chave, identificadores, números, símbolos, entre 
outros. 
 
 
ANÁLISE SINTÁTICA 
 
 
7. 
 
 
(CESGRANRIO/2012) Um compilador é um programa que executa vários passos, dentre os quais, 
o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma 
determinada gramática formal. 
 
O resultado típico dessa análise é uma estrutura conhecida como: 
 
 
gramática livre de contexto 
 
árvore sintática 
 
 
árvore AVL 
 
 
fluxo (stream) de tokens 
 
 
gramática dirigida a sintaxe 
 
 
Explicação: 
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
A Árvore Sintática é útil na análise sintática, pois permite verificar a correta ordenação dos 
tokens e a estrutura da sentença de forma visual e fácil de entender. Além disso, a Árvore 
Sintática pode ser usada como base para a geração de código em outras etapas do 
processo de compilação. 
 
 
 
 
 
8. 
 
 
(FCM/2018 - Adaptada) A Hierarquia de Chomsky é uma classificação das gramáticas formais, 
proposta pelo linguista Noam Chomsky, que divide as gramáticas em 4 classes. Nesse sentido, 
Linguagens livres de contexto são exatamente as linguagens que podem ser reconhecidas por: 
 
 
máquinas de Turing. 
 
 
expressões regulares. 
 
autômatos com pilha. 
 
 
autômatos finitos não determinísticos. 
 
 
autômatos finitos determinísticos. 
 
Explicação: 
Autômatos com pilha (Pushdown Automata) são usados para reconhecer a linguagem livre 
de contexto, que é uma classe mais ampla de linguagens do que as reconhecidas pelos 
autômatos finitos. A pilha permite que o autômato mantenha o contexto e faça escolhas 
não-determinísticas. 
 
 
GERAÇÃO DE CÓDIGO 
 
 
9. 
 
 
(UFAL/2016 - Adaptada) Considere as afirmativas: 
 
I. cria o código objeto traduzindo as instruções da linguagem de montagem (assembly) para código 
de máquina; 
II. recebe como entrada um conjunto de arquivos objetos e bibliotecas, e produz como resultado um 
arquivo objeto de saída; 
III. traduz um programa descrito em uma linguagem de alto nível para um programa em linguagem 
simbólica ou linguagem de máquina. 
 
Nessa ordem, os itens de I a III referem-se a: 
 
 
Compilador, ligador e montador. 
 
 
Interpretador, ligador e compilador. 
 
 
Ligador, montador e compilador. 
 
 
Ligador, montador e interpretador. 
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp
 
Montador, ligador e compilador. 
 
Explicação: 
O montador cria o código objeto traduzindo as instruções da linguagem de montagem 
(assembly) para código de máquina. O ligador recebe como entrada um conjunto de 
arquivos objetos e bibliotecas, e produz como resultado um arquivo objeto de saída. O 
compilador traduz um programa descrito em uma linguagem de alto nível para um 
programa em linguagem simbólica ou linguagem de máquina.10. 
 
 
(FGV/2009 - Adaptada) No contexto das estruturas de dados avançadas como listas, pilhas, filas e 
árvores é comum se encontrar referência à notação polonesa reversa (notação posfixa). Nesse 
sentido, a expressão X*(Y+W)/(X-Y) é representada nessa notação, como: 
 
 
XYW+*XY/- 
 
 
XYW*+XY/- 
 
XYW+*XY-/ 
 
 
XYW*+XY-/ 
 
 
XYW+*/XY- 
 
Explicação: 
Nessa notação.: 
1. Temos o primeiro operando: X 
2. O segundo: Y+W -> YW+ 
3. Posfixando o operador multiplicação: XYW+* 
4. Segundo operando da divisão: X-Y -> XY- 
5. Posfixando o operador divisão: XY/ 
5. juntando os passos anteriores temos: XYW+* XY-/ 
 
 
https://simulado.estacio.br/bdq_simulados_exercicio_ensineme.asp

Mais conteúdos dessa disciplina