[Compiladores] Aula 02 - Estrutura de um compilador (Front-end)

[Compiladores] Aula 02 - Estrutura de um compilador (Front-end)

Assessment

Quiz

Computers, Professional Development

University

Hard

Created by

Renan Costa Alencar

Used 4+ times

FREE Resource

Student preview

quiz-placeholder

9 questions

Show all answers

1.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Sobre as linguagens de programação, é correto afirmar:

Linguagens de alto nível cumprem tarefas mais substanciais com um número menor de comandos, mas exigem programas tradutores denominados compiladores para converter programas em linguagem de alto nível para linguagem de máquina.

Um computador pode entender qualquer linguagem de máquina, pois a linguagem de máquina não é definida pelo projeto de hardware do computador.

Programadores podem escrever instruções em várias linguagens de programação e todas são entendidas diretamente pelos computadores sem a necessidade de tradução.

Softwares escritos em linguagens de máquina são portáveis.

Interpretadores são programas que convertem códigos escritos em linguagem de alto nível para programa sem linguagem de máquina.

2.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Conhecer as metodologias utilizadas por um compilador para a análise e síntese de um programa de computador pode ser muito útil para entender como um software funciona por dentro. Assim, atividades como a engenharia reversa podem ser mais facilmente entendidas e realizadas. A esse respeito, no que se refere aos programas de computadores e às fases de um compilador, assinale a alternativa correta.

As fases de análise sintática e semântica tratam da grande maioria dos erros detectáveis pelo compilador.

A fase de análise constrói o programa alvo desejado, com base nas respectivas representações intermediárias. É a fase que requer as técnicas mais especializadas.

Durante a análise sintática do programa fonte, o compilador procura encontrar as construções que possuam a estrutura sintática correta, sem se preocupar com o significado da operação envolvida.

A análise semântica, também chamada de análise gramatical, envolve o agrupamento dos tokens do programa fonte, no qual cada token representa uma sequência de caracteres logicamente coesa, em frases gramaticais que são usadas pelo compilador, a fim de sintetizar a saída.

A fase final do compilador é a geração de código intermediário, na qual as alocações de memória são realizadas para cada uma das variáveis utilizadas pelo programa.

3.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Para que os programas funcionem, eles devem ser traduzidos para o código de máquina (de código fonte para código objeto) e para isso é necessário um tradutor ou um compilador. Em relação à característica de um programa compilado, analise as afirmativas a seguir:


I. O compilador ocupa a memória enquanto se executa o programa.


II. O compilador é carregado na memória apenas na compilação do programa.


III. O programa é traduzido inteiramente uma vez.


IV. O programa precisa ser traduzido cada vez que é rodado.


V. Sua execução é rápida.


VI. O programa acaba por se tornar mais lento.


Está CORRETO o que se afirma em:

Somente I.

Somente I e VI.

Somente IV e VI.

II, III e V.

I, II, III e V.

4.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Os compiladores e interpretadores são exemplos de:

softwares aplicativos.

softwares utilitários.

firmwares.

softwares básicos.

softwares livres.

5.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Durante a compilação de um código-fonte, a fase do compilador que é responsável por produzir uma sequência de tokens é a:

análise léxica.

análise semântica.

análise sintática.

geração de código executável.

verificação de tipos.

6.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

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

árvore sintática

fluxo (stream) de tokens

gramática dirigida a sintaxe

gramática livre de contexto

7.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Na implementação de compiladores, a fase de parser do programa baseia-se, em parte, no resultado de um analisador léxico.


Assinale a opção que descreve o papel de um analisador léxico.

Representar as regras da gramática da linguagem.

Verificar a conformidade do código fonte com as regras da gramática da linguagem.

Definir a notação em que as regras da gramática são expressas.

Identificar os tokens gramaticais no código fonte.

Exprimir a semântica das construções da linguagem.

8.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

Abaixo, estão enumeradas as fases que integram o front-end de um compilador:


1) Análise Semântica

2) Análise Léxica

3) Análise Sintática

4) Gerador de código intermediário

1, 3, 2 e 4.

3, 1, 4 e 2.

2, 3, 1 e 4.

1, 4, 2 e 3.

4, 1, 2 e 3.

9.

MULTIPLE CHOICE QUESTION

5 mins • 1 pt

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. Identificação de sequências de caracteres de entrada e produção de uma sequência de elementos de saída, os tokens. Nesta fase, verifica-se se cada caractere do programa fonte pertence ao alfabeto da linguagem, identificando os tokens e desprezando comentários e espaços em branco. Os tokens constituem classes de símbolos, tais como palavras reservadas, delimitadores, identificadores etc.

II. Identificaçã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. Verificação das estruturas quanto ao sentido, ou seja, se o programa não possui erros de significado. Por exemplo, verifica se um identificador 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.

Interpretação − Análise Sintática − Montagem.

Busca Binária − Montagem Léxica − Análise Semântica.

Classificação − Análise Léxica − Montagem.

Identificação Inicial − Análise Estrutural − Geração de Código.