A maior rede de estudos do Brasil

Grátis
6 pág.
Apol Objetiva - Compiladores

Pré-visualização | Página 1 de 2

Questão 1/10 - Compiladores
As gramáticas livres de contexto, utilizadas na definição de linguagens formais, para a criação de linguagens de programação definem, a partir de um conjunto de quatro elementos, todas as regras que determinam a linguagem. Essas regras podem ser expandidas pelo processo chamado de derivação. Sendo assim, marque a alternativa correta.
Nota: 10.0
	
	A
	A derivação consiste na substituição de um símbolo não terminal par uma regra de produção;
Você acertou!
	
	B
	A derivação consiste na substituição de um símbolo terminal por uma regra de produção;
	
	C
	A derivação consiste na substituição de um símbolo não terminal por um símbolo terminal;
	
	D
	A derivação consiste na substituição de uma regra de produção por um símbolo terminal;
	
	E
	A derivação consiste na substituição de uma regra de produção por um símbolo não terminal.
Questão 2/10 - Compiladores
A análise semântica tem o objetivo de verificar a validade das declarações e operações contidas em um código de alto nível. Esta análise, entre outras coisas, verifica o tipo de cada declaração, operação, operando e variável em busca de inconsistências. Com isso em mente marque a alternativa incorreta entre as opções a seguir:
Nota: 10.0
	
	A
	A análise semântica é o último grande bloco antes da geração do código intermediário;
	
	B
	A análise semântica indica o tipo das variáveis por meio de etiquetas colocadas na árvore sintática;
	
	C
	Se for necessário, caberá ao processo de análise semântica a marcação das conversões automáticas de tipos;
	
	D
	A determinação dos tipos depende do escopo da variável;
Você acertou!
A verificação de tipos independe do escopo das variáveis, declarações e operações.
	
	E
	Podemos chamar de árvore semântica a árvore sintática após o processo de análise semântica.
Questão 3/10 - Compiladores
O processo de compilação é fundamental para a eficiência dos programas que executamos todos os dias. Dado que compilar, é uma espécie de tradução, onde uma linguagem própria para uso humano é convertida em uma linguagem própria para uso de máquinas. 
I. Otimização de Código de Máquina;
II. Analisador Sintático;
III. Analisador Léxico;
IV. Analisador Semântico.
Escolha a alternativa que contém a ordem correta de um processo de compilação básico entre as possibilidades acima:
Nota: 10.0
	
	A
	I, II, III, IV;
	
	B
	III, II, IV, I;
Você acertou!
Letra B Observar, por favor o capítulo 1 do Livro texto da disciplina.
	
	C
	II, I, IV, III;
	
	D
	IV, III, II, I;
	
	E
	I, III, IV, II.
Questão 4/10 - Compiladores
No módulo de análise sintática, utilizamos a definição de uma gramática livre de contexto, como base para o processo de análise. Notadamente por que, neste caso, estamos interessados com a forma das declarações e não com o seu significado. No caso da análise semântica isto não é verdade já que um conjunto significativo de erros podem ser detectados no analisador semântico se ele for capaz de entender o sentido das declarações e operações. Entre as afirmações a seguir indique aquela que é verdadeira.
Nota: 10.0
	
	A
	Erros de compatibilidade de tipos não são importantes para o analisador semântico;
	
	B
	A verificação de variáveis e declarações em relação ao escopo de cada bloco de código é função do analisador sintático;
	
	C
	A duplicidade de declarações de variáveis faz parte das funções do analisador semântico;
Você acertou!
	
	D
	Sem o analisador semântico o compilador não seria capaz de detectar nenhum erro de digitação;
	
	E
	A tabela de símbolos, muito importante nas análises léxica e sintática não tem função na análise semântica.
Questão 5/10 - Compiladores
Uma das principais características de uma linguagem formal é a existência de uma estrutura rígida e precisamente especificada. As linguagens formais são utilizadas na programação de computadores há várias décadas principalmente por que sua estrutura rígida torna o processo de compilação possível. Ainda relacionado as linguagens formais qual das afirmativas abaixo é verdadeira?
Nota: 10.0
	
	A
	A língua portuguesa, graças a sua gramática estruturada é um exemplo de linguagem formal;
	
	B
	As linguagens formais não podem ser definidas com o uso de máquinas de estados finitos;
	
	C
	A linguagem de programação Java constitui um exemplo de linguagem natural usada em programação;
	
	D
	Uma das formas de definir uma linguagem formal reside no uso de expressões regulares;
Você acertou!
A resposta correta é a letra D, o teorema de Kleene declara que só podem ser classificadas como linguagens formais aquelas que podem ser definidas com o uso de máquinas de estados finitos e/ou expressões regulares.
	
	E
	O Teorema de Kleene, para a definição de linguagens naturais, torna mais eficiente o processo de interpretação em máquinas que rodem o Javascript.
Questão 6/10 - Compiladores
1. As linguagens de programação em geral pertencem a uma categoria de Linguagens baseadas em Gramáticas Livres de Contexto. Estas Gramáticas Livres de Contexto são a base para a construção de analisadores sintáticos. E são utilizadas para especificar as regras sintáticas de uma linguagem de programação. Talvez a parte mais importante deste processo seja a possibilidade de se representar este tipo de gramática por apenas quatro conjuntos de tal forma que uma determinada Gramática G qualquer, tal que:
G = (N, T, P, S)
Onde:
· N – Conjunto finito de símbolos não terminais.
· T – Conjunto finito de símbolos terminais.
· P – Conjunto de regras de produção.
· S – Símbolo inicial da gramática.
Considerando estas informações marque qual das afirmações a seguir é falsa.
Nota: 10.0
	
	A
	Símbolos terminais: Conjunto finito de símbolos básicos que formam as palavras da linguagem, são representadas pelo tokens reconhecidos pelo analisador léxico.
	
	B
	Símbolos não terminais: Conjunto finito de símbolos que representam os símbolos utilizados para controle da gramática e que não farão parte dos tokens.
	
	C
	Símbolo inicial: É a variável, um símbolo terminal, que representa o início da definição da gramática.
	
	D
	Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, indicam como símbolos terminais e não terminais podem ser combinados.
	
	E
	Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, mas não indicam nenhuma forma de combinação entre os símbolos terminais e não terminais.
Você acertou!
Questão 7/10 - Compiladores
Considerando a tecnologia utilizada no processo de compilação, quais das afirmações a seguir são corretas:
I. O processo de otimização de código de máquina é genérico e não leva em conta a arquitetura do dispositivo alvo do processo de compilação;
II. A principal diferença entre compiladores e interpretadores é a existência, no processo de interpretação, de um arquivo físico do programa em linguagem de máquina;
III.Os processos aplicados tanto na compilação quanto na interpretação são muito parecidos e, nos dois casos, terminamos sempre com código em linguagem de máquina sendo executado em uma CPU;
IV. Independente da tecnologia aplicada no processo de compilação o resultado final será sempre igual para uma mesma arquitetura
	
	A
	Apenas a afirmação III é verdadeira;
Letra a, apenas a afirmação III é verdadeira, de fato, tanto no processo de compilação quanto no processo de interpretação o objetivo é gerar um código, em linguagem de máquina que seja eficiente e de baixo custo operacional. De fato, com a tecnologia atual, a maior diferença está na existência de um arquivo executável, produto da compilação e que não está disponível em processos de interpretação.
	
	B
	As afirmações I e II são verdadeiras;
	
	C
	Nenhuma das afirmações é verdadeira;
	
	D
	Todas as afirmações são verdadeiras menos a afirmação IV;
	
	E
	As afirmações I e IV são verdadeiras.
Questão 8/10 - Compiladores
O analisador sintático é, para todos os efeitos, o segundo maior bloco funcional no processo de compilação ficando entre o analisador léxico e o analisador semântico.