SYBSc Ciência da Computação - Construção Teórica do Compilador - Questionário Ano: 2022
Duração: 3 horas
Instruções: Todas as perguntas são obrigatórias.
Todas as questões têm notas iguais.
Seção 1: Descreva a hierarquia de Chomsky com referência a autômatos finitos, autômatos pushdown e máquinas de turing.
Dê uma breve visão geral das principais funções e componentes de um analisador léxico.
Discuta as diversas técnicas de análise sintática usadas em compiladores, prestando especial atenção aos métodos de análise sintática top-down e bottom-up.
Explique com exemplos relevantes o conceito de gramáticas atribuídas a L e atribuídas a S.
Ilustre como a representação intermediária desempenha um papel crucial no processo de compilação.
Seção 2: Projete um analisador léxico para identificar identificadores e palavras-chave em uma linguagem de programação.
Escreva uma expressão regular para verificar endereços de e-mail válidos.
Explique como um compilador realiza verificação de tipos e conversões de tipos de dados.
Construa uma tabela de análise LR(0) para uma determinada gramática.
Desenvolva um algoritmo para construir gráficos de fluxo de controle para uma representação intermediária.
Seção 3: Fornece uma visão geral dos diferentes tipos de técnicas de otimização de código executadas durante a compilação.
Discuta a importância e os desafios de gerar código de máquina eficiente.
Explicar os conceitos de alocação de variáveis locais, código derramado e alocação de registradores no contexto de geração de código.
Destaque as vantagens e desvantagens entre otimizar espaço ou velocidade durante a geração de código.
Escreva notas curtas sobre o seguinte:
Dobragem de código
Controlar o nivelamento do fluxo
Eliminação de código morto
Desenrolamento de loop
Alocação de registro
Boa sorte!