Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disciplina: COMPILADORES AV Aluno: YURI CID DA SILVA LIMA 202008191076 Professor: MAIARA HEIL CANCIAN Turma: 9004 CCT0838_AV_202008191076 (AG) 21/03/2023 18:59:27 (F) Avaliação: 8,00 pts Nota SIA: 10,00 pts ENSINEME: ANÁLISE LÉXICA 1. Ref.: 7807511 Pontos: 1,00 / 1,00 (IBADE/2021) Programas escritos em algumas linguagens são executados à partir do código fonte, mas existem programas que necessitam ser previamente traduzidos para linguagem de máquina antes de ser executados. Chamamos esta "tradução" de: Edição. Linkedição. Tradução. Compilação. Interpretação. 2. Ref.: 3990674 Pontos: 1,00 / 1,00 Autômato Finito é formalmente de�nido por uma quíntupla como por exemplo esta: Q = número de estados = {S0, S1, S2, S3,S4,S5} = símbolos de entrada = {A,E,M,O,S} = transições = (S0,S) = S1 (S1,E) = S2 (S1,O) = S3 (S3,M)= S4 (S4,A) = S5 q0 = estado inicial = {S0} F = conjunto de estados �nais = {S3,S5} Sabendo-se que os estados �nais quando atingidos caracterizam que a palavra foi aceita, que palavras seriam aceitas por este autômato? "Se" e "Soma" "So" e "Sema" "Mesa" e "So" "Som" e "Sema" "Mesa" e "Ema" Σ δ δ δ δ δ δ javascript:alert('C%C3%B3digo da quest%C3%A3o: 7807511.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990674.'); 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 de�ne 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 a�rmar 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 a�rmativas acima podemos concluir que: As duas são corretas e a segunda 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 não justi�ca a primeira A primeira é falsa e a segunda correta 4. Ref.: 3992186 Pontos: 1,00 / 1,00 Veri�cação de tipos é uma atividade extremamente importante na análise semântica já que determinados erros somente são percebidos nesta atividade, pois passam despercebidos nas Análises Léxicas e Sintáticas. Considere o seguinte trecho de programa : inteiro a,b,c; { .... c:= a + b; .... } Quanto a expressão c:= a + b; podemos a�rmar que: O seu tipo será inteiro porque todos os operandos são do tipo inteiro Com base nas a�rmativas podemos concluir que: A primeira é falsa e a segunda correta As duas são corretas e a segunda não justi�ca a primeira As duas são corretas e a segunda justi�ca a primeira A primeira é verdadeira e a segunda falsa As duas a�rmativas são falsas javascript:alert('C%C3%B3digo da quest%C3%A3o: 3992180.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3992186.'); ENSINEME: ANÁLISE SINTÁTICA 5. Ref.: 3992525 Pontos: 1,00 / 1,00 Enade 2008 Compiladores de linguagens de programação traduzem programas-fonte, em uma linguagem de entrada, para programas-objeto, em uma linguagem de saída. Durante o processo de tradução, o compilador deve veri�car se as sentenças do programa-fonte estão sintaticamente corretas. Esse processo de análise sintática pode ser realizado construindo-se uma árvore de análise segundo duas principais abordagens: top-down, quando a árvore é investigada da raiz às folhas; ou bottom-up, das folhas à raiz. Acerca desse assunto, julgue os itens seguintes. I A análise top-down é adequada quando a linguagem de entrada é de�nida por uma gramática recursiva à esquerda. II Independentemente da abordagem adotada, top-down ou bottom-up, o analisador sintático utiliza informações resultantes da análise léxica. III Se os programas em uma linguagem podem ser analisados tanto em abordagem top-down como em bottom-up, a gramática dessa linguagem é ambígua. IV A análise bottom-up utiliza ações comumente conhecidas como deslocamentos e reduções sobre as sentenças do programa-fonte. Estão certos apenas os itens I e II II, III e IV I, III e IV II e IV I e III 6. Ref.: 3992520 Pontos: 1,00 / 1,00 Considere a seguinte gramática: E → +EE E → *EE E → a E → b Podemos a�rmar que ela somente pode ser analisada por um Parser Descendente Preditivo Porque Ela está fatorada e sem recursão à Esquerda Como base nas a�rmativas acima podemos concluir que: A primeira é verdadeira e a segunda falsa As duas a�rmativas são falsas As duas são corretas e a segunda não justi�ca a primeira As duas são corretas e a segunda justi�ca a primeira A primeira é falsa e a segunda correta javascript:alert('C%C3%B3digo da quest%C3%A3o: 3992525.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3992520.'); ENSINEME: GERAÇÃO DE CÓDIGO 7. Ref.: 3993121 Pontos: 0,00 / 1,00 O produto �nal 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 $3000 e $3001 $1001 e $1000 $1000 e $1001 $3001 e $3000 $1000 e $3000 8. Ref.: 3993004 Pontos: 0,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: III e IV I e III II e IV II e III javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993121.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3993004.'); I e II 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: JIT JVM Linkedição Bytecode Montagem 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: Interpretador Ligador Carregador Montador Compilador javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990551.'); javascript:alert('C%C3%B3digo da quest%C3%A3o: 3990550.');
Compartilhar