A maior rede de estudos do Brasil

Grátis
3 pág.
APOL 05 compiladores

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

Questão 1/5 - 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 a nálise, entre outras coisas, verifica o tipo d e
cada declaração, operação, oper ando e variável em busca de inconsistências. Co m isso
em mente marque a alternativa incorreta entr e as opções a seguir:
Nota: 20.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 c onversõ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 2/5 - Compiladores
Se fossemos reduzir todo o processo de a nálise semântica e suas funções principais
poderíamos dizer qu e se trata da análise de tipos e de es copo. 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 er ro. Segundo
verificar as declarações, variáveis e operações com r elação ao esco po. Ainda com
relação a verificação de escopo e a lingua gem C, qual da s 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!

Questão 3/5 - Compiladores
Antes da geração do código executável, o pr ograma que será executado em uma
determinada arqu itetura, o compilador realiza uma otimização de código específica para
a arquitetura visada. Neste mom ento, a otimização específica, ou dependente da
máquina, o código oriundo do mód ulo de geração de código é, finalme nte, adequado a
máquina onde será executado. Considerando est a última fase, qual das afirmações a
seguir está errada.
Nota: 0.0
A
É na fase de geração de código executável, logo após a otimização que o código é encapsulado no
formato exigido pelo sistema operacional.
B
A otimização específica para uma arquitetura permite que o código executável utilize da melhor
forma possível todos os recursos da máquina.
C
Ainda que o código seja otimizado várias vezes e de formas diferentes, não é possí vel afirmar que o
programa resultante é perfeito.
D
O código executável, gerado na última fase da compilação contém a tabela de símbolos criada
durante todo o processo de compilação.
E
No processo de compilação existe pelo menos uma fase de eliminação de código morto.
Questão 4/5 - Compiladores
O processo de verificação de tipos tor na- se mais importante quando consideram os que,
em muitas linguagens de program ação, existem tipos complexos e tipos com postos. No
caso de tipos compost os como um arr ay ou uma struct, caberá ao analisador semântico
a análise dos tipos agregad os. Há ainda de se considerar a possibilidade de cr iação de
novos tipos, compostos ou com plexos, de acordo com a necessidade do progr amador.
Assim, caberá ao analisad or semântico, analisar, por exemplo, um tipo struct criado para
atender as necessidades específicas de um programa da me sma form a que ele avalia
um tipo inteiro ou rea l. Com relação a verificação de tipos, qual das afirmativas a seguir é
incorreta?
Nota: 20.0
A
A checagem estática de tipos é feita em tempo de compilação, como é o caso da linguagem C,
quando compilada;
B
A checagem de tipos dinâmica é feita em tempo de execução, como é o caso da linguagem PHP,
quando interpretada;
C
Linguagens de programação podem exigir a definição de tipo para cada variável ou estrutura de
dados composta ou, podem determinar estes tipos em tempo de execução, d ependendo de escolhas
realizadas na definição da linguagem;

D
A definição de tipos complexos, como listas e pilhas, independe da linguagem de programação e,
como tal, estes tipos podem ser verificados por qualquer ana lisador semântico;
Você acertou!
E
Ainda que tipos complexos e compostos tornem o processo de análise semântica mais complexo e
demorado, as funcionalidades que são agregadas as linguagens de programação por estes
constructors torna sua utilização indispensável.
Questão 5/5 - Compiladores
No módulo de análise sintática, utilizam os a defi nição de uma gr amática livre de
contexto, como base para o pr ocesso de análise. Notadamente por que, neste caso ,
estamos interessad os com a forma das declarações e não co m o seu significado. No
caso da análise semântica isto nã o é verdade já que um conjunt o significativo de err os
podem ser detectados no analisador semântico se ele for capaz de entender o sen tido
das declarações e oper açõ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 n a análise
semântica.