Prévia do material em texto
1 NOME: BRUNO FERNANDO STANKIEVICZ BELTRAME DATA: 24/03/2020 Leia o conteúdo da apostila contido nos itens 1.3 até 3.1.6 inclusive. Lembramos que o conteúdo presente até a Tabela de Símbolos (figura 10) vimos em aula, e dos itens 2.2.1.1 até 3.1.6 (Erros Léxicos), fica a critério do aluno a leitura e compreensão dos conteúdos, a fim de responder o questionário abaixo. No entanto, recomenda-se a leitura de todo o conteúdo indicado. Obviamente, este questionário aborda todos os conteúdos listados neste trecho da apostila, e contará como presenças para as aulas dos dias 17/03 e 24/03. Sabemos que este exercício vem a colaborar com as medidas preventivas ao COVID-19 mediante as ausências em virtude da paralisação das aulas, e ao mesmo tempo minimizar as perdas relativas ao calendário acadêmico. As respostas devem ser entregues individualmente via RM Portal até às 11:59 do dia 24/03. 1 Sobre a Linkedição, assinale a alternativa correta. I. Não obstante a linguagem de máquina gerada por um compilador possa ser executada diretamente no hardware, quase sempre ela deve ser executada juntamente com algum outro código. II. A maioria dos programas de usuário não exige programas do Sistema Operacional. III. Durante o processo de Linkedição, o compilador cria chamadas a programas do sistema operacional. IV. O código de usuário e o de sistemas juntos, às vezes, são chamados de módulos de carga ou imagem de executável. V. O Linkeditor é uma parte do Compilador. a) As alternativas I, II e III são verdadeiras. b) Somente as alternativas I e III são verdadeiras. c) Somente as alternativas II e V são falsas. d) As alternativas II, III e V são falsas. e) NDA. 2 Assinale a alternativa correta: I. Uma gramática é do tipo Regular, se cada produção é da forma: A::= aB; A ::= a ou A ::= ; onde A e B são não terminais e a é um terminal. II. A Gramática Livre do Contexto (GLC) admite apenas regras de produção cujo lado esquerdo contém exatamente um não-terminal. III. Nas Gramáticas Sensíveis ao Contexto o símbolo inicial S pode aparecer tanto no lado direito, quanto no esquerdo das regras de produção. IV. Nas Gramáticas Sensíveis ao Contexto o lado direito da produção é menor ou igual (<=) ao lado esquerdo, com exceção da regra S ::= . V. Uma linguagem com dois ou mais símbolos terminais que possuem uma relação quantitativa e posicional não pode ser representada por uma Gramática Regular. a) Somente as alternativas I e II são verdadeiras. b) As alternativas I, II e V são verdadeiras. c) As alternativas I, III e IV são falsas. d) As alternativas I, II e III são verdadeiras. e) NDA. Universidade Regional Integrada do Alto Uruguai e das Missões Campus de Erechim Departamento das Engenharias e Ciência da Computação Professor Fabio Zanin Leitura e Questionário de revisão 2 3 Relacione os itens 1, 2 e 3 de acordo com as alternativas. 1 – Implementação Compilada 2 – Interpretação Pura 3 – Interpretação Híbrida ( 1 ) – Gera um arquivo executável mais rápido (que executa mais rapidamente). ( 3 ) – Os erros de programação do arquivo fonte são mais fáceis de detectar. ( 2 ) – Os erros do arquivo fonte sempre acontecem em tempo de execução. ( 3 ) – É o método que provê maior portabilidade aos programas. ( 2 ) – Tende a ser o processo mais demorado. ( 1 ) – Garante a geração de programas mais livre de erros. ( 3 ) – Possui verificação parcial dos erros de programação. 4 Sobre Processadores de Linguagens, assinale a alternativa correta. I. Um processador é um programa que, a partir de tradução ou interpretação, permite ao computador entender os comandos de alto nível escritos pelos usuários. II. Um tradutor é um programa que aceita como entrada um programa escrito em uma linguagem chamada "linguagem fonte" e executa diretamente as instruções dadas nesta linguagem. III. Os montadores e os compiladores são tipos de interpretadores. IV. O pré-processador é um tipo de interpretador. V. Um Sistema de Processamento de Linguagens pode conter o uso de vários processadores para traduzir o programa fonte em um programa objeto. a) Somente a alternativa I é verdadeira. b) Somente as alternativas I e V são verdadeiras. c) As alternativas I, II, III e V são verdadeiras. d) As alternativas I, III e IV são falsas. e) NDA. 5 Explique o que é feito no processo de "scanning" do Analisador Léxico. Realiza a varredura dos caracteres, um de cada vez, incluindo no estado em que eles se encontram e converte para uma sequência de tokens, é nesse processo que são reconhecidas as palavras reservadas. 6 No que diz respeito à recuperação de erros da análise léxica, existem estratégias comuns que podem ser implementadas a fim de levá-las a efeito. No entanto, tais estratégias podem ser um tanto arriscadas. Explique com suas palavras o porquê disso. As estratégias podem ser arriscadas quando não soubermos o tipo do problema a ser enfrentado, como, por exemplo, na estratégia de “Recuperação de frases” substituir “,” por “;”, remover um “;” estranho ou inserir um ausente, podem acabar gerando erros de compilação. 3 7 Porque a separação dos módulos de um processo de compilação (análise léxica, sintática, semântica, geração de código intermediário, etc) contribui para o aumento da eficiência dos compiladores em geral? A separação das análises léxica e sintática frequentemente nos permite simplificar uma ou outra dessas fases do processo de compilação. Por exemplo, um parser que incorpore as convenções para comentários e espaços em branco é significativamente mais complexo do que um que assuma que os mesmos já tenham sido removidos pelo analisador léxico. 8 Qual é a razão principal para que códigos-fonte totalmente ou parcialmente interpretados executem mais lentamente que os compilados? Por conta da decodificação das instruções de alto nível, bem mais complexas do que as instruções em linguagem de máquina. 9 No contexto de implementação de linguagens de programação, dê o significado dos seguintes termos: montador, cross-compiler e pré-processador. Montadores: convertem as linguagens de baixo nível e linguagens de alto nível; Cross-compiler que gera código para outra máquina diferente da utilizada para compilação Pré-processador: que traduz uma linguagem de alto nível em outra linguagem de alto nível; 10 Diferencie CLASSE, VALOR e POSIÇÃO; dando 1 exemplo de cada. Classe Classe representa o tipo do token, como por exemplo, constantes, Identificadores, palavras reservadas, entre outros. Valor O valor depende da classe, representado pelo conjunto de valores os quais a Classe solicita. Por exemplo para constante inteira, o valor deve ser um número inteiro. Posição Indica o local onde ocorreu o token. Muito utilizada para identificar o local De ocorrência de erros. 11 Além da “modalidade pânico”, existem outras possíveis ações de recuperação de erros que são: Remover um caractere estranho; Inserir um caractere ausente; Substituir um caractere incorreto por um correto; Transpor dois caracteres adjacentes. 4 12 Porque a “modalidade pânico” pode ocasionalmente confundir o parser (analisador sintático), mas num ambiente de computação interativa pode ser razoavelmente adequada? Pois nessa modalidade são removidos sucessivos caracteres da entrada remanescente até que o analisador possa encontrar um token bem-formado, e para o parser os terminais não são símbolos do alfabeto, mas os próprios tokens. 13 Explique como funciona o reconhecimento das palavras reservadas, na maioria das linguagens de programação. As palavras ficam armazenadas em uma tabela interna, que é varrida a cada vez que um identificador é reconhecido. Se o identificador ocorre na tabela, então se trata de uma palavra reservada, caso contrário, trata-se de um identificador. 14 Conceitue interpretador e processador, salientando as diferenças entre eles. Processador é um programa que permite ao computador “entender” os comandos de alto nível escritos pelos usuários já um interpretadoré um programa que aceita como entrada um programa escrito em uma linguagem chamada linguagem fonte e executa diretamente as instruções dadas nesta linguagem.