Exercícios resolvidos sobre compiladores: análise léxica, sintática e semântica

ComputaçãoAtualizado em 3,12 KB

Resumo

Esta coleção reúne exercícios resolvidos de concursos sobre compiladores e linguagens de programação. As questões abordam a análise semântica, a tabela de símbolos, analisadores sintáticos LR(k) e LL(1), código-objeto e a diferença entre compilação e interpretação. O estudante poderá revisar as etapas de tradução de programas de alto nível para código executável.

Pontos-chave

  • A checagem de tipos em expressões é função do analisador semântico.
  • A tabela de símbolos começa a ser construída durante a análise léxica, quando os identificadores são reconhecidos.
  • A classe LL(1) não aceita recursões diretas à esquerda, como L → La.
  • O resultado da tradução de um programa-fonte para linguagem binária é o código-objeto.
  • A compilação tende a oferecer menor tempo de execução, enquanto a interpretação facilita a identificação de erros.
  • Os montadores (Assemblers) permitiram programar em linguagem simbólica convertida depois para linguagem de máquina.

Teste-se

Exercício 1

[FUNIVERSA - 2012 - PC-DF - Perito Criminal – Informática] Com relação aos softwares básicos envolvidos no processo de transformação de um programa escrito em linguagem de alto nível para um código executável ou interpretado, assinale a alternativa correta:

  • A) No processo de análise semântica da compilação, é verificada a consistência dos tipos de variáveis envolvidas em operações aritméticas.

Exercício 2

[CESGRANRIO - 2010 - IBGE - Analista de Sistemas] Ao realizar testes durante a elaboração de um compilador, um analista descobriu um erro na checagem de tipos de variáveis em expressões, permitindo a multiplicação entre tipos de dados incompatíveis. Em compiladores, a checagem de tipos é uma função do:

  • A) Analisador semântico.

Exercício 3

A respeito dos analisadores sintáticos ascendentes LR(k), não se pode afirmar que:

  • E) Na análise LR, os erros são identificados sempre no momento mais tarde, isto é, na leitura de tokens.

Exercício 4

[Poscomp, 2003] Considere as seguintes afirmativas sobre as linguagens usadas para análise sintática: I. A classe LL(1) não aceita linguagens com produções que apresentam recursões diretas à esquerda (por exemplo, L → La), mas aceita linguagens com recursões indiretas (por exemplo, L → Ra, R → Lb).

  • C) Apenas a afirmativa III é verdadeira.

Exercício 5

Pode-se afirmar sobre a tabela de símbolos:

  • C) Começa a ser construída durante a análise léxica, quando os identificadores são reconhecidos.

Exercício 6

A respeito da tabela de símbolos criada durante a etapa de análise, é correto afirmar que:

  • D) Tem entradas que podem não ser uniformes para classes distintas de identificadores.

Exercício 7

[FCC - 2001 - TRF 1ª Região - Analista Judiciário] O resultado do processo de análise de um programa-fonte, escrito em linguagem de alto nível, após sua conversão ou tradução em um programa escrito em linguagem binária, é:

  • E) Código-objeto.

Exercício 8

[FCC - 2012 - TJ-PE - Técnico Judiciário] No contexto do módulo executável de um programa de computador, menor tempo de execução, menor consumo de memória, maior tempo na execução de loops e menor dificuldade de identificação de erros estão associados, respectivamente, aos métodos:

  • E) Compilação, compilação, interpretação, interpretação.

Exercício 9

[NCE - 2005 - AGE-MT - Analista de Sistemas] A programação dos primeiros computadores digitais era realizada em linguagem de máquina. Julgue os itens a seguir:

  • A) A criação dos programas montadores (Assemblers) simplificou a tarefa de programação, permitindo o uso de linguagem simbólica (Assembly) para a construção de programas convertidos posteriormente para a linguagem de máquina.

Baixar

PDF Word HTML

Perguntas frequentes

Qual etapa do compilador verifica a consistência dos tipos?

A verificação da consistência dos tipos de variáveis em operações aritméticas ocorre na análise semântica. Essa função é atribuída ao analisador semântico, conforme a questão do concurso da CESGRANRIO.

O que é código-objeto?

Código-objeto é o resultado do processo de tradução de um programa escrito em linguagem de alto nível para uma linguagem binária. Segundo a questão da FCC, esse é o produto final da análise e conversão do programa-fonte.

Teste-se

Cartões de revisão

Clique em um cartão para ver a resposta.

Teste

1. Qual componente do compilador é responsável pela checagem de tipos em expressões?
2. Quando começa a ser construída a tabela de símbolos?
3. Qual classe de analisadores sintáticos não aceita recursões diretas à esquerda?
4. Qual é o resultado da tradução de um programa-fonte para linguagem binária?
5. Qual método está associado a menor tempo de execução segundo o exercício 8?

Perguntas geradas com IA a partir do documento: verifique as respostas com o texto.