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? 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 : [Digito]* Inteiro : [0-9]? Inteiro : [0-9]+ Inteiro : [Digito]+ Inteiro : [0-9]* ENSINEME: ANÁLISE SEMÂNTICA 3. Ref.: 3992180 Pontos: 1,00 / 1,00 Tabela de símbolos implementadas como tabelas hash implicam no uso de uma fórmula, denominada fórmula de hash que a partir de algum tipo de cálculo define o índice do slot onde o símbolo será armazenado. Fórmulas de hashing bem selecionadas produzem um espalhamento dos símbolos por diferentes slots, com base nisso podemos afirmar que apesar de não existirem fórmulas perfeitas se eventualmente dois símbolos gerarem o mesmo índice não ocorrerá uma colisão porque métodos como Endereçamento Aberto e Hashing Aberto fazem com que os símbolos sejam armazenados em locais diferentes. Com base nas afirmativas acima podemos concluir que: As duas afirmativas são falsas A primeira é verdadeira e a segunda falsa A primeira é falsa e a segunda correta As duas são corretas e a segunda justifica a primeira As duas são corretas e a segunda não justifica a primeira 4. Ref.: 3992187 Pontos: 1,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 é falsa e a segunda correta A primeira é verdadeira e a segunda falsa As duas são corretas e a segunda justifica a primeira As duas afirmativas são falsas 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 I Em I e III Somente em II Em II 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: Gramática dirigida a sintaxe Gramática livre de contexto Árvore sintática Árvore AVL Fluxo (stream) de tokens ENSINEME: GERAÇÃO DE CÓDIGO 7. 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: II e IV II e III III e IV I e III I e II 8. 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? Pilha e heap Área de dados e heap Área de dados e pilha Pilha e memória livre Memória livre e heap ENSINEME: O COMPILADOR 9. Ref.: 3990551 Pontos: 1,00 / 1,00 Atualmente o JAVA passou a utilizar uma segunda fase de compilação para acelerar a execução. Está técnica é denominada: Bytecode Montagem Linkedição JVM JIT 10. Ref.: 3990550 Pontos: 1,00 / 1,00 O componente do processo de tradução que a partir dos programas objetos gera o módulo de carga é o: Carregador Ligador Compilador Montador Interpretador