Baixe o app para aproveitar ainda mais
Prévia do material em texto
Atividade 3 Iniciado: 10 abr em 18:38 Instruções do teste Pergunta 1 0,2 pts Importante: Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que você clique em "FAZER O QUESTIONÁRIO", no final da página. Leia o texto a seguir: Um parser LR é capaz de reconhecer uma determinada linguagem especificada por uma gramática livre de contexto. O termo é usado para se referir a um programa de driver que pode ser chamado com uma determinada tabela e que produz uma ampla gama de diferentes analisadores LR. Esses programas devem ser chamados de geradores de analisadores. Um gerador de analisador é um aplicativo que gera um analisador, o resultado é uma implementação do analisador em alguma linguagem. Considerando isso, avalie as afirmações a seguir: I. O parser, transforma uma simples lista de tokens obtida após a análise léxica em uma representação em árvore e também verifica a sintaxe da linguagem. O processo de resolução desse problema é chamado de "parsing". II. Um analisador LR é um programa iterativo que pode ser implementado com eficiência por um analisador descendente, que é um conjunto de funções mutuamente iterativas, semelhante a um analisador ascendente. III. O parser para gramática G determina se a string de entrada ‘w', é uma sentença de G ou não. Se `w' é uma sentença de G, então o analisador sintático produz a árvore de análise para `w'. Caso contrário, um erro é produzido. IV. Por convenção, os analisadores LR são introduzidos e implementados facilmente por máquinas de pilha baseadas em algoritmos, nas quais a pilha de chamadas do programa iterativo subjacente é explicitamente manipulada. É correto apenas o que se afirma em: I e II, apenas. A+ A A- NOTA: 1.0 de 1.0 Pergunta 2 0,2 pts I, II e IV, apenas. II, III e IV, apenas. II e III, apenas. I e III, apenas. Leia o texto a seguir: Erros lexicais e erros sintáticos são classificados como erros locais, e erros semânticos podem ser globais. Erros lexicais e sintáticos são locais, ou seja, você não vai para trás e para frente na pilha de análise ou no token sequência para corrigir o erro, o erro é corrigido onde ele acontece. Os analisadores LL e LR têm uma propriedade de prefixo válida, ou seja, descobrem o erro quando a substring que está sendo analisada junto com o próximo símbolo não formam um prefixo da língua. Considerando o contexto apresentado, avalie as seguintes asserções e a relação proposta entre elas: I. Erros de sintaxe são erros que surgem durante uma análise de sintaxe. Os métodos de análise, como LL e LR, podem detectar os erros imediatamente após sua ocorrência. PORQUE II. A tolerância para erros de síntese e a gramática de atributos das linguagens de programação destinadas a limitá-los, como a compatibilidade de recebimento de tipos de dados, varia muito. A respeito dessas asserções, assinale a opção correta: As asserções I e II são proposições falsas. A+ A A- Pergunta 3 0,2 pts A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I. As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I. A asserção I é uma proposição verdadeira, e a II é uma proposição falsa. Leia o texto a seguir: Um compilador funciona por análise de síntese, no lugar de substituir cada construção da língua de origem por uma sequência equivalente de construções da língua de origem. Ele começa analisando o texto de origem para construir uma representação intermediária que, por sua vez, traduz para a linguagem de destino. Considerando o texto, avalie as afirmações abaixo: I. Ao detectar o erro, o parser realiza as correções em todo o código, modificando todos os tokens para permitir uma análise posterior. II. Os tokens de sincronização são desbalizadores como o ponto e vírgula ou o end, cujo papel no texto de origem é indefinido. III. Lexemas são uma sequência de caracteres em um token. Algumas regras definem para que cada lexema seja identificado como um token válido. É correto o que se afirma em: I, apenas. III, apenas. I e III, apenas. II e III, apenas. A+ A A- Pergunta 4 0,2 pts I, II e III. Leia o texto a seguir: O principal objetivo de um analisador é determinar se os dados de entrada podem ser derivados do símbolo inicial da gramática. Os dados de entrada podem ser derivados da seguinte forma: Análise de cima para baixo ou Análise de baixo para cima. As informações do código-fonte devem, portanto, ser processadas de acordo com um esquema específico para o compilador. O analisador cuida disso. De cima para baixo, os analisadores começam no nó raiz (caractere inicial) e comparam a string de entrada com as regras de produção para substituí-las (se forem correspondentes). Para entender isso, pegue o seguinte exemplo de CFG: S → rXd | rZd X → oa | ea Z → ai Para uma string de entrada: read, o analisador top-down se comportaria assim: Ele começará com um S nas regras de produção e corresponderá sua saída à letra mais à esquerda da entrada, ou seja, 'R'. A própria produção S (S → rXd) coincide com isso. Assim, o analisador descendente salta para a próxima letra de entrada (ou seja, 'e'). O parser tenta expandir o 'X' não- terminal e verifica sua produção à esquerda (X → oa). Ele não corresponde ao próximo caractere de entrada. Portanto, o analisador downstream retorna para obter a próxima regra de produção X, (X → ea). Considerando as reflexões apresentadas, assinale a opção correta. O analisador descendente deve saltar para a próxima letra de entrada 'oa'. O analisador downstream deve retornar para obter a regra X, (X → oa). O analisador inicia com um S e sua saída à letra mais à esquerda da entrada, 'R'. O método de análise utilizado é considerado ascendente por natureza. A+ A A- Pergunta 5 0,2 pts Salvo em 15:27 O código tenta expandir o 'X' não-terminal e deve verificar sua produção à esquerda (X → oa). Leia o texto a seguir: Durante a análise sintática, os tokens são retirados do léxico. A análise sintática expõe a estrutura do programa na forma de uma árvore, denominada árvore sintática. Cada nó corresponde a um operador e seus filhos aos operandos sobre os quais atua. Considerando as informações apresentadas, qual o papel da análise léxica no projeto de compiladores? Ter como base rotinas personalizadas para especificar as dependências hierárquicas dos elementos sintáticos. Executar a primeira fase do Processamento de Linguagem Natural (PNL), conhecida como análise de sintaxe. Unificar todas as sintaxes em uma série de tokens, removendo quaisquer espaços ou comentários no código-fonte. Encontrar e destacar as principais construções sintáticas da linguagem na sequência de tokens. Por ser a segunda fase de um compilador, ela leva o código-fonte modificado, que é escrito como sentença. Enviar teste A+ A A-
Compartilhar