04/06/25, 18:13 Teste: AO2
AO2
Iniciado: 4 jun em 17:39
Instruções do teste
Importante:
A+
Caso você esteja realizando a atividade através do aplicativo "Canvas Student", é necessário que
A
você clique em "FAZER O QUESTIONÁRIO", no final da página.
A-
Pergunta 1 0,6 pts
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 asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
[Link] 1/9
04/06/25, 18:13 Teste: AO2
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 falsa, e a II é uma proposição verdadeira.
A+
Pergunta 2 0,6 pts
A
Leia o texto a seguir:
A-
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.
I e IV, apenas.
I e III, apenas.
[Link] 2/9
04/06/25, 18:13 Teste: AO2
Pergunta 3 0,6 pts
Leia os textos a seguir:
Texto I
A+
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
A
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, A-
esses algoritmos apresentam, no pior dos casos, um processamento cuja complexidade é O(n3), 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: [Link]
([Link] . 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.
A→β. a será um item LR(0).
A→βγ será um item LR(0).
→ A. y será um item LR(0).
A→βy. a será um item LR(0).
[Link] 3/9
04/06/25, 18:13 Teste: AO2
A→β . γ será um item LR(0).
Pergunta 4 0,6 pts
Leia o texto a seguir:
A+
Um programa compilado é executado mais rapidamente porque é um código de máquina. No
A
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 A-
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 respeito dessas asserções, assinale a opção correta:
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.
As asserções I e II são proposições falsas.
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
[Link] 4/9
04/06/25, 18:13 Teste: AO2
Pergunta 5 0,6 pts
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 umaA+
linguagem denomina-se análise léxica. A análise léxica tem a vantagem de ser um processo que,
A
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 A-
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.
III, apenas.
I, apenas.
II e III, apenas.
I, II e III.
Pergunta 6 0,6 pts
Leia o texto a seguir:
[Link] 5/9
04/06/25, 18:13 Teste: AO2
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+
Considerando as informações apresentadas, uma FSM pode ser usada para construir o quê?
A
Uma string.
A-
Árvore de sintaxe.
Gramáticas regulares.
Estados finais.
Grafo dirigido.
Pergunta 7 0,6 pts
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
[Link] 6/9
04/06/25, 18:13 Teste: AO2
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:
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I. A+
A
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
A-
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.
As asserções I e II são proposições falsas.
Pergunta 8 0,6 pts
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.
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.
[Link] 7/9
04/06/25, 18:13 Teste: AO2
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.
A+
Pergunta 9 0,6 pts
A
Leia o texto abaixo:
A-
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?
Otimização de código.
Análise semântica.
Código intermediário.
Código de três endereços.
Representação intermediária de alto nível.
Pergunta 10 0,6 pts
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
[Link] 8/9
04/06/25, 18:13 Teste: AO2
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
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. A-
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:
III, apenas.
I e III, apenas.
I, II e III.
I, apenas.
II e III, apenas.
Salvo em 18:13 Enviar teste
[Link] 9/9