Baixe o app para aproveitar ainda mais
Prévia do material em texto
INFORMAÇÕES DA PROVA Ensino: 03 - Ensino Superior Disciplina: EEL101 - LINGUAGENS E COMPILADORES Data: 07/12/2022 Descrição: EEL101 - LINGUAGENS E COMPILADORES [4º BIMESTRE] Tipo Resposta Gabarito Pontos Observações Objetiva B 1,000 (1,000) A varredura, também conhecida como análise léxica, consiste na etapa em que um compilador realiza a leitura de um programa-fonte, com um arquivo de caracteres, e o classifica em marcas. Tais marcas podem ser definidas como palavras em uma linguagem natural, ou seja, é uma sequência de caracteres que determinam uma unidade de informação no programa-fonte. Dentre os diversos exemplos, podemos citar: cadeias definidas pelo usuário, cadeias fixas de caracteres e símbolos aritméticos. Assinale a alternativa que apresenta essas marcas, respectivamente. A) Palavras-chave, identificadores e compiladores. CORRETA B) Identificadores, palavras-chave e símbolos especiais. C) Identificadores, compiladores e interpretadores. D) Símbolos especiais, expressões regulares e compiladores. E) Símbolos especiais, interpretadores e expressões regulares. Semana: Semana 1 / Nível de Dificuldade: Fácil Material Base: videoaula 1 - “Conceitos de Linguagens de Programação e Análise Léxica” Páginas: slides 1 ao 38 Objetivo de Aprendizado: RECONHECER OS CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO E ANÁLISE LÉXICA JUSTIFICATIVA DA RESPOSTA CORRETA Os principais exemplos de marcas incluem: identificadores, que são cadeias de caracteres definidas pelo usuário, usualmente compostas por letras e números, começando por uma letra; palavras-chaves, como if e while, que são cadeias fixas de caracteres; símbolos especiais, como os símbolos aritméticos + e *; e alguns símbolos com mais de um caractere, como >= e <>. Em cada caso, uma marca representa um determinado padrão de caracteres reconhecido pela varredura à medida que esses caracteres são fornecidos. Compiladores, interpretadores e expressões regulares não podem ser definidos como marcas, pois apresentam características específicas. ipo Resposta Gabarito Pontos Observações Objetiva B 1,000 (1,000) Marque a alternativa que identifica corretamente a transformação representada abaixo e descreva sua utilidade e objetivo. A → αβ A → αγ → A → αC C → βιγ A) Remoção do não determinismo para adaptação gramatical com o objetivo de uso da análise sintática bottom-up. CORRETA B) Remoção do não determinismo para adaptação gramatical com o objetivo de uso da análise sintática top-down. C) Remoção da recursão à esquerda para adaptação gramatical com o objetivo de uso da análise sintática top-down. D) Remoção da recursão à esquerda para adaptação gramatical com o objetivo de uso da análise sintática bottom-up. E) Remoção da recursão à direita para adaptação gramatical com o objetivo de uso da análise sintática top-down. Semana: Semana 2 / Nível de Dificuldade: Médio Material Base: Videoaula 2, slide 22 Objetivo de Aprendizado: IDENTIFICAR E DESCREVER A REMOÇÃO DO NÃO-DETERMINISMO, UM TIPO DE ADAPTAÇÃO GRAMATICAL NECESSÁRIO PARA A ANÁLISE SINTÁTICA DESCENDENTE. JUSTIFICATIVA DA RESPOSTA CORRETA Vale relembrar que, nos autômatos não determinísticos, pode-se ter várias transições entre estados diferentes com o mesmo caractere. Isso significa que as transições podem levar a um conjunto de estados. Essa característica não viabiliza o uso da análise sintática descendente (top-down) e, portanto, deve ser eliminada. A transformação da figura mostra que, através de uma substituição simples, pode-se remover a redundância causada pelo “α ”. Tipo Resposta Gabarito Pontos Observações Objetiva C 1,000 (1,000) Os analisadores redutores eficientes, que leem a sentença em uma condição específica de análise da esquerda para a direita e são responsáveis pela produção de uma derivação mais à direita ao reverso, considerando-se “k” símbolos em cada leitura, têm a capacidade de reconhecer, praticamente, todas as estruturas sintáticas definidas por gramáticas livres de contexto. Conforme a definição, correlacione adequadamente os analisadores LR e as características às quais se referem. 1 – LR Canônico. 2 – Simple LR. 3 – Look Ahead LR. I – São fáceis de implementar, no entanto são aplicáveis a uma classe restrita de gramáticas. II – São mais poderosos, podendo ser aplicados a um grande número de linguagens livres de contexto. III – Complexidade de nível intermediário e implementação eficiente que funciona para a maioria das linguagens de programação. Assinale a alternativa que correlaciona adequadamente os dois grupos de informação: A) 1-III; 2-II; 3-I. B) 1-III; 2-I; 3-II. CORRETA C) 1-II; 2-I; 3-III. D) 1-I; 2-III; 3-II. E) 1-I; 2-II; 3-III. Semana: Semana 3 / Nível de Dificuldade: Fácil Material Base: videoaula 3 - Análise sintática ascendente Páginas: slides 1 ao 39 Objetivo de Aprendizado: RECONHECER OS CONCEITOS DE ANÁLISES SINTÁTICAS ASCENDENTES JUSTIFICATIVA DA RESPOSTA CORRETA A sentença I se enquadra no conceito 2, pois o analisador LR Canônico é mais poderoso, podendo ser aplicado a um grande número de linguagens livres de contexto. A sentença II se enquadra no conceito 1, pois o analisador Simples LR apresenta uma caracterização baseada em sua potência, tendo como aplicação específica o elevado número de linguagens consideradas como livres de contexto. A sentença III se enquadra no conceito 3, visto que o analisador Look Ahead LR tem um nível de complexidade considerado intermediário. Além disso, sua implementação total e eficiente tem uma aplicação específica para a maioria das linguagens de programação. Tipo Resposta Gabarito Pontos Observações Objetiva D 1,000 (1,000) A gramática de atributos representa uma gramática totalmente livre de contextos, sendo que há um acréscimo de elementos que têm a função de descrever, de maneira mais adequada, a sintaxe dependente de contexto. Neste sentido, podemos considerar e avaliar que: I. definições dirigidas por sintaxe representam gramáticas livres de contexto por meio da inclusão de atributos para cada símbolo; II. esquema de tradução indica a ordem na qual as regras que especificam ações sintáticas devem ser executadas; III. o uso dessas definições pode ser feito dentro de uma ferramenta de geradores de analisadores; IV. a gramática de atributos pode ser classificada como uma gramática dependente de contextos. Está correto o que se afirma em: A) I, II, III e IV. B) II, apenas. C) I e II, apenas. CORRETA D) I, II e III, apenas. E) I, III e IV, apenas. Semana: Semana 4 / Nível de Dificuldade: Médio Material Base: videoaula 4 - Tradução dirigida por sintaxe Páginas: slides 1 ao 27 Objetivo de Aprendizado: COMPREENDER A TRADUÇÃO DIRIGIDA POR SINTAXE JUSTIFICATIVA DA RESPOSTA CORRETA A afirmativa I está correta, pois as definições atreladas à sintaxe definem as gramáticas livres de contexto, por meio da inclusão de atributos para cada símbolo. A afirmativa II está correta, porque o esquema de tradução determina a ordem na qual as regras que especificam ações sintáticas devem ser executadas. A afirmativa III está correta, uma vez que a utilização das definições pode ser realizada por meio de uma ferramenta de geradores de analisadores. A afirmativa IV está incorreta, pois a gramática de atributos pode ser classificada como uma gramática livre de contextos. Tipo Resposta Gabarito Pontos Observações Objetiva B 1,000 (1,000) O código de três endereços é uma forma utilizada para gerar representações intermediárias, em que há um alvo identificado como uma variável à esquerda da operação e uma operação identificada com a utilização de dois elementos à direita da operação, chamados de operandos. Nesse sentido, podemos considerar e avaliar que: I. A, B e C são considerados nomes constantes ou objetos temporários criados pelo compilador; II. para códigos de três endereços, há a opção de utilização de apenas dois objetos, ou então de uma representação direta de um objeto; III. O “jump” existente no código de três endereços pode ser opcional; IV. dentro docódigo de três endereços consideramos que a letra N representa o nome do procedimento. Está correto o que se afirma em: A) I, III e IV, apenas. CORRETA B) I, II e III, apenas. C) I e II, apenas. D) II, apenas. E) I, II, III e IV. Semana: Semana 5 / Nível de Dificuldade: Fácil Material Base: videoaula 5 - Código intermediário Páginas: slides 1 ao 20 Objetivo de Aprendizado: RECONHECER OS CÓDIGOS INTERMEDIÁRIOS JUSTIFICATIVA DA RESPOSTA CORRETA A alternativa I está correta, pois o compilador é responsável pela criação das constantes A, B e C, assim como dos objetos temporários. A alternativa II está correta, porque nos códigos de três endereços há a opção de utilização de apenas dois objetos, ou então de uma representação direta de um objeto. A alternativa III está correta, visto que o “jump” pertencente ao código de três endereços pode ser opcional. A alternativa IV está incorreta, pois dentro do código de três endereços consideramos que a letra N representa o número de parâmetros do procedimento. Tipo Resposta Gabarito Pontos Observações Objetiva B 1,000 (1,000) Em termos de alocação, também devemos considerar as alocações dinâmicas. Ao obtermos as alocações dinâmicas, observamos uma condição específica, na qual as variáveis locais encontram-se alocadas no registro de ativação, sendo que, se houver uma chamada recursiva, será necessário reconstruir o registro de ativação. Nesse sentido, podemos considerar e avaliar que: I. a recursividade pode ser aplicada em uma condição de menor necessidade de restrição. II. em uma condição geral, podemos concluir que um subprograma pode representar a condição de inúmeras ativações de forma simultânea. III. no exato momento de execução, por meio do gerenciamento de memória, há a necessidade da inclusão do código objeto de instruções. IV. podemos considerar as chamadas de subprogramas mais rápidas. Está correto o que se afirma em: A) I, III e IV, apenas. CORRETA B) I, II e III, apenas. C) I e II, apenas. D) II, apenas. E) I, II, III e IV. Semana: Semana 6 / Nível de Dificuldade: Fácil Material Base: videoaula 6 - Ambientes de execução Páginas: slides 1 ao 24 Objetivo de Aprendizado: RECONHECER OS AMBIENTES DE EXECUÇÃO JUSTIFICATIVA DA RESPOSTA CORRETA A afirmativa I está correta, pois a recursividade tem sua utilização atrelada a uma condição de menor necessidade de restrição. A afirmativa II está correta, porque é possível estabelecer que um subprograma representa uma condição de inúmeras ativações realizadas de forma simultânea. A afirmativa III está correta, visto que, no momento de execução, por meio do gerenciamento de memória, há a necessidade da inclusão do código objeto de instruções. A afirmativa IV está incorreta, uma vez que podemos considerar as chamadas de subprogramas mais lentas. Tipo Resposta Gabarito Pontos Observações Objetiva B 2,000 (2,000) Com relação ao código objeto, é possível afirmar que o código final pode ser diretamente ligado às bibliotecas e, de certa forma, apresentar um problema específico, pois dada a representação intermediária de baixo nível, como gerar o código objeto? Nesse sentido, podemos considerar e avaliar que: I. os códigos não otimizados representam as variáveis locais e apresentam parâmetros afetados a partir de posições relativas e distintas na pilha. II. os códigos otimizados efetivam uma partilha de posições relativas da pilha por uma ou mais variáveis. III. os códigos otimizados, especificamente, ocasionam uma utilização de registradores da CPU, para então proporcionar um armazenamento de variáveis. IV. os códigos não otimizados requerem acessos à pilha, onde apenas haja ciclos em detrimento aos acessos a registros internos. Está correto o que se afirma em: A) II, apenas. CORRETA B) I, II e III, apenas. C) I e II, apenas. D) I, II, III e IV. E) I, III e IV, apenas. Semana: Semana 7 / Nível de Dificuldade: Difícil Material Base: videoaula 7 - Geração de código, noções de otimização Páginas: slides 1 ao 23 Objetivo de Aprendizado: ANALISAR OS CONCEITOS PARA GERAÇÃO DE CÓDIGO E AS NOÇÕES DE OTIMIZAÇÃO JUSTIFICATIVA DA RESPOSTA CORRETA A afirmativa I está correta, pois nos códigos não otimizados há a representação das variáveis locais e a existência de parâmetros afetados a partir de posições relativas e distintas na pilha. A afirmativa II está correta, porque os códigos otimizados possibilitam uma divisão de posições relativas da pilha, por uma ou mais variáveis. A resposta III está correta, uma vez que os códigos otimizados permitem a utilização de registradores da CPU, com o objetivo de possibilitar um armazenamento de variáveis. A resposta IV está incorreta, visto que os códigos não otimizados requerem acessos à pilha, onde haja ciclos e acessos aos registros internos. Tipo Resposta Gabarito Pontos Observações Objetiva D 2,000 (2,000) A análise sintática LL(1) utiliza uma pilha explícita em vez de ativações recursivas. A representação dessa pilha de forma padrão é útil para facilitar a visualização das ações do analisador sintático LL(1). O seu funcionamento pode ser exemplificado da forma a seguir. Sendo X o símbolo do topo da pilha e PS o atual símbolo de entrada, as ações podem ser: de forma conceitual, ao considerarmos que a variável X seja assim em um terminal = PS _____ $, então o analisador __________ sua atividade e acaba ocasionando uma comunicação na condição de fim da análise sintática, sendo esta realizada com um total. Por outro lado, se considerarmos que a variável X seja um terminal específico = PS _____ $, então o consequente analisador tende a eliminar X do topo da pilha e a avançar para o próximo símbolo na condição de entrada. Se X é um terminal ≠ PS, o analisador _______________ de sintaxe. Preencha as lacunas escolhendo a alternativa correta: A) ≠, inicia, =, acusa um erro B) ≠, encerra, =, acusa um erro C) =, inicia, =, exibe o acerto CORRETA D) =, encerra, ≠, acusa um erro E) =, inicia, ≠, exibe o acerto Semana: Semana 2 / Nível de Dificuldade: Difícil Material Base: videoaula 2 - Conceitos de Análise Sintática e Análise Sintática Descendente Páginas: slides 1 ao 39 Objetivo de Aprendizado: ANALISAR OS CONCEITOS DE ANÁLISES SINTÁTICAS E SEU PRIMEIRO TIPO DE ANÁLISE SINTÁTICA DESCENDENTE JUSTIFICATIVA DA RESPOSTA CORRETA A resposta está correta quando consideramos que na primeira condição de análise o símbolo “=” seja representativo na equação, e a equação seja terminada com “encerra”. Da mesma forma, a resposta está correta quando consideramos que na segunda condição de análise o símbolo “≠” seja representativo na equação, e a equação seja terminada com “causa um erro”. comp0 comp1 comp2 comp3 comp4 comp5 comp6 comp7 comp8
Compartilhar