Logo Passei Direto
Buscar

Conjunto de questões de múltipla escolha sobre compiladores e teoria da computação, com gabarito e trechos explicativos; aborda análise léxica (tokens, Lex/Yacc), autômatos finitos e o Problema da Parada.

Ferramentas de estudo

Questões resolvidas

Sobre os autômatos finitos, assinale a alternativa correta.

Um autômato finito determinístico possibilita construir um autômato finito não determinístico que realiza o mesmo processamento.
Um autômato finito com movimento vazio é um autômato finito não determinístico que não aceita o símbolo vazio como entrada.
Um autômato finito determinístico, a cada símbolo, reconhecido o estado atual, pode somente ser alterado para um único outro estado, sem existir indeterminismo.
Um autômato finito não determinístico é aceito como símbolo vazio como entrada.
Temos como exemplo de um autômato finito não determinístico a linguagem composta por As.

Analise as alternativas a seguir e selecione a única correta.

Os tokens estão nas linguagens de programação e são enviados a analisadores léxicos.
O token também é conhecido como componente da sintaxe.
O Lex, como utiliza as regras gramaticais, consegue analisar os tokens do Yacc.
Os tokens são representações numéricas das strings utilizadas para simplificar o processamento.
O token é um segmento de texto e/ou símbolo que não pode ser manipulado por analisadores sintáticos.

Após ler o pequeno fragmento de texto acima sobre implementação de um compilador, é correto afirmar que:

a identificação dos propósitos no processo da compilação é o importante, não importando a linguagem a ser utilizada.
a implementação de um compilador será executar as análises léxica, semântica e sintática em um código-fonte.
os compiladores produzem o 'código de máquina' de forma direta, por meio do recurso agregado, conhecido como assembly.
o principal objetivo ao implementar um compilador é resolver qualquer linguagem de maneira genérica.
Resposta correta. um compilador nada mais é do que um programa que traduz outros programas em código de máquina para determinados processadores.

Sobre a tradução de expressões, leia e selecione a alternativa correta dentre as abaixo.

As expressões só poderão ser identificadas como complexos caminhos na árvore léxica.
As expressões utilizadas no código-fonte podem ser analisadas apenas ao serem feitas operações complexas para sua análise.
Os operadores devem vir antes dos operandos sempre, caso contrário, haverá problemas na compilação.
O resultado combinado de todas essas execuções de fragmentos produz a tradução do programa ao qual o processo de análise/síntese é aplicado.
Em uma árvore sintática, o conteúdo das regras semânticas poderá sofrer variação dependendo da atividade a ser realizada.

Sobre o programa-fonte e um código-objeto, podemos assinalar como verdadeiro que:

a sequência maximal de código de linha reta é denominada um bloco avançado.
o código-objeto nunca terá como parte o termo “código de 3 endereços”.
os blocos básicos não podem ser representados com o uso de grafos dirigidos.
os blocos avançados são a base para um compilador desenvolver suas tarefas.
o código-objeto e/ou módulo-objeto é produzido por um processo de compilação sempre.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

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

Questões resolvidas

Sobre os autômatos finitos, assinale a alternativa correta.

Um autômato finito determinístico possibilita construir um autômato finito não determinístico que realiza o mesmo processamento.
Um autômato finito com movimento vazio é um autômato finito não determinístico que não aceita o símbolo vazio como entrada.
Um autômato finito determinístico, a cada símbolo, reconhecido o estado atual, pode somente ser alterado para um único outro estado, sem existir indeterminismo.
Um autômato finito não determinístico é aceito como símbolo vazio como entrada.
Temos como exemplo de um autômato finito não determinístico a linguagem composta por As.

Analise as alternativas a seguir e selecione a única correta.

Os tokens estão nas linguagens de programação e são enviados a analisadores léxicos.
O token também é conhecido como componente da sintaxe.
O Lex, como utiliza as regras gramaticais, consegue analisar os tokens do Yacc.
Os tokens são representações numéricas das strings utilizadas para simplificar o processamento.
O token é um segmento de texto e/ou símbolo que não pode ser manipulado por analisadores sintáticos.

Após ler o pequeno fragmento de texto acima sobre implementação de um compilador, é correto afirmar que:

a identificação dos propósitos no processo da compilação é o importante, não importando a linguagem a ser utilizada.
a implementação de um compilador será executar as análises léxica, semântica e sintática em um código-fonte.
os compiladores produzem o 'código de máquina' de forma direta, por meio do recurso agregado, conhecido como assembly.
o principal objetivo ao implementar um compilador é resolver qualquer linguagem de maneira genérica.
Resposta correta. um compilador nada mais é do que um programa que traduz outros programas em código de máquina para determinados processadores.

Sobre a tradução de expressões, leia e selecione a alternativa correta dentre as abaixo.

As expressões só poderão ser identificadas como complexos caminhos na árvore léxica.
As expressões utilizadas no código-fonte podem ser analisadas apenas ao serem feitas operações complexas para sua análise.
Os operadores devem vir antes dos operandos sempre, caso contrário, haverá problemas na compilação.
O resultado combinado de todas essas execuções de fragmentos produz a tradução do programa ao qual o processo de análise/síntese é aplicado.
Em uma árvore sintática, o conteúdo das regras semânticas poderá sofrer variação dependendo da atividade a ser realizada.

Sobre o programa-fonte e um código-objeto, podemos assinalar como verdadeiro que:

a sequência maximal de código de linha reta é denominada um bloco avançado.
o código-objeto nunca terá como parte o termo “código de 3 endereços”.
os blocos básicos não podem ser representados com o uso de grafos dirigidos.
os blocos avançados são a base para um compilador desenvolver suas tarefas.
o código-objeto e/ou módulo-objeto é produzido por um processo de compilação sempre.

Prévia do material em texto

<p>Leia o trecho a seguir:</p><p>“Durante a varredura, ocorre a análise léxica: sequências de caracteres são organizadas como unidades significativas denominadas marcas, que são como as palavras em uma linguagem natural como o inglês, por exemplo. Um sistema de varredura tem função similar à de um sistema para soletrar.”</p><p>LODEUN, K. C. Compiladores: princípios e práticas. São Paulo: Cengage Learning, 2004. p. 22.</p><p>A partir disso, sobre a análise léxica, podemos afirmar que ela:</p><p>·</p><p>tem as tabelas de sons chamadas de “bancos de dados”.</p><p>·</p><p>tem despreocupação com os símbolos.</p><p>·</p><p>tem, na apresentação, apenas uma etapa, que é chamada de escanear.</p><p>· Resposta correta</p><p>tem como função agrupar fluxos de letras e/ou sons.</p><p>Yacc, ou Yet Another Compiler-Compiler, é o gerador de analisadores sintáticos também desenvolvido para o Unix (por Johnson, em 1975). Ele aceita, em sua entrada, especificações de características sintáticas da linguagem de programação que contêm as ações semânticas de forma embutida e cria uma rotina em C utilizada na análise sintática.</p><p>· com a utilização das regras gramaticais, é possível analisar os tokens do Lex e criar a árvore de sintaxe, a qual impõe a estrutura hierárquica dos tokens.</p><p>·</p><p>as ferramentas não permitem indicar a prioridade e a associatividade de um operador.</p><p>·</p><p>o arquivo y.tab.h é criado com a compilação do arquivo Lex.</p><p>·</p><p>a definição é um gerador de análise léxica.</p><p>·</p><p>um analisador é feito para trabalhar em conjunto com as rotinas de análise léxica gerada pelo Yacc, sintática e semântica, geradas pelo Lex.</p><p>A função exata do analisador léxico é reconhecer os tokens associados às expressões regulares. Assim, por meio das expressões regulares definidas na gramática, o analisador léxico poderá identificar o par (tipo do token, lexema)”.</p><p>FEDOZZI, R. Compiladores. Londrina: Editora e Distribuidora Educacional S.A., 2018. p. 84.</p><p>A partir dos conceitos apresentados, assinale a alternativa correta.</p><p>· O algoritmo genérico é uma descrição infinita dos processos de computação.</p><p>·</p><p>O objetivo de um compilador é traduzir sequências de caracteres de um interpretador.</p><p>· Resposta correta</p><p>O Problema da Parada é dado por um programa P e um conjunto de dados d.</p><p>·</p><p>Os tradutores são programas de entrada e saída, são escritos em linguagens-fonte.</p><p>·</p><p>Os interpretadores solicitam a execução das instruções para outros programas.</p><p>Os compiladores são utilizados em diversas técnicas baseadas em outros escopos, como: conversão no formato de arquivos diferentes, leitura e/ou interpretação de arquivos HTML, dentre outros. Todos os compiladores são baseados em algoritmos e nas estruturas dos dados a serem traduzidos e/ou compilados.</p><p>Sendo assim, em compiladores, podemos afirmar que:</p><p>· quando utilizados processadores de linguagem, temos uma maneira para que isso seja possível.</p><p>·</p><p>existem diversas ferramentas que realizam o mesmo algoritmo, com o mesmo formato de entrada.</p><p>· Resposta correta</p><p>quando definimos um algoritmo genérico, percebemos que ele é uma descrição finita dos processos de computação.</p><p>·</p><p>quando são construídos, o problema pode ser resolvido apenas com algoritmos.</p><p>·</p><p>na execução, todos os procedimentos terminam ao mesmo tempo.</p><p>Os autômatos finitos são os primeiros modelos computacionais de definição de linguagens que são definidos por mecanismo de reconhecimento.</p><p>Sobre eles, assinale a alternativa correta.</p><p>· Um autômato finito determinístico possibilita construir um autômato finito não determinístico que realiza o mesmo processamento.</p><p>·</p><p>Um autômato finito com movimento vazio é um autômato finito não determinístico que não aceita o símbolo vazio como entrada</p><p>· Resposta correta</p><p>Um autômato finito determinístico, a cada símbolo, reconhecido o estado atual, pode somente ser alterado para um único outro estado, sem existir indeterminismo.</p><p>·</p><p>Um autômato finito não determinístico é aceito como símbolo vazio como entrada.</p><p>·</p><p>Temos como exemplo de um autômato finito não determinístico a linguagem composta por As.</p><p>Sobre o fragmento de texto citado, “essa rotina devolve zero quando chega ao fim da sequência de entrada, de modo que os valores restantes ficam disponíveis para a identificação dos tokens”.</p><p>LANGLOIS, T. Compiladores: da teoria à prática. Rio de Janeiro: LTC, 2018. p. 143.</p><p>Analise as alternativas a seguir e selecione a única correta.</p><p>· Os tokens estão nas linguagens de programação e são enviados a analisadores léxicos.</p><p>·</p><p>O token também é conhecido como componente da sintaxe.</p><p>·</p><p>O Lex, como utiliza as regras gramaticais, consegue analisar os tokens do Yacc.</p><p>· Resposta correta</p><p>Os tokens são representações numéricas das strings utilizadas para simplificar o processamento.</p><p>·</p><p>O token é um segmento de texto e/ou símbolo que não pode ser manipulado por analisadores sintáticos.</p><p>“A análise léxica, primeira fase do compilador, é responsável pela leitura de caractere por caractere de um arquivo texto de uma linguagem de programação e os traduz em tokens ou símbolos léxicos, utilizando expressões regulares, que podem ser representados por Autômatos Finitos Não Determinísticos (AFND).”</p><p>· No AFND, as transições de “t” estão vinculadas a um par de estados “s1 e s2”, sendo descrito com um símbolo de Θ .</p><p>·</p><p>No AFND, existe uma transição do estado 1 para o estado 2, chamada Beta (β).</p><p>· Resposta correta</p><p>O AFND possui três estados: denominados de estados 1, 2 e 3.</p><p>·</p><p>O AFND também é composto por um conjunto s1 e s2.</p><p>·</p><p>O AFND é composto por um conjunto de “S” e “F” de estados.</p><p>LISA é uma ferramenta para gerar um compilador para uma linguagem utilizando métodos formais já conhecidos, quais sejam expressões regulares, notação BNF (Backus-Naur Form) e gramática de atributos. Possui um ambiente amigável que permite escrever a descrição formal de uma linguagem de uma maneira rápida e simples. LISA gera os analisadores léxico, sintático e semântico em C++.</p><p>ZUMER, V. et al. LISA: a tool for automatic language implementation. Sigplan Notices, 1995. Disponível</p><p>em: https://www.academia.edu/5671076/LISA_a_tool_for_automatic_language_implementation. Acesso em: 17 abr. 2022.</p><p>A partir do pequeno texto anterior, marque a alternativa correta sobre compiladores.</p><p>· Os analisadores léxicos podem citar um exemplo da alocação de uma variável que não deverá ser em memória.</p><p>· Resposta correta</p><p>Os analisadores léxicos para todas as linguagens são iguais.</p><p>·</p><p>Os geradores de analisadores sintáticos são criados a partir de notações baseadas em expressões regulares.</p><p>·</p><p>Os geradores de analisadores sintáticos recebem como entrada regras que definem a tradução de cada operação.</p><p>·</p><p>Os analisadores léxicos são criados a partir de uma gramática livre de contexto, que um gerador de analisador sintático produz um reconhecedor sintático.</p><p>Os tokens são símbolos léxicos que serão reconhecidos por padrão e podem ser divididos em dois grupos distintos. As ferramentas são orientadas ao redor de modelos particulares de linguagem mais adequados para gerar compiladores ou similares ao modelo de interpretação. Sobre o reconhecimento dos tokens, marque a alternativa verdadeira.</p><p>· As sequências de entrada que produzem tokens devolvem um número único.</p><p>·</p><p>A rotina devolve uma resposta qualquer quando chega ao fim da sequência de entrada.</p><p>·</p><p>Os tokens são conhecidos como uma ferramenta analítica semântica, e a lexema é uma produção.</p><p>· Resposta correta</p><p>As ferramentas utilizadas na construção dos compiladores auxiliam na criação das rotinas que constituem o processo completo de um compilador.</p><p>·</p><p>A função exata do analisador semântico é reconhecer os tokens associados às expressões regulares.</p><p>Autômatos finitos é um sistema formal M = (K, Σ, d, e0, F), em que K é um conjunto finito não vazio de estados, Σ é o alfabeto de símbolos de entrada, d é a função de transição, e0 é o estado inicial (e0 Î K) e F é o conjunto de estados finais (F Í K), podendo ser representado por meio de diagramas de transição (DT) ou grafos de transição (GT), como também são conhecidos.</p><p>MARTINS, J. Linguagens formais e compiladores.</p><p>43 f. Notas de Aula (Curso de Ciências da Computação) – Universidade Regional de Blumenau, Blumenau, SC, 2002.</p><p>A partir disso, assinale a alternativa verdadeira sobre autômatos finitos.</p><p>· sta correta</p><p>Um autômato finito é o tipo mais simples de reconhecedor de linguagens existentes.</p><p>·</p><p>Um estado de autômato finito tem capacidade de observar vários símbolos por vez.</p><p>· Sua resposta (incorreta)</p><p>Um autômato finito é um modelo natural, do qual se pode usar como entrada um analisador léxico.</p><p>·</p><p>Um estado de autômato infinito é uma situação particular no processo de reconhecimento de uma cadeia somente.</p><p>·</p><p>Um autômato finito caracteriza-se por saída, memória e capacidade de processamento infinita.</p><p>Leia o excerto a seguir.</p><p>“O princípio da tradução direcionada por sintaxe estabelece que o significado, ou semântica, da cadeia 3+4 deveria estar diretamente relacionado a sua estrutura sintática representada na árvore de análise sintática. Nesse caso, o princípio da tradução direcionada por sintaxe indica que a árvore de análise sintática determina que o valor de 3 e o valor de 4 devem ser somados.”</p><p>LOUDEN, K. C. Compiladores: princípios e práticas. São Paulo: Cengage Learning, 2004. p. 123.</p><p>Após ler o texto acima, podemos definir como correta qual opção?</p><p>Sua resposta está incorreta.</p><p>Alternativa incorreta. A tradução dirigida por sintaxe (SDD ou Syntax-Directed Definition) é um método de implementação de compiladores em que a tradução do código-fonte será tratada, exclusivamente, pela “análise sintática”.</p><p>· Resposta correta</p><p>O método de tradução dirigida pela sintaxe é a tradução da cadeia de caracteres.</p><p>· Sua resposta (incorreta)</p><p>A tradução dirigida por sintaxe se refere ao método gramatical pelo qual a tradução do código-fonte será tratada.</p><p>·</p><p>A árvore de análise sintática determina que o valor de 0 e o valor de 1 devem ser somados.</p><p>·</p><p>A sintaxe utilizada na Syntax-Directed Definition (SSD) é gramática atribuída ao contexto.</p><p>·</p><p>Os atributos são associados aos caracteres da gramática.</p><p>“Durante a compilação é igualmente verificada a compatibilidade entre os tipos dos operandos e os operadores associados, bem como o número e o tipo dos argumentos nas chamadas às funções ou aos métodos.”</p><p>LANGLOIS, P. R. S. Compiladores: da teoria à prática. Rio de Janeiro: LTC, 2018. p. 126.</p><p>Sobre a verificação de tipo, é correto afirmar que:</p><p>· as verificações realizadas nos tipos de compilação podem ser estáticas e/ou dinâmicas.</p><p>·</p><p>uma verificação importante das construções sintáticas é o significado lógico para qualquer linguagem conhecida.</p><p>·</p><p>as linguagens de programação com tipos estáticos são atribuídas a muitos tipos de diversas variáveis.</p><p>·</p><p>a verificação da consistência das declarações e a utilização dos identificadores são dispensáveis.</p><p>·</p><p>a realização de conversões necessárias e permitidas criam o significado de todo o programa.</p><p>A análise semântica pode ser dividida em duas categorias. A primeira é a análise de um programa requerido pelas regras da linguagem de programação, para verificar sua correção e garantir sua execução. O quanto precisa ocorrer dessa análise requerida pela definição da linguagem varia tremendamente de linguagem para linguagem.”</p><p>LOUDEN, K. C. Compiladores: princípios e práticas. São Paulo: Cengage Learning, 2004. p. 259.</p><p>Sobre a análise semântica, é correto afirmar que:</p><p>·</p><p>a análise semântica é englobada nas tarefas principais de verificação de erros.</p><p>· Resposta correta</p><p>a análise semântica tem, como função, realizar as tarefas básicas.</p><p>·</p><p>as gramáticas de atributo são utilizadas para a correção da semântica dos programas.</p><p>·</p><p>a análise semântica trabalha se inter-relacionando com apenas algumas partes do programa.</p><p>·</p><p>o resultado da fase semântica é um data setting que será analisado gramaticalmente.</p><p>Leia o trecho a seguir.</p><p>”Em uma implementação, as atividades de várias fases podem ser agrupadas em uma passagem que lê um arquivo de entrada e grava um arquivo de saída. Podemos citar como exemplo as fases front-end de análise lexical, análise de sintaxe, análise semântica e geração de código intermediário que podem ser incorporadas em uma única passagem.”</p><p>BARBOSA, C. da S. et al. Compiladores. Porto Alegre: Sagah, 2021. p. 25. (Disponível na Minha Biblioteca).</p><p>Após ler o pequeno fragmento de texto acima sobre implementação de um compilador, é correto afirmar que:</p><p>· a identificação dos propósitos no processo da compilação é o importante, não importando a linguagem a ser utilizada.</p><p>·</p><p>a implementação de um compilador será executar as análises léxica, semântica e sintática em um código-fonte.</p><p>·</p><p>os compiladores produzem o “código de máquina” de forma direta, por meio do recurso agregado, conhecido como assembly.</p><p>·</p><p>o principal objetivo ao implementar um compilador é resolver qualquer linguagem de maneira genérica.</p><p>· Resposta correta</p><p>um compilador nada mais é do que um programa que traduz outros programas em código de máquina para determinados processadores.</p><p>Leia o excerto a seguir.</p><p>“As operações de leitura de valores da memória para o topo da pilha permitem ler valores inteiros com sinal ou sem sinal, para as quatro dimensões suportadas. Nos inteiros com sinal, o sinal é estendido ou truncado, dependendo da dimensão dos valores da pilha. As instruções de leitura são ld8, ld16, ld32 e ld64, dependendo do número de bits do valor a ser lido. No caso de se tratar de inteiros sem sinal, o valor é estendido com zeros ou truncado, sendo as instruções designadas por uld8, uld16, uld32 e uld64.”</p><p>LANGLOIS, P. R. S. Compiladores: da teoria à prática. Rio de Janeiro: LTC, 2018. p. 227.</p><p>Ainda sobre o ambiente de execução, é correto afirmar que:</p><p>Sua resposta está correta.</p><p>Alternativa correta. Desse modo, a principal responsabilidade dos compiladores é tratar e evitar os acessos não alinhados, ou seja, garantir que todos os endereços das variáveis respeitem o alinhamento da arquitetura a ser utilizada.</p><p>·</p><p>o processador é o local onde acontecem todos os processamentos.</p><p>· Resposta correta</p><p>a principal responsabilidade dos compiladores é tratar e evitar os acessos não alinhados.</p><p>·</p><p>todas as plataformas possuem as mesmas regras de alinhamento para armazenamento.</p><p>·</p><p>uma memória pode ser dividida em blocos de 8 bytes.</p><p>·</p><p>a memória secundária permite que existam erros casuais por falta de memória no processamento.</p><p>Leia o trecho a seguir:</p><p>“No caso da linguagem simples, identificamos expressões expr e instruções stmt. A linguagem é muito simples, por isso não existem declarações, funções ou tipos de dados compostos, como estruturas ou classes de objetos, por exemplo.”</p><p>LANGLOIS, P. R. S. Compiladores: da teoria à prática. Rio de Janeiro: LTC, 2018. p. 149.</p><p>Sobre o caso de linguagem simples, é correto afirmar que:</p><p>·</p><p>algumas linguagens, como a C, utilizam apenas variáveis para indicar a existência dos elementos a serem compilados.</p><p>· Resposta correta</p><p>as linguagens de programação da família BCPL, como C++ e Java, podem, também, especificar qual será a dimensão das suas variáveis.</p><p>·</p><p>nas linguagens dinâmicas, como Javascript e/ou Python, a redefinição das funções não é permitida.</p><p>·</p><p>uma declaração, nas linguagens de programação, tem, como função, somente, especificar os identificadores.</p><p>·</p><p>as declarações são, geralmente, realizadas no rodapé dos arquivos e são destinados a referenciar essas declarações.</p><p>Leia o trecho a seguir:</p><p>“O código intermediário pode assumir muitas formas – existem quase tantos estilos de código intermediário quanto compiladores. Todos, entretanto, representam alguma forma de linearização da árvore sintática, ou seja, uma representação da árvore sintática em forma sequencial.”</p><p>LOUDEN, K. C. Compiladores: princípios e práticas. São Paulo: Cengage Learning, 2004. p. 402.</p><p>Sobre o código, podemos afirmar que:</p><p>·</p><p>os códigos intermediários têm sua utilização considerada como melhor aplicável em casos bem simples.</p><p>·</p><p>o código intermediário possui regras de linguagem difíceis para o compilador interpretar.</p><p>· Resposta correta</p><p>o código intermediário permite que a função seja</p><p>acionada e/ou incorporada no processo.</p><p>·</p><p>o código-fonte compila o código intermediário para uma linguagem conhecida.</p><p>Leia o trecho a seguir.</p><p>“A tabela de símbolos é uma estrutura de dados que tem como objetivo armazenar as informações relativas aos identificadores do programa. É essencial a tabela dos símbolos permitir um acesso rápido a essas informações, porque será frequentemente consultada ao longo do processo de compilação.”</p><p>LANGLOIS, P. R. S. Compiladores: da teoria à prática. Rio de Janeiro: LTC, 2018. p. 126.</p><p>Após ler o fragmento de texto sobre a tabela de símbolos, assinale a alternativa correta.</p><p>· As tabelas de símbolos são utilizadas nos sistemas computacionais para distribuir as informações e aumentar o tamanho dos programas.</p><p>·</p><p>A tabela de símbolos é uma estrutura de dados em formato somente de árvore.</p><p>·</p><p>O programa lê uma tabela que vai estar associada a um símbolo, ele apenas referenciará a posição correta da informação.</p><p>·</p><p>A tabela de símbolos é utilizada nos compiladores para a saída de informações.</p><p>· Resposta correta</p><p>O processo de compilação de uma tabela de símbolos está ligado com o retorno de parâmetros e/ou com as variáveis utilizadas.</p><p>Leia o excerto a seguir.</p><p>“Por sua vez, um esquema de tradução é uma notação para anexar fragmentos de programa às produções de uma gramática. Os fragmentos do programa são executados quando a produção é usada durante a análise sintática.”</p><p>BARBOSA, C. da S. et al. Compiladores. Porto Alegre: Sagah, 2021. p. 166. (Disponível na Minha Biblioteca).</p><p>Sobre a tradução de expressões, leia e selecione a alternativa correta dentre as abaixo.</p><p>· As expressões só poderão ser identificadas como complexos caminhos na árvore léxica.</p><p>· Resposta correta</p><p>As expressões utilizadas no código-fonte podem ser analisadas apenas ao serem feitas operações complexas para sua análise.</p><p>·</p><p>Os operadores devem vir antes dos operandos sempre, caso contrário, haverá problemas na compilação.</p><p>·</p><p>O resultado combinado de todas essas execuções de fragmentos produz a tradução do programa ao qual o processo de análise/síntese é aplicado.</p><p>·</p><p>Em uma árvore sintática, o conteúdo das regras semânticas poderá sofrer variação dependendo da atividade a ser realizada.</p><p>Leia o trecho a seguir.</p><p>“Ao traduzir um programa-fonte para um código-objeto, um compilador produz representações intermediárias do código, que podem assumir mais de uma forma, mas que devem ser facilmente produzidas e facilmente traduzidas para a linguagem-alvo ou código-objeto”.</p><p>BARBOSA, C. da S. et al. Compiladores. Porto Alegre: Sagah, 2021. p. 145. (Disponível na Minha Biblioteca).</p><p>Sobre o programa-fonte e um código-objeto, podemos assinalar como verdadeiro que:</p><p>· a sequência maximal de código de linha reta é denominada um bloco avançado.</p><p>·</p><p>o código-objeto nunca terá como parte o termo “código de 3 endereços”.</p><p>·</p><p>os blocos básicos não podem ser representados com o uso de grafos dirigidos.</p><p>· Sua resposta (incorreta)</p><p>os blocos avançados são a base para um compilador desenvolver suas tarefas.</p><p>· Resposta correta</p><p>o código-objeto e/ou módulo-objeto é produzido por um processo de compilação sempre.</p><p>image1.wmf</p>

Mais conteúdos dessa disciplina