Baixe o app para aproveitar ainda mais
Prévia do material em texto
ENSINEME: ANÁLISE LÉXICA 1. Ref.: 3990678 Pontos: 1,00 / 1,00 O GALS além dos tokens permite a escrita de definição regulares que facilitam a construção do tokens. Observe a figura abaixo: Ela faz a especificação de um token chamado ID, qual das opções abaixo apresenta o único lexema que atende a especificação: 3A A3A A3 AA3 AA. 2. Ref.: 3990679 Pontos: 0,00 / 1,00 Diagramas de Sintaxe são forma gráficas e alternativas para representar as especificações de tokens, sem precisa recorrer as Expressões Regulares ao BNF. Considere o diagrama de Sintaxe abaixo: Que expressão regular faria exatamente a mesma definição no GALS? Inteiro : [Digito]+ Inteiro : [0-9]? Inteiro : [Digito]* Inteiro : [0-9]+ Inteiro : [0-9]* ENSINEME: ANÁLISE SEMÂNTICA 3. Ref.: 3992187 Pontos: 0,00 / 1,00 A determinação das dependências de uma árvore anotada e o tipo dos atributos limitam a escolha do esquema de tradução a ser utilizado. Considere a árvore abaixo e seu respectivo grafo de dependência (setas azuis) Ao analisarmos a situação podemos afirmar: Somente poderá ser utilizado um Esquema S-atribuído Porque No esquema S-atribuído todos os atributos são sintetizados Com base nas afirmativas podemos concluir que: As duas são corretas e a segunda não justifica a primeira A primeira é verdadeira e a segunda falsa As duas são corretas e a segunda justifica a primeira As duas afirmativas são falsas A primeira é falsa e a segunda correta 4. Ref.: 3992188 Pontos: 1,00 / 1,00 As representações intermediárias lineares são utilizadas para produzir o resultado da Análise Semântica. As respeito destas representações analise as seguintes afirmativas: I. Código de máquina de pilha é um exemplo de código de um endereço II. Códigos de um endereço utilizam nomes implícitos III. Códigos de dois endereços não utilizam operações destrutivas. IV. Código de três endereços possuem o formato básico r ← x op y Estão corretas apenas as afirmativas: I e IV I, II e IV II, III e IV {ε} II e III I, II e III ENSINEME: ANÁLISE SINTÁTICA 5. Ref.: 3992530 Pontos: 1,00 / 1,00 Na implementação de Analisadores Sintáticos Descendentes Preditivo, é criada uma tabela para determinar que produção utilizar em função do símbolo não terminal no topo da pilha e do símbolo que está sendo lido na entrada. Para auxiliar no trabalho de criação da tabela, são definidos dois conjuntos o First e o Follow Considere a seguinte gramática X→abY|c Y→dY|ε Z→e Qual seria o conjunto Follow para o não terminal X? {b} {$} {a} {c} {ε} 6. Ref.: 3992528 Pontos: 1,00 / 1,00 Enade 2017 Em um compilador, um analisador sintático descendente preditivo pode ser implementado com o auxílio de uma tabela construída a partir de uma gramática livre de contexto. Essa tabela, chamada tabela LL(k), indica a regra de produção a ser aplicada olhando-se o k-ésimo próximo símbolo lido, chamado lookahead(k). Por motivo de eficiência, normalmente busca-se utilizar k=1. Considere a gramática livre de contexto G=(X,Y,Z,a,b,c,d,e,P,X)G=(X,Y,Z,a,b,c,d,e,P,X), em que PP é composto pelas seguintes regras de produção: X→aZbXY|c Y→dX|ε Z→e Considere, ainda, a seguinte tabela LL(1), construída a partir da gramática GG, sendo $$ o símbolo que representa o fim da cadeia. Essa tabela possui duas produções distintas na célula (Y,d)(Y,d), gerando, no analisador sintático, uma dúvida na escolha da regra de produção aplicada em determinados momentos da análise. Considerando que o processo da construção dessa tabela LL(1), a partir da gramática GG, foi seguido corretamente, a existência de duas regras de produção distintas na célula (Y,d), neste caso específico, resulta da ausência do símbolo de fim de cadeia ($) nas regras de produção. da presença de duas regras de produção com um único terminal no corpo. de um não determinismo causado por uma ambiguidade na gramática. da presença de duas regras de produção com o mesmo não terminal na cabeça. do uso incorreto do símbolo de cadeia vazia (ε) nas regras de produção. ENSINEME: GERAÇÃO DE CÓDIGO 7. Ref.: 3993114 Pontos: 0,00 / 1,00 A montagem e a ligação são as últimas etapas na criação de um programa executável. A partir deste instante o programa fica disponível para ser executado e quando o usuário solicitar que ele rode o Carregador irá alocá-lo na memória. Várias técnicas foram desenvolvidas para realizar tanto a ligação como o carregamento. Dentro deste contexto analise as afirmativas abaixo: I Na montagem e carregamento combinados não é criado o módulo objeto II Carregamento e Ligação Dinâmicos sempre ocorrem em tempo de execução III Carregador de ligação direta usam relocação de código É verdadeiro o que se afirma em: Somente I I e III Somente II I e II I, II e III 8. Ref.: 3993121 Pontos: 1,00 / 1,00 O produto final da etapa de síntese do compilador é o código de montagem que será submetido ao montador para gerar o módulo objeto. Em seu trabalho o montador deve, entre outras coisas, determinar os endereços em memória das instruções , dos rótulos e das variáveis. Considere o trecho de código abaixo: Sabendo-se que VALOR e RESULTADO tiveram seus endereços determinados nesta ordem, na tabela de símbolos seus endereços seriam respectivamente $3001 e $3000 $1001 e $1000 $1000 e $1001 $3000 e $3001 $1000 e $3000 ENSINEME: O COMPILADOR 9. Ref.: 3990558 Pontos: 0,00 / 1,00 Considere o extrato abaixo referente a especificação de um linguagem de programação ::= inteiro | real | string declaração_variavel::= [ {, } ]; ::= inteiro | real | string ::= + |- | * | / ::= {L} + {L}|{D} ::= {D}+ ::= {D} + [.{D}+] | .{D} ::= ´{C}´ L ::= A..Z a..z D ::= 0..9 Se a seguinte declaração fosse escrita que tipo de erro seria gerado Inteiro AB+, B, C Lógico Léxico Semântico Sintático Execução 10. Ref.: 3990557 Pontos: 0,00 / 1,00 Sobre análise léxica e sintática executadas pelos compiladores, assinale a opção correta. Os analisadores léxico e sintático somente se comunicam via tabela de simbolos. Um analisador léxico serve como o passo final de um analisador sintático. Técnicas para análise léxica são mais complexas do que as necessárias para a análise sintática. O analisador sintático processa diretamente o programa fonte a procura de erros. Um analisador léxico gera a entrada para o analisador sintático.
Compartilhar