Buscar

compiladores e computabilidade

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 7 páginas

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 6, do total de 7 páginas

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

Prévia do material em texto

11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 1/7
 
Fazer teste: QUESTIONÁRIO UNIDADE I
COMPILADORES E COMPUTABILIDADE D571_13701_A_D_20191 CONTEÚDO
Informações do teste
Descrição
Instruções
Várias tentativas Este teste permite 3 tentativas. Esta é a tentativa número 1.
Forçar conclusão Este teste pode ser salvo e retomado posteriormente.
a.
b.
c.
d.
e.
PERGUNTA 1
 Um analisador sintático LL(1) somente pode ser construído para uma classe
restrita de gramáticas, que também recebem este mesmo nome. Uma de suas
características é que suas produções não apresentem pre�xos comuns para
cadeias distintas derivadas a partir de um mesmo não-terminal. Ou seja, se duas
produções que começam com o mesmo símbolo ou conjunto de símbolos
(pre�xo), por exemplo, como nas regras A→αβ e A→αδ e sendo First(α) ≠ ∅,
implicará numa interseção entre os conjuntos First(αβ) e First(αδ) e o analisador
não será capaz de decidir qual regra escolher utilizando um único símbolo da
entrada. Usualmente o problema pode ser resolvido substituindo as produções
da gramática que causam o problema por outras que acomodem essa restrição,
mantendo a equivalência entre elas. Supondo a produção S → if E then S else S
� | if E then S � | K e considerando ε como a sentença vazia, quais dentre as
alternativas a seguir representa uma substituição válida para resolver o
problema apresentado e obter uma gramática equivalente que seja LL(1)?.
S → if E then S R � | K 
R → else S | ε
S → if E then S R 
R → else S � | ε
S → if E then R � 
R → S else S | K
S → if E then S R 
R → else S � | if E then S � | K
S → if E then R � | ε 
R → S | else S | K
0,5 pontos   Salva
PERGUNTA 2
Os métodos ligados a análise sintática se agrupam em ascendentes e
descendentes, de acordo com a forma como derivam a estrutura sintática da
sentença do programa. Assinale a alternativa incorreta a respeito dos
analisadores sintáticos
0,5 pontos   Salva
?
 Estado de Conclusão da Pergunta:
ASSOCIADA / COLIGADA BIBLIOTECAS MURAL DO ALUNO
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
CONTEÚDOS ACADÊMICOS MICHELLE CHANTAL
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 2/7
a.
b.
c.
d.
e.
analisadores sintáticos.
Nos métodos chamados de descendentes (ou top‐down), para cada nó da
árvore de derivação, o analisador deve decidir qual é a regra A→α que
deve ser aplicada ao nó corrente (rotulado com o não terminal A), criando
nós �lhos rotulados com cada um dos símbolos de α.
Os métodos ascendentes (ou bottom‐up) constroem a árvore de baixo
para cima, então o analisador deve encontrar os vários símbolos que
compõem a sentença α e escolher quando deve ser aplicada redução pela
regra A→α.
Independentemente de como os métodos de análise constroem
verticalmente a árvore (quer sejam de baixo para cima ou de cima para
baixo), em ambos os nós da árvore surgem da esquerda para a direita. A
razão disso é que, tanto em um quanto em outro, a escolha das regras
baseiam-se na cadeia a ser gerada (programa) e o arquivo sempre é lido
do início para o �m.
Dentre a categoria de analisadores descendentes podemos citar os parses
Descendentes Recursivos, de Cocke‐Younger‐Kasami e os analisadores do
tipo LR(k).
Os parses do tipo LR(k) e LALR são exemplos de analisadores que
constroem árvores de maneira ascendente. 
a.
b.
c.
d.
e.
PERGUNTA 3
 Analisadores sintáticos do tipo LL(k) realizam a veri�cação da sentença de modo
descendente, entretanto tem como restrição poderem ser aplicados apenas aos
casos em que a gramática da linguagem é LL(k). Considerando a produção S → S
x K | K qual, dentre as alternativas a seguir, poderia substituí-la de modo a
eliminar a recursão a esquerda e criar uma gramática equivalente? (Considere ε
representando a sentença vazia).
0,5 pontos   Salva
a.
PERGUNTA 4
Um analisador sintático descendente constrói a árvore de derivação do
programa de cima para baixo, isto é, partindo da raiz (símbolo inicial da
gramática) e seguindo em direção as folhas (símbolos do programa). Todos os
métodos que adotam esta estratégia seguem esta abordagem, variando
pontualmente a forma como resolvem o problema de selecionar a regra a ser
aplicada em cada momento. Pode-se a�rmar sobre o Analisador Descendente
Recursivo:
0,5 pontos   Salva
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 3/7
b.
c.
d.
e.
É um reconhecedor obtido através da transcrição das regras de produção
da gramática na forma de um conjunto de sub-rotinas. Assim, cada sub-
rotina é responsável por veri�car os elementos relativos a uma produção
em particular. O processo de reconhecimento se inicia com a chamada da
sub-rotina equivalente a regra que deriva o símbolo inicial da gramática. A
partir disto, chamadas subsequentes para outras sub-rotinas são
realizadas sempre que um símbolo não terminal é encontrado na
produção. Quando todos os elementos são consumidos, a chamada inicial
retorna sinalizando que se trata de uma sentença é válida.
Consiste no uso de uma tabela de movimentos que determina quais
regras de produção devem ser utilizadas em cada momento do processo.
A análise tem início aplicando a regra dada na primeira entrada da tabela e
termina quando todos os elementos da entrada forem consumidos pelo
analisador.
Diferencia-se de outros métodos descendentes por iniciar o processo de
análise através de uma operação recursiva de empilhamento, em que
cada token do programa é colocado em uma estrutura de dados para
processamento posterior. A seguir, os símbolos são um a um
desempilhados e confrontados com a sequência esperada na derivação
mais à direita (right-most) invertida.
Trata-se de um dos métodos descendentes mais e�cientes e amplamente
adotado no desenvolvimento de compiladores comerciais, pois seu caráter
recursivo permite a análise recorrente das estruturas sintáticas da
linguagem de maneira ótima além de consumir pouco recurso
computacional. Adicionalmente, dada a capacidade de ser aplicado a
qualquer tipo de gramática, é considerado um modelo universal.
É considerado apenas um modelo teórico, pois os procedimentos
recursivos são úteis apenas para a compreensão e formulação de
problemas. Dentro da computação os algoritmos recursivos são os mais
complexos e difíceis de serem compreendidos, tornando impossível a
implementação de um reconhecedor sintático que use esta técnica. 
a.
b.
c.
PERGUNTA 5
O processo de programar um computador para realizar uma determinada tarefa,
quando analisado em relação às atividades que são necessárias desde a
codi�cação do algoritmo até a execução propriamente dita do programa, pode
ser visto como um processo complexo e que envolve vários elementos, cada qual
com propósito bastante especí�co. Nesse contexto, assinale a alternativa que
descreve o propósito e a principal tarefa realizada pelos compiladores. 
Facilitar a programação de computadores, pois oferecem recursos que
possibilitam a escrita do código (edição de textos), assim funcionalidades
ligadas a execução e depuração (debug).
Possibilitar a programação de computadores utilizando linguagens de alto
nível (que permitem descrever as ideias em termosmais abstratos e mais
independentes da arquitetura da máquina), pois são responsáveis pela
tradução do algoritmo em seu correspondente em um linguagem de baixo
nível.
Auxiliar na tarefa de desenvolvimento, permitindo a criação de programas
com menos erros. Para isso, devem oferecer recursos tais como. Auto
0,5 pontos   Salva
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 4/7
d.
e.
completar para comandos, veri�cação de declarações de variáveis, inícios
e términos de blocos, além de outras veri�cações estruturais.
Apoiar o processo de desenvolvimento portável, oferecendo tradução do
código para diferentes arquiteturas e plataformas.
Permitir que as atividades ligadas a programação de computadores sejam
realizadas em um ambiente integrado, provendo recursos relacionados
desde a escrita do código até a sua execução no sistema operacional. 
 
a.
b.
c.
d.
e.
PERGUNTA 6
 A gramática dada a seguir é LL(1). Nela os elementos +, *, (, ) e id con�guram
como símbolos terminais, enquanto os E, T, F, E’ e T’ são considerados não-
terminais. A tabela de movimentos M fornece ao reconhecedor o número da
regra que deve ser aplicada durante a análise da sentença, sendo necessário
apenas conhecer o não-terminal a ser derivado e o primeiro símbolo presente no
restante da entrada.
 
Sobre a construção de analisadores sintáticos deste tipo é incorreto a�rmar que:
A tabela indica que a regra 1 deve ser aplicada quando um símbolo não-
terminal E estiver sendo derivado e na entrada houver algum elemento
que pertença ao conjunto First(TE’).
Por ser uma produção que deriva para vazio, a regra 3 somente será
aplicada se o símbolo não-terminal sendo derivado for o E’ e o símbolo
corrente na entrada pertencer ao conjunto Follow(E’).
Células marcadas com “-“ indicam um movimento não previsto e assim,
qualquer situação que leve o reconhecedor a uma delas deve ser
entendida como um problema sintático da sentença e reportado como um
erro.
A aplicação da regra 8 deve ser feita antes da regra 7, segundo a
interpretação que temos da tabela. Esse fato se comprova ao observarmos
que o símbolo “(“ poderia ocorrer imediatamente após um “id” segundo o
que determina as produções da gramática.
Regras de produção que apresentam pre�xos comuns para o mesmo não-
terminal impedem a construção de um analisador deste tipo, pois
implicarão em duas ou mais regras válidas (aplicáveis) para a mesma
combinação de símbolos. Ou seja, a tabela �caria com dois ou mais
valores em uma mesma célula.
0,5 pontos   Salva
PERGUNTA 7
Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os
movimentos realizados por um reconhecedor ascendente para esta cadeia?
G = ({L S} {“(“ ”)” ”a” ” ”} L P )
0,5 pontos   Salva
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 5/7
a.
b.
c.
d.
e.
G = ({L,S}, { ( , ) , a , , }, L, P ) 
P. L → (S) 
S → I,S | I 
I → a | L
(a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,(a,a)) ⇒ (I,I,
(I,a)) ⇒(I,I,(I,I)) ⇒ (I,I,(I,S)) ⇒ (I,I,(S)) ⇒ (I,I,L) ⇒ (I,I,I) ⇒ (I,I,S) ⇒ (I,S) ⇒ (S) ⇒ L.
(a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I,(a,a)) ⇒ (I,I,
(I,a)) ⇒(I,I,(S,a)) ⇒ Erro, cadeia inválida.
(a,(a),(a,a)) ⇒ (a,(a),(a,I)) ⇒ (a,(a),(I,I)) ⇒ (a,(a),(S)) ⇒ (a,(a),(S)) ⇒ (a,(a),L) ⇒ (a,
(a),I) ⇒ (a,(a),S) ⇒ (a,(I),S) ⇒ (a,(S),S) ⇒ (a,L,S) ⇒ (a,I,S) ⇒ (a,S) ⇒ (I,S) ⇒ (S) ⇒ L.
L ⇒ (S) ⇒ (I,S) ⇒ (a,S) ⇒ (a,I,S) ⇒ (a,L,S) ⇒ (a,(S),S) ⇒ (a,(I),S) ⇒ (a,(a),S) ⇒ (a,
(a),I) ⇒ (a,(a),L) ⇒(a,(a),(S)) ⇒ (a,(a),(I,S)) ⇒ (a,(a),(a,S)) ⇒ (a,(a),(a,I)) ⇒ (a,(a),
(a,a)).
L ⇒ (S) ⇒ (I,S) ⇒ (a,S) ⇒ (a,I,S) ⇒ (a,L,S) ⇒ (a,(S),S) ⇒ (a,(I),S) ⇒ (a,(a),S) ⇒ (a,
(a),I) ⇒ (a,(a),L) ⇒(a,(a),(S)) ⇒ (a,(a),(I)) ⇒ (a,(a),(a)) ⇒ Erro, cadeia inválida. 
a.
b.
c.
d.
e.
PERGUNTA 8
Um processo algorítmico tem o objetivo de instruir o executor quanto às ações
que deve realizar e a sua sequência. Para que isso ocorra é necessário que as
instruções sejam dadas num formato compreensível àquele que as realizará. A
programação de computadores é feita descrevendo o algoritmo em instruções
de uma linguagem de programação e que, quando ditas de alto nível,
apresentam características mais próximas à estrutura das linguagens humanas
do que a das máquinas. Analise as alternativas a seguir e assinale a que julgar
incorreta.
Quando a linguagem de codi�cação do algoritmo é de alto nível,
precisamos de um compilador para que o algoritmo original seja traduzido
para um equivalente dado em linguagem de baixo nível.
A construção de compiladores envolve conhecimentos relativos à
estrutura da linguagem e à capacidade de tradução de uma para outra,
preservando �elmente cada uma das funcionalidades descritas no código
fonte.
O uso de métodos formais permite tanto a especi�cação das linguagens
de programação quanto a implementação de reconhecedores para as
suas estruturas, compreendendo assim os fundamentos teóricos para o
estudo e a construção de compiladores.
Os conhecimentos relacionados à construção de compiladores encerram-
se estritamente nesta atividade, oferecendo pouco ou mesmo nenhuma
possibilidade de aplicação em outras áreas que não seja a tradução para
linguagem de máquina.
A compreensão das estruturas de uma linguagem e dos processos que
envolvem a sua de interpretação permite que tais conhecimentos sejam
aplicados não apenas na construção de compiladores, mas também na
interpretação de documentos estruturados, com as páginas da web;
parâmetros em linhas de comandos ou padrões de endereços na web, por
exemplo. 
0,5 pontos   Salva
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 6/7
a.
b.
c.
d.
e.
PERGUNTA 9
Assinale a alternativa que representa a principal tarefa realizada pela Análise
léxica.
Ler o conteúdo do arquivo fonte, caractere a caractere, agrupando-os em
palavras de acordo com a separação dada pelos espaços em branco do
texto.
Percorrer o arquivo fonte, palavra por palavra, analisando sua disposição e
ordem em relação a estrutura da linguagem.
Varrer o arquivo fonte, lendo-o caractere por caractere e agrupá-los em
blocos de um ou mais elementos de acordo com o signi�cado dentro da
linguagem.
Reconhecer os elementos utilizados como identi�cadores, veri�cando o
seu tipo e validando sua compatibilidade em expressões.
Eliminar elementos irrelevantes ao processo, tais como. comentários,
macros e referências de caminhos para bibliotecas (path). 
0,5 pontos   Salva
a.
b.
c.
d.
e.
PERGUNTA 10
Os diferentes elementos básicos que compõe uma linguagem, tais como as
palavras reservadas, identi�cadores, operadores e quaisquer outros lexemas
estabelecidos por ela, também possuem uma estrutura sintática e podem ser
descritos formalmente através de expressões regulares. Entretanto a tarefa de
reconhecimento dos lexemas é realizada pelo Analisador Léxico, acontecendo de
maneira separada daAnálise Sintática do código. 
Assim, um analisador léxico é antes de mais nada um elemento reconhecedor
destas estruturas e pode ser de�nido como um autômato �nito, dada a natureza
regular dos elementos da linguagem. 
Julgue cada uma das a�rmativas a seguir e assinale a alternativa correta. 
I) As gramáticas regulares não permitem a descrição de estruturas aninhadas e
portanto não são capazes de descrever simultaneamente os lexemas e também
as demais estruturas típicas nas linguagem de programação, tais como
parênteses balanceados e comandos aninhados. 
II) A separação das etapas permite utilizar gramaticas regulares, que são mais
simples e mais e�cientes, para a descrição dos lexemas tornado a
implementação do reconhecedor mais fácil. 
III) O analisador sintático �caria muito mais complexo, pois estaria a todo
momento preocupado em prever a ocorrência de símbolos irrelevantes, tais
como espaços em branco, que teriam sido eliminados pela análise léxica.
Apenas o item I é verdadeiros, justi�cando a separação dos analisadores.
Apenas os itens I e III são verdadeiros, mas o item iii não justi�ca a
separação dos analisadores.
Apenas os itens I e II são verdadeiros, mas apenas o item ii justi�ca a
separação dos analisadores.
Todos itens são verdadeiros, mas nenhum deles justi�cam a separação
dos analisadores.
Todos itens são verdadeiros e os motivos apresentados justi�cam a
separação dos analisadores. 
0,5 pontos   Salva
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.
11/04/2019 Fazer teste: QUESTIONÁRIO UNIDADE I – D571_13701_A_D_20191
https://ava.ead.unip.br/webapps/assessment/take/launch.jsp?course_assessment_id=_148624_1&course_id=_31148_1&content_id=_500285_1… 7/7
 Estado de Conclusão da Pergunta:
Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas.

Continue navegando