Buscar

HENRY_COMPILADORES1

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

UNIUBE – UNIVERSIDADE DE UBERABA
ATIVIDADE - COMPILADORES
Prof. Luciano Rodrigo Ferreira Valor: 10 pontos
Nome: Henry Borges Padua Junior 
RA: 5121517
1 – Observe o trecho de um programa em linguagem C abaixo:
A análise Léxica efetuada pelo compilador apontará a existência de tipos de itens léxicos tokens, assinale a alternativa que corresponde a quantidade de cada um deles corretamente.
a) 6 identificadores, 3 de atribuição e 6 de pontuação
b) 2 identificadores, 2 de atribuição e 8 de pontuação
c) 3 identificadores, 1 de atribuição e 7 de pontuação
d) 5 identificadores, 2 de atribuição e 10 de pontuação
e) 4 identificadores, 1 de atribuição e 9 de pontuação
2 - A construção de um compilador deve ter como meta alguns objetivos, dentre os quais podemos citar:
1. A produção de um código que gere um objeto eficiente
1. A minimização do tempo de compilação
1. A definição de tipos de variáveis que não permita alterações do seu tipo
1. A obrigatoriedade de procedimentos procedurais e lineares.
1. Somente as afirmativas I e III estão corretas
1. Somente as afirmativas II e III estão corretas
1. Somente as afirmativas I e IV estão corretas
1. Somente as afirmativas I e II estão corretas
1. Somente as afirmativas III e IV estão corretas
3 - No âmbito das linguagens formais, no processo de compilação, a fase de análise é composta pelas subfases: Análise Léxica, Análise Sintática e Análise Semântica. Assim, considere:
I. Durante a análise léxica, as palavras ou lexemas são guardados na tabela de símbolos e classificados de acordo com a linguagem, em palavras reservadas, comandos, variáveis e tipos básicos.
II. A Análise Sintática é responsável pela verificação da boa formação dos comandos da linguagem, de acordo com as regras especificadas pela gramática da linguagem, pois sentenças mal formadas, geralmente, interrompem o processo de compilação e são apresentadas como mensagens de erro.
III. No fim da análise sintática, temos a representação do programa original de forma hierárquica, onde o programa é representado por uma árvore sintática.
IV. A análise semântica mais comum consiste na verificação da consistência de tipos dos operandos envolvidos em operações aritméticas ou dos parâmetros passados a procedimentos.
É correto o que consta em:
a) I e II, apenas.
b) III e IV, apenas.
c) I, II e III, apenas.
d) II, III e IV, apenas.
e) I, II, III e IV.
4 - A programação em linguagens de alto nível pressupõe a utilização de alguma ferramenta que permita a transformação do programa original em instruções que o processador da máquina seja capaz de executar. Compiladores e Interpretadores são dois desses tipos de programa, que têm como principal diferença o fato de que os compiladores:
a) geram, a partir do código fonte, um novo programa, chamado programa executável, que só então poderá ser executado; já os interpretadores fornecem um ambiente que permite a leitura e tradução direta do programa fonte, permitindo sua execução sem a necessidade de gerar um novo programa executável.
b) são capazes de operar em diversos ambientes, por exemplo, em máquinas virtuais, o que não é possível com interpretadores, que são feitos para uma determinada plataforma. 
c) são dependentes da linguagem utilizada, enquanto os interpretadores podem ser utilizados para qualquer linguagem de programação, já que não precisam gerar código e sim traduzir o código fonte. 
d) são mais confiáveis, pois o resultado final fica armazenado em um novo programa; já os interpretadores podem ocasionar a perda de informações.
e) são mais genéricos do que interpretadores, porque podem ser utilizados para qualquer tipo de linguagem de programação, ao contrário dos interpretadores, que só podem ser construídos para tipos específicos de linguagens.
5 – No trabalho prático que envolvendo a construção de um compilador foi utilizado como exemplo o site: http://webcomp.herokuapp.com/ onde demonstrava passo a passo, inclusive com os códigos fontes, a criação de um compilador, neste exemplo foram utilizadas ferramentas (bibliotecas) de apoio, quais são elas ?
a) Java e C++
b) Lex e Yacc
c) Python e Django
d) Léxica e Sintática
e) AFD e AFN 
6 - Os métodos de análise sintática, comumente usados em compiladores, são classificados como: 
a) top-down / bottom-up
b) upside down / trash
c) cats / get 
d) mget / mput
e) cp / mv
7 – Faça um comparativo apresentando as diferenças entre o que é um Token e o que é um Lexema.
O token é um par consistindo de um nome de token e um valor de atributo opcional. O nome do token é um símbolo abstrato representando um tipo de unidade léxica. Ex: palavra-chave, identificador, número, etc. Já o Lexema é uma sequência de caracteres no programa fonte que associa um padrão a um token e é uma instância do token.
8 – Descreva como ocorre a Análise Léxica em um compilador, qual a sua função e o método de trabalho.
Analisar a entrada dada (programa fonte) e dividi-la em sequências considerando os tokens da linguagem, definidos por expressões regulares. Cada token é normalmente formado por seu tipo (se é um operador lógico, um identificador, um número inteiro, etc.) e pelo seu valor e outros atributos. Este valor vai depender do tipo do token e normalmente corresponde à sequência de caracteres realmente lida da entrada. 
9 – Existem vários geradores de análise léxica, porém, cada um possui sua especificidade em relação à linguagem que o mesmo utiliza para realizar tal análise, por exemplo, o software “Flex” foi construído segundo as normas da linguagem C. Cite um outro gerador e qual a linguagem o mesmo utiliza para realizar a análise léxica.
JFlex - é um gerador de analisador léxico escrito em Java. Ele recebe como entrada uma especificação baseada em um conjunto de expressões regulares e gera um algoritmo que lê os caracteres descritos no arquivo fonte combinando com os padrões definidos na especificação.
10 - Na ocorrência de erros o analisador léxico pode parar ou entrar em laço infinito. A modalidade de pânico pode ser usada para recuperar erros léxicos ignorando os caracteres inválidos até encontrar algum que pertença ao alfabeto ou o fim do arquivo. Quais as formas de recuperar esses erros?
1. remover caracteres estranhos
2. inserir caracteres que faltam
3. substituir caracteres incorretos por corretos
4. trocar dois caracteres adjacentes

Continue navegando