Buscar

Lista de Exercícios COMPILADORES

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Lista de Exercícios 1
1) Qual a diferença entre compilação e interpretação?
Dizemos que um programa foi compilado quando ele é completamente traduzido para
a linguagem de máquina para só depois ser executado. Já na interpretação, o código vai sendo
executado a medida que vai sendo traduzido de modo interativo.
2) No contexto de compiladores, por que Java é considerada uma linguagem híbrida? 
Pois Java é uma linguagem compilada e interpretada, onde o código é
compilado para um nível intermediário e posteriormente interpretados para serem
executados.
3) Qual a diferença entre compilador e montador?
A montagem é feita para traduzir um código em linguagem de montagem
para seu equivalente em linguagem binária, que é o código entendível pela
máquina. A análise e tradução é muito mais simples que a de um compilador e
também mais rápida.
4) Por que um compilador deve ser específico para uma linguagem e programação e
para uma determinada CPU?
Como as instruções e comandos de cada linguagem podem varias, cada tipo
ou modelo deve ter um compilador equivalente.
5) Como são classificados os compiladores em relação aos passos da compilação? Quais
vantagens e desvantagens de cada modelo?
Compiladores de um passo: texto fonte do compilador > passo único
(compilador) > texto objeto do compilador
Compiladores de vários passos: texto fonte > passo 1 > texto intermediário 1
> passo 2 > texto intermediário 2 > texto intermediário n-1 > passo n > texto
objeto.
A vantagem de compiladores de vários passos é a menor utilização de
memória, maior possibilidade de executar otimizações e projetos mais
independentes. O maior volume de entrada e saída, o aumento do tempo de
compilação e o aumento da complexidade do projeto, são algumas das
desvantagens.
Inversamente respectivo, as vantagens de compiladores de um passo são as
desvantagens do compilador de vários passos. Assim como suas desvantagens.
6) Explique as etapas que constituem o processo de compilação.
Processamento > leitura do código inserido, juntar linhas, ignorar comentários, etc
analisador léxico > (lê a sequência de caracteres e a organiza como token)
analisador sintético > (agrupa caracteres ou token em uma estrutura hierárquica
com algum significado)
analisador semântico > são verificados os erros de semântica
gerador de código intermediário
otimizador de código
gerador de código > para a respectiva arquitetura
código alvo > código com todas as substituições de endereço de funções e acessos a
variáveis.
7) As etapas de compilação podem ser agrupadas em um modelo que prevê dois
módulos. Explique tal modelo de compilação.
Análise, onde é feito particionamento do código conte em peças
constituintes e cria uma representação intermédia do código fonte.
O processo de síntese constrói o desejado programa alvo a partir da
representação intermédia.
8) Qual a função da tabela de símbolos e palavras reservadas?
Elas são utilizadas para as declarações de uso restrito da linguagem de
programação. São comandos de uso muito específicos que não podem ser ter outro
propósito além do que já foi posto pelo compilador.
9) Dê exemplo de erro léxico, sintático e semântico para uma linguagem determinada.
Erros léxicos: ocorre quando se abre um comentário e não se fecha. Má
formação de strings. Limite do numero de casas decimais. Símbolos que não são
reconhecidos.
Erros sintáticos: acontecem quando falta algo na estrutura do código(o mais
sofrido pra mim). Falta de ponto e vírgula, é um exemplo.
Erros semânticos: quando acontecem algumas faltas de concordâncias no
código, onde ele consegue entender a estrutura, mas não é capaz de entender o que
era irá fazer. Por exemplo, multiplicar uma string por um valor booleano.
10) Defina analisador léxico. O que é token?
A função básica de um analisador léxico é o reconhecimento e a
classificação das estruturas elementares ou classes sintáticas das linguagens.
Tokens são sequencias de caracteres, cadeia de caracteres, que forma a estrutura
do código fonte.
11) Na prática, o que significa dizer que o analisador léxico consome espaços em branco
e comentários?
Ele faz uma varredura e remove os comentários e os espaços em brancos.
12) Que aspectos podem ser considerados importantes no processo de compilação?
A geração de códigos intermediários.
13) Descreva (de maneira informal) as linguagens denotadas pelas seguintes expressões
regulares:
a) 0 (0|1)*0
linguagem iniciada com 0, seguidos de zero ou mais 0 ou 1, terminadas em 0
b) (0|1)*0(0|1)(0|1)
linguagem iniciada com quantidades n de 0 ou 1, seguido por 0, seguido por 0
ou 1, terminada em 0 ou 1.
c) 0*10*10*10*
linguagem iniciada com zero ou mais 0, seguido por 1 e zero ou mais 0, seguido
por 1 e zero ou mais 0.
d) 0+1?0*
linguagem iniciada em 0 ou 1, terminada com zero ou mais 0.
14) Construa os autômatos para as expressões regulares das letras c e d do exercício 13.

Continue navegando