Logo Passei Direto
Buscar

AO2 - Compiladores - Nota 3.6 de 6.0

Ferramentas de estudo

Questões resolvidas

Considerando as reflexões apresentadas, assinale a opção correta.

A) A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada diretamente pelo interpretador.
B) Na fase de síntese da compilação, com base na representação final e outras informações são feitos mapeamentos no código-alvo.
C) Na fase de análise da compilação, o texto fonte do programa é lido, então ele é incluído em um único bloco elementar e feita a sua análise estática.
D) A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para alguma máquina virtual.
E) Para cada lexema, o analisador gera um token, que é uma combinação de um símbolo semântico (o nome do tipo de token) e um outro conjunto de lexemas.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Considerando as reflexões apresentadas, assinale a opção correta.

A) A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada diretamente pelo interpretador.
B) Na fase de síntese da compilação, com base na representação final e outras informações são feitos mapeamentos no código-alvo.
C) Na fase de análise da compilação, o texto fonte do programa é lido, então ele é incluído em um único bloco elementar e feita a sua análise estática.
D) A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para alguma máquina virtual.
E) Para cada lexema, o analisador gera um token, que é uma combinação de um símbolo semântico (o nome do tipo de token) e um outro conjunto de lexemas.

Prévia do material em texto

AO2
Iniciado: 3 jun em 20:33
Instruções do teste

Pergunta 1 0,6 pts
Importante:
Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que
você clique em "FAZER O QUESTIONÁRIO", no final da página.
Leia os textos a seguir:
 
Texto I
As gramáticas conhecidas como LL são as gramáticas que podem ser analisadas por parser tipo LL.
O primeiro L determina que são analisadas da esquerda para a direita, e o segundo L determina que
cria a árvore de derivação mais à esquerda. Gramáticas genéricas livres de contexto são
processáveis por meio de algoritmos genéricos, por exemplo, o algoritmo de Earley. No entanto,
esses algoritmos apresentam, no pior dos casos, um processamento cuja complexidade é O(n ), em
que n é o número de símbolos da sequência de entrada. Contudo, existem subconjuntos de
gramáticas que podem ser processadas de modo mais eficiente. Essas formas mais simples são
ainda suficientemente genéricas em relação a quase todas as linguagens concebidas para o
processamento informático. O analisador LR(0) é basicamente um analisador. O objetivo do
analisador é processar o fluxo de entrada de tokens (os elementos básicos da linguagem que o
analisador léxico produz com base no fluxo de entrada de caracteres).
 
Fonte: MONGENSEN, T. Basics of compiler design. Copenhagen: University of Copenhagen,
2010. Torben Mogensen DIKU. Disponível em: http://hjemmesider.diku.dk/~torbenm/Basics/
(http://hjemmesider.diku.dk/~torbenm/Basics/) . Acesso em: 17 abr. 2023.
 
Texto II
Imagine a seguinte situação em que A →α for uma escolha de produção, e se β e γ forem duas
cadeias quaisquer de símbolos (incluindo a cadeia vazia ε) tais que βγ = α.
 
Considerando as reflexões apresentadas, assinale a opção correta.
 
3
A+
A
A-
NOTA: 3.6 de 6.0
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/

Pergunta 2 0,6 pts
A→βγ será um item LR(0).
A→βy. a será um item LR(0).
→ A. y será um item LR(0).
A→β. a será um item LR(0).
A→β . γ será um item LR(0).
Leia o texto a seguir:
 
O código intermediário é particularmente útil quando o objetivo do compilador é produzir código
extremamente eficiente, pois isso requer uma quantidade significativa de análise das propriedades
do código-alvo, o que é facilitado pelo uso do código intermediário.
 
Fonte: LOUDEN, K. C. Compiladores: princípios e práticas. Cengage Learning Brasil, 2004.p. 401.
 
Refletindo sobre máquina de estados, avalie as seguintes asserções e a relação proposta entre elas.
 
I. O código intermediário pode assumir muitas formas, sendo ele uma estrutura de dados do
programa-fonte durante a tradução.
 
PORQUE
 
II. O código intermediário representa alguma forma de linearização da árvore sintática ou DAG em
forma serial, determinando coeficientes lineares.
 
A respeito dessas asserções, assinale a opção correta:
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
A+
A
A-

Pergunta 3 0,6 pts
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
As asserções I e II são proposições falsas.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Leia o texto a seguir:
 
Um analisador léxico é um programa de computador que divide um fluxo de texto em tokens e marca
seu tipo. Ele recebe a entrada como uma sequência arbitrariamente longa de caracteres, chamada
de string de entrada, e produz a saída como uma ou mais sequências de caracteres, chamadas de
sequências de token.
 
Considerando o texto, avalie as afirmações abaixo:
 
I. Os identificadores são os nomes que o usuário atribui a várias partes do programa, que
identificam um endereço de memória específico.
II. O analisador léxico não é uma parte obrigatória do compilador, pois suas funções podem ser
executadas na fase de análise.
III. É possível usar técnica de análise simples para selecionar e analisar lexemas no texto e
algoritmos complexos na etapa de análise sintática.
IV. As funções desempenhadas pelo analisador léxico e a composição dos tokens são igualitários de
acordo com a versão do compilador.
 
É correto o que se afirma em:
I, II e III, apenas.
II, III e IV, apenas.
I, II e IV, apenas.
A+
A
A-

Pergunta 4 0,6 pts

Pergunta 5 0,6 pts
I e IV, apenas.
I e III, apenas.
Leia o texto abaixo:
 
A geração de código é a fase mais complexa de um compilador, pois depende não apenas das
características da linguagem-fonte, mas também de informações detalhadas da arquitetura-alvo, da
estrutura do ambiente de execução e do sistema operacional da máquina-alvo.
 
Fonte: LOUDEN, K. C. Compiladores: princípios e práticas. Cengage Learning Brasil, 2004. p. 415.
 
Em razão da complexidade da geração de código, um compilador tipicamente quebra essa fase em
vários passos e frequentemente requerem alguma forma de código abstrato.
 
A que tipo de código o texto faz referência?
Representação intermediária de alto nível.
Código de três endereços.
Código intermediário.
Otimização de código.
Análise semântica.
Leia o texto a seguir:
 
As linguagens sensíveis ao contexto são a última classe de linguagens que podem ser efetivamente
reconhecidas pelos computadores. Especialistas dirão que eles são permitidos por autômatos não
A+
A
A-

Pergunta 6 0,6 pts
determinísticos linearmente limitados de dois lados. Para admitir cadeias de uma linguagem sem
restrições, no caso geral, é necessária uma calculadora universal (máquina de Turing, máquina com
número ilimitado de registradores, etc.). Linguagens sensíveis ao contexto e linguagens sem
restrições não são usadas na construção de compiladores e não serão mais consideradas.
 
Considerando as informações, avalie as afirmativas abaixo:
 
I. Como as ações na análise LL(1) necessitam do próximo par de símbolos não terminal-próximo,
facilita a programação.
II. A conversão de uma cadeia da linguagem corresponde à gramática:
S: T{+T}
T: E {*E}
E: <operando>|(S)
III. O Analisador de Gramáticas LL(K) é único. Uma gramática recursiva à esquerda não pertence a
LL(k) para qualquer k.
 
É correto o que se afirma em:
I, II e III.
III, apenas.
I, apenas.
II e III, apenas.
I e III, apenas.
Leia o texto a seguir:
 
A análise léxica é utilizada essencialmente na categorização dos elementos de uma linguagem em
classes de símbolos, em vez de caracteres individuais. O processamento da parte regular de uma
A+
A
A-

Pergunta 7 0,6 pts
linguagem denomina-se análise léxica. A análise léxica tem a vantagem de ser um processo que,
podendo ser formalmente descrito através de expressões regulares, pode produzir uma rotina que
realiza essa análise. Essa rotina modela um autômato finito derivado matematicamente das
expressões regulares especificadas
 
Fonte: SANTOS, P. R.; LANGLOIS, T. Compiladores: Da Teoria à Prática. Grupo GEN, 2018, p. 16.
 
Considerando o texto apresentado, avalie as afirmações abaixo:
 
I. Uma unidade lexical geralmente possui um único atributo: um ponteiro para a entrada da tabela
de símbolos.
II. O analisador léxico agrupa informações das unidades lexicais em atributos associados a eles.
III. A análise léxica está no final da cadeia de compilação, passando da sintaxe concreta à sintaxe
abstrata.
 
É correto o que se afirma em:
I e II, apenas.
II e III, apenas.
III, apenas.
I, apenas.
I, II e III.
Leia o texto a seguir:
 
Máquinas de estado finito (FSM), também chamadas de autômatos de estado finito (FSA), são
modelos conceituais para reconhecer, analisar e gerar strings em uma linguagem formal. O poder do
FSM vem da capacidade de definir claramente diferentes comportamentos em diferentes condições.
Normalmente, o FSM é usado com scripts comportamentais de loop que avaliam constantemente a
situação atual em um loop ou com eventos.
A+
AA-

Pergunta 8 0,6 pts
 
Considerando as informações apresentadas, uma FSM pode ser usada para construir o quê? 
Árvore de sintaxe.
Uma string.
Grafo dirigido.
Estados finais.
Gramáticas regulares.
Leia o texto a seguir:
 
Um programa compilado é executado mais rapidamente porque é um código de máquina. No
entanto, em computadores modernos, a desaceleração na velocidade de execução durante a
interpretação geralmente não é perceptível. Além disso, as linguagens interpretadas apresentam
uma série de vantagens, entre elas a ausência de etapas preparatórias para a execução do
programa, o que pode ser importante para quem está começando a aprender programação.
 
Refletindo sobre o histórico da compilação, avalie as seguintes asserções e a relação proposta entre
elas.
 
I. Muitas pessoas sabem que o compilador C foi escrito no próprio C. Muito menos conhecido, no
entanto, é o fato de que seus criadores seguiram amplamente os passos do compilador da
linguagem B.
 
PORQUE
 
II. O trabalho de McIlroy resultou no compilador TMGL. Com sua ajuda, a promoção de software
(bootstrapping) foi realizado primeiro na linguagem B e depois na linguagem C.
 
A+
A
A-

Pergunta 9 0,6 pts
A respeito dessas asserções, assinale a opção correta:
As asserções I e II são proposições falsas.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
Leia o texto a seguir:
 
Expressões regulares são usadas em quase todas as linguagens. É uma ferramenta muito poderosa
que permite verificar se o conteúdo de uma variável tem a forma que se espera. Por exemplo, se
recuperarmos um número de telefone, esperamos que a variável seja composta de números e
espaços (ou traços), mas nada mais. As expressões regulares permitem não apenas avisá-lo sobre
um caractere indesejado, mas também remover/modificar todos aqueles que não são desejáveis.
 
Refletindo sobre expressões regulares, avalie as seguintes asserções e a relação proposta entre
elas.
 
I. Na expressão: “re = /abc\d+/” ocorre a compilação quando o script é avaliado.
 
PORQUE
 
II. Se a expressão regular for constante, um inicializador pode ser usado para melhorar o
desempenho.
 
A respeito dessas asserções, assinale a opção correta:
As asserções I e II são proposições falsas.
A+
A
A-

Pergunta 10 0,6 pts
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
As asserções I e II são verdadeiras, mas a II não é uma justificativa da I.
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
Leia o texto a seguir:
 
Compilação é a tradução (transformação) de um texto de programa escrito em um idioma (origem)
em um texto equivalente (preservando a semântica) em outro idioma (destino). Um compilador é um
programa que lê o texto do programa na linguagem fonte e o compila. Uma abordagem alternativa é
a interpretação, ou seja, execução direta de operações especificadas no código-fonte do programa. 
Um interpretador é um programa que lê o código-fonte e o interpreta. Além disso, o compilador pode
analisar estaticamente o código-fonte do programa, relatar erros e emitir avisos sobre possíveis
problemas.
 
Considerando as reflexões apresentadas, assinale a opção correta.
A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada
diretamente pelo interpretador.
Na fase de síntese da compilação, com base na representação final e outras informações são feitos mapeamentos
no código-alvo.
Na fase de análise da compilação, o texto fonte do programa é lido, então ele é incluído em um único bloco
elementar e feita a sua análise estática.
A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para
alguma máquina virtual.
Para cada lexema, o analisador gera um token, que é uma combinação de um símbolo semantico (o nome do tipo
de token) e um outro conjunto de lexemas.
A+
A
A-
Salvo em 16:27 Enviar teste
A+
A
A-

Mais conteúdos dessa disciplina