Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disciplina: COMPILADORES AV Aluno: LEANDRO RODRIGUES MELO 202007163613 Professor: MARIA CLAUDIA ROENICK GUIMARAES Turma: 9001 CCT0838_AV_202007163613 (AG) 30/10/2023 17:21:51 (F) Avaliação: 4,00 pts Nota SIA: 4,00 pts Estação de trabalho liberada pelo CPF 11875130756 com o token 692257 em 30/10/2023 17:15:49. ENSINEME: ANÁLISE LÉXICA 1. Ref.: 3990679 Pontos: 0,00 / 1,00 Diagramas de Sintaxe são forma grá�cas e alternativas para representar as especi�caçõ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 de�nição no GALS? Inteiro : [0-9]* Inteiro : [0-9]? Inteiro : [Digito]* Inteiro : [Digito]+ Inteiro : [0-9]+ 2. Ref.: 3990678 Pontos: 1,00 / 1,00 O GALS além dos tokens permite a escrita de de�nição regulares que facilitam a construção do tokens. Observe a �gura abaixo: Ela faz a especi�cação de um token chamado ID, qual das opções abaixo apresenta o único lexema que atende a especi�cação: 3A AA3 A3A A3 AA. javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990679.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990679.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990678.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990678.'); ENSINEME: ANÁLISE SEMÂNTICA 3. Ref.: 7808682 Pontos: 1,00 / 1,00 Os grafos são estruturas de dados matemáticas que representam relações entre objetos. Em um grafo, os objetos são representados por nós ou vértices e as relações entre eles são representadas por arestas ou ligações. Os grafos podem ser direcionados ou não direcionados, dependendo se as arestas têm uma direção especí�ca ou não. Nesse sentido, o que é o percurso Depth-First em grafos? Um método de classi�cação de dados Um algoritmo de busca em largura Um método de organização de dados em árvores Um algoritmo de busca em profundidade Um tipo de algoritmo de otimização 4. Ref.: 7808680 Pontos: 1,00 / 1,00 (Transpetro/2012) 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 livre de contexto árvore AVL árvore sintática gramática dirigida a sintaxe �uxo (stream) de tokens ENSINEME: ANÁLISE SINTÁTICA 5. Ref.: 7807517 Pontos: 0,00 / 1,00 (FCC/2016) A compilação é o processo de tradução de um programa escrito em uma linguagem fonte em um programa equivalente em linguagem de máquina. Nesse processo, o programa fonte normalmente passa pelas fases: I. Identi�cação de sequências de caracteres de entrada e produção de uma sequência de elementos de saída, os tokens. Nesta fase, veri�ca-se se cada caractere do programa fonte pertence ao alfabeto da linguagem, identi�cando os tokens e desprezando comentários e espaços em branco. Os tokens constituem classes de símbolos, tais como palavras reservadas, delimitadores, identi�cadores etc. II. Identi�cação de sequências de símbolos que constituem estruturas como expressões e comandos, através de uma varredura, ou parsing, da representação interna do programa fonte, produzindo uma estrutura em árvore, chamada árvore de derivação. III. Veri�cação das estruturas quanto ao sentido, ou seja, se o programa não possui erros de signi�cado. Por exemplo, veri�ca se um identi�cador declarado como variável é utilizado como tal, se existe compatibilidade entre operandos e operadores em expressões etc. Os itens I, II e III referem-se, correta e respectivamente, às fases: Análise Léxica - Análise Sintática - Análise Semântica. Busca Binária - Montagem Léxica - Análise Semântica. javascript:alert('C%C3%B3digo da quest%C3%A3o: 7808682.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7808682.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7808680.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7808680.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7807517.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7807517.'); Classi�cação - Análise Léxica - Montagem. Identi�cação Inicial - Análise Estrutural - Geração de Código. Interpretação - Análise Sintática - Montagem. 6. Ref.: 7807516 Pontos: 0,00 / 1,00 (IBADE/2018) Algumas linguagens exigem que o código fonte seja previamente traduzido para linguagem de máquina antes de ser executado. Chama-se esta fase de: Interpretação. Tradução. Linkedição. Compilação. Ediçã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 �ca 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 a�rmativas 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 a�rma em: Somente II I e II I e III I, II e III Somente I 8. Ref.: 3993093 Pontos: 0,00 / 1,00 A alocação de registradores junto com a seleção de instruções são atividades fundamentais na geração do código de montagem. Ela possui um impacto enorme no desempenho do programa já que ao se utilizar os registradores para minimizar o acesso a memória torna a execução mais e�ciente. Considerando que temos uma máquina com dois registradores (r0 e r1) e com o conjunto de instruções do quadro abaixo javascript:alert('C%C3%B3digo da quest%C3%A3o: 7807516.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7807516.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993114.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993114.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993093.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993093.'); Sub r0 bMove r0 a Move r1 c Add r1 r0 Move x r1 Move r1 d Mult r1 e Add r0 f Move y r1 Add x r1 Move x r1 Move z r0 Move w r1 Podemos a�rmar que: A instrução Move y r1 foi necessária para derramar o conteúdo de r1 em Y Porque Era necessário liberar o um registrador para poder continuar a execução do programa da forma mais e�ciente. Com base nas a�rmativas acima podemos concluir que: As duas são corretas e a segunda não justi�ca a primeira As duas a�rmativas são falsas A primeira é verdadeira e a segunda falsa As duas são corretas e a segunda justi�ca a primeira A primeira é falsa e a segunda correta ENSINEME: O COMPILADOR 9. Ref.: 7838511 Pontos: 1,00 / 1,00 (Transpetro/2012) 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 árvore AVL. gramática livre de contexto. árvore sintática. �uxo (stream) de tokens. gramática dirigida a sintaxe. 10. Ref.: 3990558 Pontos: 0,00 / 1,00 Considere o extrato abaixo referente a especi�caçã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 Execução Léxico Sintático Semântico javascript:alert('C%C3%B3digo da quest%C3%A3o: 7838511.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 7838511.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990558.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990558.');
Compartilhar