Logo Passei Direto
Buscar

Ferramentas de estudo

Questões resolvidas

Considerando o texto apresentado, avalie as afirmacoes abaixo:
É correto o que se afirma em:
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.
I e IV, apenas.
I, II e IV, apenas.
I e III, apenas.
I, II e III, apenas.
II, III e IV, apenas.

Refletindo sobre máquina de estados, avalie as seguintes asserções e a relação proposta entre elas.
A respeito dessas asserções, assinale a opção correta:
I. O código intermediário pode assumir muitas formas, sendo ele uma estrutura de dados do programa-fonte durante a tradução.
II. O código intermediário representa alguma forma de linearização da árvore sintática ou DAG em forma serial, determinando coeficientes lineares.
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.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

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.
II. Se a expressão regular for constante, um inicializador pode ser usado para melhorar o desempenho.
A asserção I é verdadeira, pois usando um inicializador de objeto: “re = /abc\d+/” os inicializadores de objeto compilam a expressão regular quando o script é avaliado.
A asserção II é verdadeira, pois apenas se a expressão regular for constante, um inicializador pode ser usado para melhorar o desempenho.
A alternativa está correta, pois as asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

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.
A que tipo de código o texto faz referência?
Representação intermediária de alto nível.
Análise semântica.
Código de três endereços.
Código intermediário.
Otimização de código.

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.
Considerando as informações apresentadas, uma FSM pode ser usada para construir o quê?
Uma string.
Árvore de sintaxe.
Grafo dirigido.
Gramáticas regulares.
Estados finais.

Refletindo sobre o histórico da compilação, avalie as seguintes asserções e a relação proposta entre elas.
A respeito dessas asserções, assinale a opção correta:
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.
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.
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 falsas.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
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.
A respeito do texto, assinale a opção correta:
A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para alguma máquina virtual.
A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada diretamente pelo interpretador.
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.
Na fase de análise da compilação, o texto fonte do programa é lido, então ele é incluído em um único bloco elemental e feita a sua análise estática.
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.

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 determinísticos linearmente limitados de dois lados.
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: |(S).
III. O Analisador de Gramáticas LL(K) é único. Uma gramática recursiva à esquerda não pertence a LL(k) para qualquer k.
I e III, apenas.
I, apenas.
III, apenas.
I, II e III.
II e III, apenas.

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 o texto apresentado, avalie as afirmacoes abaixo:
É correto o que se afirma em:
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.
I e IV, apenas.
I, II e IV, apenas.
I e III, apenas.
I, II e III, apenas.
II, III e IV, apenas.

Refletindo sobre máquina de estados, avalie as seguintes asserções e a relação proposta entre elas.
A respeito dessas asserções, assinale a opção correta:
I. O código intermediário pode assumir muitas formas, sendo ele uma estrutura de dados do programa-fonte durante a tradução.
II. O código intermediário representa alguma forma de linearização da árvore sintática ou DAG em forma serial, determinando coeficientes lineares.
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.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

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.
II. Se a expressão regular for constante, um inicializador pode ser usado para melhorar o desempenho.
A asserção I é verdadeira, pois usando um inicializador de objeto: “re = /abc\d+/” os inicializadores de objeto compilam a expressão regular quando o script é avaliado.
A asserção II é verdadeira, pois apenas se a expressão regular for constante, um inicializador pode ser usado para melhorar o desempenho.
A alternativa está correta, pois as asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

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.
A que tipo de código o texto faz referência?
Representação intermediária de alto nível.
Análise semântica.
Código de três endereços.
Código intermediário.
Otimização de código.

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.
Considerando as informações apresentadas, uma FSM pode ser usada para construir o quê?
Uma string.
Árvore de sintaxe.
Grafo dirigido.
Gramáticas regulares.
Estados finais.

Refletindo sobre o histórico da compilação, avalie as seguintes asserções e a relação proposta entre elas.
A respeito dessas asserções, assinale a opção correta:
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.
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.
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 falsas.
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
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.
A respeito do texto, assinale a opção correta:
A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para alguma máquina virtual.
A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada diretamente pelo interpretador.
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.
Na fase de análise da compilação, o texto fonte do programa é lido, então ele é incluído em um único bloco elemental e feita a sua análise estática.
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.

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 determinísticos linearmente limitados de dois lados.
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: |(S).
III. O Analisador de Gramáticas LL(K) é único. Uma gramática recursiva à esquerda não pertence a LL(k) para qualquer k.
I e III, apenas.
I, apenas.
III, apenas.
I, II e III.
II e III, apenas.

Prévia do material em texto

AO2
Entrega 22 fev em 23:59
Pontos 6
Perguntas 10
Disponível 29 jan em 23:59 - 22 fev em 23:59
Limite de tempo Nenhum
Instruções
Este teste não está mais disponível, pois o curso foi concluído.
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 13 minutos 5,4 de 6
Pontuação deste teste: 5,4 de 6
Enviado 11 fev em 16:41
Esta tentativa levou 13 minutos.

Pergunta 1
0,6 / 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).
3
A+
A
A-
https://famonline.instructure.com/courses/35927/quizzes/178749/history?version=1
 A→β. a será um item LR(0).
 A→βγ será um item LR(0).
Correto!
 A→β . γ será um item LR(0).
A alternativa está correta, pois se A →α for uma escolha de produção, e se β e γ forem duas cadeias
quaisquer de símbolos (incluindo a cadeia vazia ε) tais que βγ = α então A→β . γ será um item LR(0).
A denominação item LR(0) se deve ao fato de as cadeias não conterem referências explícitas a
verificação à frente. 
 A→βy. a será um item LR(0).
 → A. y será um item LR(0).

Pergunta 2
0,6 / 0,6 pts
 
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.
 
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
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.
A+
A
A-
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/
http://hjemmesider.diku.dk/~torbenm/Basics/
 II e III, apenas.
 I, apenas.
Correto!
 I e II, apenas.
A alternativa está correta, pois apenas as afirmativas I e II estão corretas.
A afirmativa I está correta, pois na prática, uma unidade lexical geralmente possui um único atributo:
um ponteiro para a entrada da tabela de símbolos onde as informações da unidade léxica são
preservadas; o ponteiro torna-se o atributo da unidade léxica.
A afirmativa II está correta, pois o analisador léxico reúne informações sobre unidades lexicais em
atributos associados a eles, inserindo informações de alguns tokens, como por exemplo os
identificadores.
A afirmativa III está incorreta, pois a análise léxica está no início da cadeia de compilação e colabora
com a análise gramatical para passar da sintaxe concreta à sintaxe abstrata.
 I, II e III.
 III, apenas.

Pergunta 3
0,6 / 0,6 pts
 
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:
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.
A+
A
A-
 I e IV, apenas.
 I, II e IV, apenas.
 I e III, apenas.
Correto!
 I, II e III, apenas.
A alternativa está correta, pois apenas as afirmativas I, II e III estão corretas.
A afirmativa I está incorreta, pois os identificadores são os nomes que o usuário atribui a várias
partes do programa. Eles são chamados assim porque "identificam" um endereço de memória
específico
A afirmativa II está correta, pois do ponto de vista teórico, o analisador léxico não é uma parte
obrigatória do compilador. Todas as suas funções podem ser executadas na fase de análise, pois
são totalmente reguladas pela sintaxe.
A afirmativa III está correta, pois é possível usar uma técnica de análise simples, eficiente e
teoricamente bem desenvolvida para selecionar e analisar lexemas no texto, enquanto algoritmos de
análise bastante complexos são usados na etapa de análise sintática das construções da língua de
origem.
A afirmativa IV está incorreta, pois as funções desempenhadas pelo analisador léxico e a
composição dos tokens que eles distinguem no texto da fonte do programa podem variar
dependendo da versão do compilador. Basicamente, os analisadores léxicos excluem comentários e
espaços insignificantes do texto do programa fonte, bem como extraem lexemas dos seguintes tipos:
identificadores, string, caracteres e constantes numéricas, sinais de operação, separadores e
palavras-chave (de serviço) da linguagem de entrada.
 II, III e IV, apenas.
 
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:
A+
A
A-

Pergunta 4
0,6 / 0,6 pts
 A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
 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 falsas.
Correto!
 As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
A alternativa está correta, pois as asserções I e II são proposições verdadeiras, e a II é uma
justificativa da I.
A asserção I é verdadeira, pois o código intermediário pode assumir muitas formas – existem quase
tantos estilos de código intermediário quanto compiladores. O programador de um compilador pode
preferir gerar uma nova forma de representação intermediária, a partir da árvore sintática, que se
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+
A
A-
assemelhe melhor ao código-alvo ou substitua a árvore sintática por essa representação
intermediária, e em seguida gerar o código-alvo a partir dessa nova representação.
A asserção II é verdadeira e justifica a asserção I, pois representam alguma forma de linearização da
árvore sintática, ou seja, uma representação da árvore sintática em forma sequencial.
 As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

Pergunta 5
0 / 0,6 pts
 As asserções I e II são proposições falsas.
 As asserções I e II são verdadeiras, mas a II não é uma justificativa da I.
 A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
Você respondeu
 A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
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:
A+
A
A-
A alternativa está correta, pois as asserções I e II são proposições verdadeiras, e a II é uma
justificativa da I.
A asserção I é verdadeira, pois usando um inicializador de objeto:
 “re = /abc\d+/” os inicializadores de objeto compilam a expressão regular quando o script é avaliado.
A asserção II é verdadeira, pois apenas se a expressão regular for constante, um inicializador pode
ser usado para melhorar o desempenho.
Resposta correta
 As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

Pergunta 6
0,6 / 0,6 pts
 Representação intermediária de alto nível.
 Análise semântica.
 Código de três endereços.
Correto!
 Código intermediário.
A alternativa está correta, pois a geração de código intermediário (ou geração direta de código-alvo
sem código intermediário) pode ser vista como uma computação de atributos similar a muitos dos
problemas de atributos. Em razão da complexidade da geração de código, um compilador
tipicamente quebra essa fase em vários passos, que usam diversas estruturas de dados
intermediárias, e frequentemente requerem alguma forma de código abstrato, denominado de
geração de código intermediário.
 Otimização de código.
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?
A+
A
A-

Pergunta 7
0,6 / 0,6 pts
 Uma string.
Correto!
 Árvore de sintaxe.
A alternativa está correta. Uma FSM pode ser usada para construir uma árvore de sintaxe, que
mostra a derivação (ou seja, como a string foi construída) da string.
 Grafo dirigido.
 Gramáticas regulares.
 Estados finais.

Pergunta 8
0,6 / 0,6 pts
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.
 
Considerando as informações apresentadas, uma FSM pode ser usada para construir o quê? 
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.
 
A+
A
A-
Correto!
 As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
A alternativa está correta. As asserções I e II são proposições verdadeiras, e a II é uma justificativa
da I.
A asserção I é verdadeira, pois muitos sabem que o compilador C foi escrito no próprio C
(semelhante a como o grupo Niklaus Wirth implementou o compilador Pascal em Pascal um pouco
antes). Muito menos conhecido, no entanto, é o fato de que seus criadores seguiram amplamente os
passos do compilador da linguagem B, que foi escrito por Ken Thompson no próprio B.
A asserção II é verdadeira e é uma justificativa da I, pois o trabalho de McIlroy resultou no
compilador do compilador TMGL. Com sua ajuda, a promoção de software (bootstrapping) foi
realizada primeiro na linguagem B e depois na linguagem C. Em outras palavras, os compiladores
para essas linguagens foram escritos nas mesmas linguagens.
 As asserções I e II são proposições falsas.
 As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
 A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
 A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

Pergunta 9
0,6 / 0,6 pts
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 respeito dessas asserções, assinale a opção correta:
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+
A
A-
Correto!
 
A linguagem de destino também pode ser outra linguagem de programação ou uma linguagem de máquina para
alguma máquina virtual.
Esta alternativa é a correta, pois a linguagem de destino também pode ser outra linguagem de
programação (trans-compilação) ou uma linguagem de máquina para alguma máquinavirtual (tal
linguagem é geralmente chamada de bytecode). O bytecode, por sua vez, é executado pelo
interpretador de bytecode.
 
A linguagem de destino pode ser uma linguagem de máquina, saída do compilador não pode ser executada
diretamente pelo interpretador.
 
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.
 
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.
 
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.

Pergunta 10
0,6 / 0,6 pts
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.
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
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:
A+
A
A-
 I e III, apenas.
 I, apenas.
 III, apenas.
Correto!
 I, II e III.
A alternativa está correta, pois as afirmativas I, II e III estão corretas.
A afirmativa I está correta, pois como as ações na análise LL(1) dependem apenas do próximo par
de símbolos não terminal-próximo, essa análise é fácil de programar. A descida recursiva é uma
maneira de codificar a análise LL(1).
A afirmativa II está correta, pois para codificar tabelas o compilador converter as cadeias da
linguagem correspondentes à gramática:
S: T{+T}
T: E {*E}
E: |(S)
A afirmativa III está correta, pois qualquer gramática LL(k) é única. Uma gramática recursiva à
esquerda não pertence a LL(k) para qualquer k.. Às vezes é possível converter uma gramática não
LL(1) em sua gramática LL(1) equivalente eliminando a recursão à esquerda e a fatoração. No
entanto, o problema da existência de uma LL(k)-gramática equivalente para uma não-LL(k)-
gramática arbitrária é indecidível.
 II e III, apenas.
Pontuação do teste: 5,4 de 6
 
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: |(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:
A+
A
A-

Mais conteúdos dessa disciplina