Prévia do material em texto
Unidade I Revisar envio do teste: Questionário Unidade I (2017/2)H Revisar envio do teste: Questionário Unidade I (2017/2) Usuário ALEX SANDER SABINO ROCHA Curso COMP COMP COMPILADORES E COMPUTABILIDADE Teste Questionário Unidade I (2017/2) Iniciado 30/10/17 20:05 Enviado 30/10/17 20:18 Status Completada Resultado da tentativa 5 em 5 pontos Tempo decorrido 13 minutos Instruções ATENÇÃO: esta avaliação segue as seguintes configurações: - possui número de tentativas limitadas a 3 (três) - valida a sua frequência e nota na disciplina em questão; - não apresenta as justificativas corretas, pois trata-se de um avaliativo; - não soma pontos de “tentativa em andamento” (tentativas iniciadas e não concluídas/enviadas) – porém, uma vez acessada, é considerada como uma de suas 3 (três ) tentativas permitidas e precisa ser editada e enviada para ser devidamente considerada; - possui sua pontuação submetida a um cálculo final conforme exposto abaixo – o cálculo final será executado e apresentado em sua “Secretaria Virtual”: 1° envio – será considerada a nota referente aos acertos dos exercícios enviados; 2° envio – será considerada a média aritmética das notas dos 1º e 2º envios; 3° envio – será considerada a média aritmética das notas dos 1º, 2º e 3º envios; - possui um período de envio (previsto em Calendário Acadêmico) e não será possível acesso para validar sua nota e frequência após esse prazo. - a NÃO realização prevê nota 0 (zero). Resultados exibidos Respostas enviadas, Perguntas respondidas incorretamente Pergunta 1 Para o desenvolvimento de um compilador é possível que se adote um dos diferentes modelos de construção. Um destes é o que chamamos de modelo de múltiplas passagens, em que as atividades relacionadas a tradução e a escrita do código alvo são realizadas em etapas encadeadas. Cada fase realiza sua tarefa percorrendo todo o código fonte e, após uma conclusão bem sucedida, inicia-se a etapa subsequente tendo como entrada o resultado da fase anterior. A cerca deste modelo analise as seguintes considerações: - Trata-se de um modelo bastante didático, pois a modularização do processo permite o desenvolvimento gradativo do compilador enquanto se estuda com mais detalhes as atividades pertinentes a cada etapa. - Por outro lado, uma desvantagem inerente ao modelo é que por exemplo um erro semântico localizado nas primeiras linhas do código fonte somente seria detectado após a conclusão das análises léxica e sintática de todas as linhas do programa. Assinale a alternativa que representa o melhor juízo cabível sobre o que se afirmou. Resposta Selecionada: a. Ambas as assertivas são verdadeiras, sendo a segunda a justificativa da primeira. Pergunta 2 Unip Interativa 0,5 em 0,5 pontos 0,5 em 0,5 pontos ALEX ROCHA ←← OK OK Revisar envio do teste: Questionário Unidade I ... https://ava.ead.unip.br/webapps/assessment/re... 1 de 4 30-10-2017 20:18 Os métodos ligados a análise sintática se agrupam em ascendentes e descendentes, de acordo com a forma como derivam a estrutura sintática da sentença do programa. Assinale a alternativa incorreta a respeito dos analisadores sintáticos. Resposta Selecionada: d. Dentre a categoria de analisadores descendentes podemos citar os parses Descendentes Recursivos, de Cocke‐Younger‐Kasami e os analisadores do tipo LR(k). Pergunta 3 Resposta Selecionada: d. A aplicação da regra 8 deve ser feita antes da regra 7, segundo a interpretação que temos da tabela. Esse fato se comprova ao observarmos que o símbolo “(“ poderia ocorrer imediatamente após um “id” segundo o que determina as produções da gramática. Pergunta 4 Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os movimentos realizados por um reconhecedor ascendente para esta cadeia? G = ({L,S}, {“(“, ”)”, ”a”, ”,”}, L, P ) P: L → (S) S → I,S | I I → a | L Resposta Selecionada: a. (a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S), (a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,(a,a)) ⇒ (I,I,(I,a)) ⇒(I,I, (I,I)) ⇒ (I,I,(I,S)) ⇒ (I,I,(S)) ⇒ (I,I,L) ⇒ (I,I,I) ⇒ (I,I,S) ⇒ (I,S) ⇒ (S) ⇒ L. Pergunta 5 Assinale a alternativa que representa a principal tarefa realizada pela Análise léxica. Resposta Selecionada: c. Varrer o arquivo fonte, lendo-o caractere por caractere e agrupá-los em blocos de um ou mais elementos de acordo com o significado dentro da linguagem. Pergunta 6 Um analisador sintático LL(1) somente pode ser construído para uma classe restrita de gramáticas, que também recebem este mesmo nome. Uma de suas características é que suas produções não apresentem prefixos comuns para cadeias distintas derivadas a partir de um mesmo não-terminal. Ou seja, se duas produções que começam com o mesmo símbolo ou conjunto de símbolos (prefixo), por 0,5 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos Revisar envio do teste: Questionário Unidade I ... https://ava.ead.unip.br/webapps/assessment/re... 2 de 4 30-10-2017 20:18 exemplo, como nas regras A→αβ e A→αδ e sendo First(α) ≠ ∅, implicará numa interseção entre os conjuntos First(αβ) e First(αδ) e o analisador não será capaz de decidir qual regra escolher utilizando um único símbolo da entrada. Usualmente o problema pode ser resolvido substituindo as produções da gramática que causam o problema por outras que acomodem essa restrição, mantendo a equivalência entre elas. Supondo a produção S → if E then S else S fi | if E then S fi | K e considerando ε como a sentença vazia, quais dentre as alternativas a seguir representa uma substituição válida para resolver o problema apresentado e obter uma gramática equivalente que seja LL(1)?. Resposta Selecionada: a. S → if E then S R fi | K R → else S | ε Pergunta 7 Um processo algorítmico tem o objetivo de instruir o executor quanto as ações que deve realizar e a sua sequência. Para que isso ocorra é necessário que as instruções sejam dadas num formato compreensível àquele que as realizará. A programação de computadores é feita descrevendo o algoritmo em instruções de uma linguagem de programação e que, quando ditas de alto nível, apresentam características mais próximas a estrutura das linguagens humanas do que a das máquinas. Analise as alternativas a seguir e assinale a que julgar incorreta. Resposta Selecionada: d. Os conhecimentos relacionados a construção de compiladores encerram-se estritamente nesta atividade, oferecendo pouco ou mesmo nenhuma possibilidade de aplicação em outras áreas que não seja a tradução para linguagem de máquina. Pergunta 8 Durante a varredura do código fonte pelo Scanner (Analisador Léxico) várias tarefas ditas secundárias são realizadas. Assinale a alternativa cuja tarefa não corresponde as atribuições esperadas para um analisador léxico. Resposta Selecionada: e. Detectar os marcadores de início e de fim de blocos para que os comandos possam ser agrupados em um único elemento e entregues para a fase de análise sintática com um comando único. Pergunta 9 Um analisador sintático descendente constrói a árvore de derivação do programa de cima para baixo, isto é, partindo da raiz (símbolo inicial da gramática) e seguindo em direção as folhas (símbolos do programa). Todos os métodos que adotam esta estratégia seguem esta abordagem, variando pontualmente a forma como resolvem o problema de selecionar a regra a ser aplicada em cada momento. Pode-se afirmar sobre o Analisador Descendente Recursivo: Resposta Selecionada: a. É um reconhecedor obtido através da transcrição das regras de produção da gramática na forma de um conjunto de sub-rotinas. Assim, cada sub-rotina é responsável por verificar os elementos relativos a uma produção em particular. O processo de reconhecimento se inicia com a chamada da sub-rotina equivalente a regra que deriva o símbolo inicial da gramática. A partir disto, chamadas subsequentes para outras sub-rotinas sãorealizadas sempre que um símbolo não terminal é encontrado na produção. Quando todos os elementos são consumidos, a chamada inicial retorna sinalizando que se trata de uma sentença é válida. Pergunta 10 No modelo de Análise e Síntese o processo é dividido em duas grandes etapas. Na primeira, são realizadas todas as tarefas pertinentes a análise e compreensão do código fonte, enquanto na segunda, as atividades de otimização e a geração do código propriamente dito. Cada uma destas grandes etapas podem ser decompostas em fases, de propósito específico e cujo resultado de seu processamento servirá como dado de entrada para a próxima fase. Analise as alternativas a seguir e assinale aquela 0,5 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos Revisar envio do teste: Questionário Unidade I ... https://ava.ead.unip.br/webapps/assessment/re... 3 de 4 30-10-2017 20:18 Segunda-feira, 30 de Outubro de 2017 20h18min32s BRST cuja atividade não corresponde a nenhuma das subfases deste modelo. Resposta Selecionada: e. A fase de linkedição, ou ligação, é responsável por criar o arquivo executável combinando todos os arquivos objetos em um único módulo de carga. Revisar envio do teste: Questionário Unidade I ... https://ava.ead.unip.br/webapps/assessment/re... 4 de 4 30-10-2017 20:18