Prévia do material em texto
ENSINEME: ANÁLISE LÉXICA 1. Ref.: 3990673 Pontos: 1,00 / 1,00 Autômatos Finitos são definidos por uma quíntupla (Q, ΣΣ, δδ, q0, F) onde: • Q é o conjunto finito de estados, • ΣΣ é o conjunto finito de símbolos de entrada, • δδ é a função de transição, • q0 é o estado inicial (q0 ∈∈ Q - o estado inicial é apontado por uma seta) • F o conjunto de estados finais ou de aceitação ( um estado inicial também pode ser final). E podem ser representados por grafos ou de forma tabular considere o seguinte grafo: Qual seria a sua representação tabular? javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990673.'); 2. Ref.: 3990679 Pontos: 1,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 : [0-9]+ Inteiro : [Digito]* Inteiro : [Digito]+ javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990679.'); Inteiro : [0-9]* Inteiro : [0-9]? ENSINEME: ANÁLISE SEMÂNTICA 3. Ref.: 3992182 Pontos: 1,00 / 1,00 As representações intermediárias gráficas se prestam a representar vários aspectos analisados do programa fonte. Cada uma delas possui características distintas e se prestam a uma determinada finalidade. A figura a seguirbaixo: corresponde a que tipo de representação intermediária gráfica? Arvore de Derivação Árvore Semântica Árvore de Derivação anotada Grafo de Dependência Grafo acíclico direcionado 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. javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203992182.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203992188.'); IV. Código de três endereços possuem o formato básico r ← x op y Estão corretas apenas as afirmativas: I, II e IV II e III II, III e IV {ε} I e IV I, II e III ENSINEME: ANÁLISE SINTÁTICA 5. Ref.: 3992515 Pontos: 1,00 / 1,00 Gramáticas Livres de Contexto se prestam à definição de Linguagens de programação. Porém, a existência de ambiguidade gera o problema do não determinismo para o parser, já que permite a criação de duas árvores sintáticas distintas para o mesmo comando. Considere as seguintes gramáticas I - A → A + A | A − A | a II -E → E + E | E → E * E | E → b III - S → S + T | S → T | T → T * F | F → c Existe ambiguidade: Em I e II Somente em II Em II e III Somente em I Em I e III 6. Ref.: 3992462 Pontos: 1,00 / 1,00 ANO: 2012 BANCA: CESGRANRIO ÓRGÃO: TRANSPETRO PROVA: ANALISTA DE SISTEMAS - INFRAESTRUTURA DE TI Um compilador é um programa que executa vários passos, dentre os quais o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal. O resultado típico dessa análise é uma estrutura conhecida como: Fluxo (stream) de tokens Gramática livre de contexto Árvore sintática Gramática dirigida a sintaxe javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203992515.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203992462.'); Árvore AVL ENSINEME: GERAÇÃO DE CÓDIGO 7. Ref.: 3993018 Pontos: 1,00 / 1,00 As áreas em que se divide a memória do programa podem ser de tamanho fixo ou variável. As de tamanho fixo lidam normalmente com variáveis escalares e linhas de código, já as de tamanho variável são normalmente auxiliares para a execução do programa armazenando dados de tamanho variável etc. Dentre as áreas do programa duas delas crescem em direção uma da outra. Quais são elas? Memória livre e heap Pilha e memória livre Pilha e heap Área de dados e pilha Área de dados e heap 8. Ref.: 3993004 Pontos: 1,00 / 1,00 A alocação adequada de memória para a execução do programa é fundamental para que ele tenha um bom desempenho. A memória utilizada pelo programa é dividida em várias parte sendo cada uma delas mais adequada para um determinado uso. As áreas em que um programa é normalmente divido são I Área de Código Objeto II Área de Dados Estática III Heap IV Pilha Dentre estas a alocação estática é utilizada nas áreas: I e III I e II III e IV II e III II e IV javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993018.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203993004.'); ENSINEME: O COMPILADOR 9. Ref.: 3990558 Pontos: 1,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éxico Semântico Execução Sintático Lógico 10. Ref.: 7674284 Pontos: 0,00 / 1,00 (EMPREL/2019 - Adaptada) Qual é o componente de um compilador que lê um fluxo de entrada (caracteres) e produz um fluxo de saída que contém palavras das quais cada uma é rotulada com sua categoria sintática, equivalente a uma classe gramatical da palavra na linguagem do programa fonte? javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%203990558.'); javascript:alert('C%C3%B3digo%20da%20quest%C3%A3o:%207674284.'); Gerador de Código Intermediário. Otimizador. Analisador Léxico. Analisador Sintático. Analisador Semântico.