Buscar

Apol 5 Compiladores nota 100

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 3 páginas

Prévia do material em texto

Apol 5 Compiladores NOTA 100
Questão 1/5 - Compiladores
O processo de compilação é complexo. Para seu entendimento dividimos este processo em módulos de acordo com suas funcionalidades principais. Desta forma temos o analisador léxico, o analisador sintático, o analisador semântico entre outros dependendo apenas da didática utilizada para explicar cada um destes módulos e suas funcionalidades. Do ponto de vista da manutenção dos dados necessários ao processo de compilação, no entanto, há um módulo que permeia todos os outros, a tabela de símbolos. É nesta estrutura de dados que estão armazenados os tokens, a árvore sintática e a árvore semântica. Considerando as afirmativas a seguir marque a que está correta.
Nota: 20.0
	
	A
	A árvore semântica é a árvore sintática que foi identificada (etiquetada) pelo analisador semântico, contendo correções de tipos, indicações de erro;
Você acertou!
	
	B
	A criação da árvore semântica começa antes do processo de criação de tokens;
	
	C
	Chamamos de árvore semântica ao conjunto de linhas que compõe todas as declarações do código na forma em que foram escritas;
	
	D
	A árvore semântica será descartada ao término do processo de análise semântica e não afetará a geração de código;
	
	E
	Eventuais erros detectados pelo analisador semântico provocam a poda da árvore sintática retirando desta as declarações onde os erros foram encontrados facilitando a geração do código executável;
Questão 2/5 - 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: 20.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 3/5 - Compiladores
Os erros que devem ser verificados pelo analisador semântico, notadamente os que são relacionados com o escopo das variáveis devem incluir a verificação de argumentos e tipos de funções. Os tipos podem ser verificados pela análise de retorno das funções, no caso da linguagem C por exemplo. Neste caso, tudo que é necessário é garantir que a declaração da função coincide com o que ela retorna. Já no caso dos argumentos de uma função, este processo é um pouco mais complicado por que requer, além da verificação do protótipo da função, ou assinatura, a verificação de todas a chamadas a essa função. Neste caso, considerando as afirmativas a seguir, marque a alternativa errada.
Nota: 20.0
	
	A
	Uma das deficiências da linguagem C está na definição do tipo array que não inclui uma regra de verificação de limites, passando para o programador a responsabilidade sobre a verificação destes limites mesmo quando estes arrays são argumentos de uma função;
	
	B
	Métodos de classes, em linguagens orientadas a objetos não precisam que o analisador semântico observe a consistência dos seus argumentos. A exceção a esta regra é o constructor;
Você acertou!
	
	C
	A verificação de argumentos de funções, em todas as chamadas, deve incluir, obrigatoriamente, a verificação dos tipos destes argumentos;
	
	D
	No caso dos argumentos de funções, a verificação de tipos destes argumentos pelo analisador semântico pode produzir uma conversão automática de tipos ou um erro;
	
	E
	Além dos tipos, relativos aos argumentos, o analisador semântico deve se preocupar também com a ordem destes argumentos.
Questão 4/5 - Compiladores
O 3opCode pode ser escrito de uma forma mais adequada a nossa álgebra para permitir a leitura e otimização manual do código. Ainda que o processo de otimização manual esteja fora de uso. Em alguns casos onde uma pequena variação na eficiência do código tenha grande impacto financeiro este tipo de otimização pode ser necessário. Neste caso, recorremos aos blocos básicos e ao diagrama de fluxo como ferramentas para otimização de código. Considerando esta fase do processo de compilação qual das afirmativas a seguir contém otimizações que são feitas utilizando-se os blocos básicos?
Nota: 20.0
	
	A
	Adequação dos tipos e remoção de código morto.
	
	B
	Remoção de redundâncias e código morto.
Você acertou!
	
	C
	Remoção de redundância e correção de estruturas sintáticas.
	
	D
	Adequação dos tipos e correção de escopo.
	
	E
	Correção de escopo e remoção de redundâncias.
Questão 5/5 - Compiladores
Se fossemos reduzir todo o processo de análise semântica e suas funções principais poderíamos dizer que se trata da análise de tipos e de escopo. Primeiro, e mais importante, garantir que todas as declarações, operações e variáveis tenham tipos coerentes e, quando não, proceder a conversão automática ou emitir um erro. Segundo verificar as declarações, variáveis e operações com relação ao escopo. Ainda com relação a verificação de escopo e a linguagem C, qual das opções a seguir é falsa.
Nota: 20.0
	
	A
	Verificar se uma variável foi declarada em duplicidade faz parte das funções do analisador semântico;
	
	B
	Verificar se uma variável foi inicializada antes do uso é parte integrante da verificação de escopo realizada pelo analisador semântico;
	
	C
	Verificar se uma determinada variável foi declarada, mas nunca foi usada está entre as funcionalidades de um analisador semântico;
	
	D
	Verificar se um array, uni ou multidimensional, teve seus limites declarados antes de ser utilizado é parte integrante das funções do analisador semântico;
	
	E
	Verificar se uma função foi declarada antes do seu uso não faz parte das funções do analisador semântico e deve ser verificado pelo analisador sintático durante a formação da árvore sintática.
Você acertou!

Outros materiais