Prévia do material em texto
Teste de
Conhecimento
avalie sua aprendizagem
As árvores de sintaxe são a forma mais comum de representação intermediária gráfica. Dentre estas árvores temos as
de Derivação, Sintática e Derivação Anotada.
Com relação a estas árvores avalie as afirmativas abaixo:
I. Decorar uma árvore é o ato de, durante a fase de parser, realizar a associação dos símbolos aos seus atributos na
árvore de derivação.
II. A Árvore Sintática é obtida eliminando-se os nós referentes aos símbolos não terminais na árvore de derivação.
III. A árvore de Derivação possui em suas folhas apenas símbolos não terminais.
Podemos afirmar que está correto o que se afirma apenas em:
COMPILADORES
Lupa Calc.
Matr.:
Disc.: COMPILADORES EX
Prezado (a) Aluno(a),
Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua
avaliação. O mesmo será composto de questões de múltipla escolha.
Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se
familiarizar com este modelo de questões que será usado na sua AV e AVS.
ANÁLISE SEMÂNTICA
1.
II e III
III
II
I e II
I e III
Explicação:
Resposta correta: I e II.
A ideia básica é eliminar todos os nós com símbolos não terminais, mantendo apenas os nós com símbolos
terminais.
Na árvore de Derivação, cada nó é rotulado por um símbolo da gramática, sendo que os símbolos terminais
aparecem nas folhas e os não terminais, nas raízes das subárvores.
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
Verificação de tipos é uma atividade extremamente importante na análise semântica já que determinados erros
somente são percebidos nesta atividade, pois passam despercebidos nas Análises Léxicas e Sintáticas.
Considere o seguinte trecho de programa :
inteiro a,b,c;
{
....
c:= a + b;
....
}
Quanto a expressão c:= a + b; podemos afirmar que:
O seu tipo será inteiro
porque
todos os operandos são do tipo inteiro
Com base nas afirmativas podemos concluir que:
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:
Considere os seguintes passos da compilação:
I. Otimização
2.
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda não justifica a primeira
As duas são corretas e a segunda justifica a primeira
A primeira é falsa e a segunda correta
As duas afirmativas são falsas
Explicação:
Resposta correta: As duas são corretas e a segunda justifica a primeira
O COMPILADOR
3.
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.
II. Análise Léxica
III. Geração de Código
IV. Geração de Código Intermediário
V. Análise Semântica
VI. Análise Sintática
A ordem correta dos passos durante a compilação é:
Considere a seguinte especificação de tokens com sua descrição informal:
SE fosse submetida ao Analisador a seguinte expressão:
Soma = 0;
Soma = A + B;
O sétimo token reconhecido e seu lexema seriam respectivamente:
II, VI, V, IV, I e III
II, V, VI, IV, I e III
III, IV, VI, V, I e II
III, IV, V, VI, I e II
III, V, VI, IV, I e II
Explicação:
A resposta correta é: II, VI, V, IV, I e III.
ANÁLISE LÉXICA
5.
TermCom e ;
NumInt e 0
Id e A
OpArit e +
Id e Soma
Explicação:
A resposta correta é: Id e A
Durante o processo de Análise o scanner lê os caracteres um por um e tenta associa-
los ao padrão correspondente a algum token.
Neste processo ele eventualmente pode encontrar algum padrão que não
corresponda ao tokens. Nesse caso, ele deve:
Enade 2011
Considere a gramática a seguir, em que S, A e B são símbolos não terminais, 0 e 1 são terminais e Ɛ é a cadeia vazia.
A respeito dessa gramática, analise as afirmações a seguir.
I. Nas cadeias geradas por essa gramática, o último símbolo é 1.
II. O número de zeros consecutivos nas cadeias geradas pela gramática é, no máximo, dois.
III. O número de uns em cada cadeia gerada pela gramática é maior que o número de zeros.
IV. Nas cadeias geradas por essa gramática, todos os uns estão à esquerda de todos os zeros.
É correto apenas o que se afirma em
Ao realizarmos a análise sintática, podem ser detectados erros que não foram vistos durante a análise léxica.
Considerando a seguinte gramática
L: [A-Z]
6.
Tentar corrigir o erro reescrevendo a parte onde foi encontrado.
Continuar a análise após realizar a recuperação do erro e anotá-lo para
informação posterior.
Ignorar totalmente o erro e prosseguir a análise como se nada tivesse
acontecido.
Abortar a análise e reportar imediamente o erro.
Passar o erro para o analisador sintático para que este o trate.
Explicação:
A resposta correta é: Continuar a análise após realizar a recuperação do erro e
anotá-lo para informação posterior.
ANÁLISE SINTÁTICA
7.
II
III e IV
I e III
II e IV
I
Explicação:
Resposta correta: II
8.
D: [0-9]
Op:["+""-"]
At:["="]
Id:{L} ({L}|{D})*
Int:{D}+
Oper:{Op}
Atrib:{At}
Fc : ;
::= Id Atrib ;
::= | Id | Int;
::= Oper;
Qual das opções abaixo possui apenas erro sintático.
Um programa pode ter parte de sua funcionalidade implementada por um procedimento. Procedimentos são
normalmente compilados a parte e depois ligados ao código principal. Quando um procedimento é chamado é criado
para ele um Registro de Ativação que possui informações de contexto, suas variáveis locais, parâmetros etc.
Com base nisso se um procedimento G chama um procedimento D que chama um procedimento E podemos afirmar que
O registro de ativação de E estará no topo da pilha
Porque
Os registros de ativação dos diversos procedimento são empilhados na ordem inversa do retorno
Com base nas afirmativas acima podemos concluir que:
Para determinar qual código é mais otimizado podemos utilizar uma métrica que calcule o custo de cada opção e
determinar qual é o mais otimizado, ou seja qual tem o menor custo.
Considere um processador com o seguinte conjunto de instruções:
A := 7;
10 * 5;
A = b + C;
A = C
d - 10
Explicação:
Resposta correta: A := 7;
GERAÇÃO DE CÓDIGO
9.
As duas afirmativas são falsas
A primeira é falsa e a segunda correta
As duas são corretas e a segunda justifica a primeira
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda não justifica a primeira
Explicação:
Resposta correta: A primeira é verdadeira e a segunda falsa
10.
Sabendo que a métrica utilizada gera um custo de 1 para instruções que não acessam a memória RAM e um custo de 2
para as que não acessam analise os trechos de código abaixo
Como base na análise podemos afirmar que o código 2 é melhor que o código 1
Porque
Seu custo é 12 enquanto o do código 1 é 12
Com base nas afirmativas acima podemos concluir que:
A primeira é verdadeira e a segunda falsa
As duas afirmativas são falsas
As duas são corretas e a segunda justifica a primeira
A primeira é falsa e a segunda correta
As duas são corretas e a segunda não justifica a primeira
Explicação:
Respsota correta: A primeira é verdadeira e a segunda falsa
Não Respondida Não Gravada Gravada