Resumo de um livro - COMPILADORES

Tipo de documento:Resumo

Área de estudo:Tecnologia da informação

Documento 1

A indicação de links e bibliografia esclarecedores, de cada fase dos processos, com exemplificações em exercícios, permeiam cada seção do livro. Um dos objetivos deste curso é entender o funcionamento desse tradutor e seu processo evolutivo, que por ser complexo, eficiente e, às vezes, transparente aos programadores, pode ser confundindo nas regras da linguagem com o próprio tradutor, o chamado ‘compilador’, objeto desse livro. Estudando todas as fases envolvidas na construção de um compilador e a sua importância para um projeto, mostra se o quanto é determinante uma especificação da linguagem formal detalhada e correta para construir um compilador rápido e eficiente. A fixação dos conhecimentos através de proposições hipotéticas de situações, que estimulem o desenvolvimento dos conhecimentos explicitados, é o diferencial deste curso de compiladores, desenvolvido por Regina Fedozzi.

Na “Unidade 1: Estrutura e funcionamento de um compilador”, são apresentados os conceitos de linguagens de programação. Demonstrando como a sintaxe da linguagem pode descrever, quando o programa foi escrito de forma estruturalmente correta, quais palavras e símbolos podem ser usados assim como sua organização, e as regras da sintaxe que são especificadas nas gramáticas livres de contexto. Associa-se assim tais regras para definições de nomes na linguagem que compõem um conjunto de normas a serem seguidas. Os tipos existentes em uma linguagem são os indicativos para que o programador possa implementar as estruturas para armazenar dados e executar cálculos. Há tipos simples e outros mais complexos, como listas, arvores, funções e classes. A semântica em um programa é esse efeito que aquele comando tem sobre os valores envolvidos.

Nas duas primeiras seções focalizou-se os conceitos fundamentais das linguagens e aprendeu-se que as linguagens possuem uma hierarquia, sendo possível agora criar conjuntos de regras finitas, chamados de gramáticas, que possibilitam construir algoritmos para analisar se os programas foram escritos de acordo com as regras definidas. Com o conhecimento das ferramentas existentes no mercado que auxiliam na construção de compiladores em cada fase do seu desenvolvimento e, como planejar as etapas de desenvolvimento e do design da linguagem fonte, faz-se a proposta de um workshop sobre as atuais ferramentas disponíveis para agilizar a construção de compiladores e como elas poderão ajudar nos futuros projetos a serem desenvolvidos na empresa; quais são as ferramentas de apoio existentes no mercado, tais como JFLEX, CUP, JAVACC, Yacc & Lex, que ajudarão no desenvolvimento e planejamento de um compilador; analisando as opções de plataforma, tanto para desenvolvimento do compilador como para o código alvo a ser gerado para planejar o desenvolvimento dos compiladores.

A “Extended Backus-Naur Form” (EBNF), EBNF é uma metalinguagem, ou seja, uma linguagem para criar outra linguagem, os cientistas da computação construíram aplicativos que interpretam a especificação EBNF de uma linguagem e automaticamente criam algumas classes (objetos) para reconhecer se a entrada é válida. A especificação da linguagem usando notação EBNF, apresentará os critérios relevantes para a tomada de decisão sobre quais tecnologias são adequadas para serem adotadas no planejamento da implementação de um compilador específico e o cronograma para o desenvolvimento de cada fase. Esses aplicativos agilizam e sistematizam algumas etapas do projeto do compilador, assim o desenvolvedor deve focar o seu trabalho na construção da gramática e na integração das fases do projeto. Se em cada uma dessas etapas não for encontrado erro de escrita no programa fonte, o fluxo de dados será enviado para a fase seguinte, a de síntese.

Durante essa fase, inicia-se a montagem da tabela de símbolos, que será utilizada durante o processo de compilação por todas as etapas. O segundo passo é o reconhecimento dos tokens. Nessa fase é realizada a leitura caractere a caractere, o que consome um tempo razoável, e há momentos em que o analisador léxico precisar verificar vários caracteres à frente para concluir o reconhecimento do token. O primeiro passo foi preparar o arquivo de entrada a ser analisado, removendo espaços em branco, depois a técnica de bufferização para fazer a varredura da entrada. Do gerador JFlex 1. Depois de baixados os softwares indicados, eles devem ser instalados nesta ordem: primeiro o JDK, depois o Netbeans. Seguindo as instruções recomendadas no site de cada ferramenta baixada; instala-se o plug-in JFlex 1.

para o Netbeans 8. Após baixar o JFLEX 1. Na subseção três, da unidade dois trata-se da ‘Análise sintática’: a importância da especificação das expressões regulares para o reconhecimento dos elementos básicos de uma linguagem, ao construir um analisador léxico, para analisar se um programa foi escrito corretamente, não basta apenas reconhecer os elementos básicos, os tokens, mas também se a estrutura da frase está correta, isto é, se as palavras estão de acordo com as regras gramaticais. mostrando a função do analisador sintático, quais são as quatros estratégias que podem ser implementadas em um analisador sintático para o tratamento de erros e, por fim, como definir as regras da sintaxe de uma gramática completa.

O analisador sintático interage com os analisadores léxico e semântico, acionando-os quando necessário. Assim, o analisador sintático, ao verificar uma “frase”, aciona o analisador léxico, que retorna o tipo de token, ou uma lista de tokens, e, a partir do fluxo recebido, inicia a análise da produção. O agrupamento de tokens é uma “frase gramatical” e o analisador sintático irá gerar uma representação hierárquica, a saída, que será uma árvore gramatical. Já com relação à estratégia de correção global, que seria o método perfeito, pois incorpora as duas estratégias apresentadas (modalidade do desespero e nível de frase), nos deparamos com um algoritmo que é muito custoso, isto é, o tempo de processamento é lento, o que torna o processo de compilação vagaroso.

A Unidade três, "Tabela de símbolos, análise semântica e tradução dirigida por sintaxe” tem-se: -como fazer a análise sintática, os métodos existentes e quando usar um ou outro; -analisa-se um problema comum das gramáticas livres de contexto, a ambiguidade, a qual uma boa gramática deve evitar; -a última fase da análise, a semântica, e a técnica de tradução dirigida pela sintaxe para implementá-la; e -a importância da tabela de símbolos para o processo de construção de um compilador, como também as estruturas de dados envolvidas na implementação da mesma. Na subseção um, da unidade três, ”Tabela de símbolos, análise semântica e tradução dirigida por sintaxe”, passa-se a verificar se o programa foi escrito de forma sintaticamente correta, construindo um analisador léxico, segundo as regras léxicas, que lê o código fonte e, se forem gerados apenas tokens válidos, passa à etapa seguinte.

A construção de um analisador sintático que analisa se o código fonte está de acordo com as regras sintáticas e semântica, concluindo a segunda etapa do processo de análise. Ao construirmos a árvore de derivação de uma sentença de acordo com a gramática de uma linguagem, aplicamos sucessivamente as regras e alcançamos as folhas para todos os nós, então a sentença é gerada pela gramática. Na subseção um, da unidade quatro, “Geração de código intermediário”: trata-se a apresentação de uma proposta para geração de código intermediário e um relatório comentando, detalhadamente, o código referente à solução que será apresentada, bem como os fundamentos teóricos que foram necessários na construção da solução proposta.

O desenvolvimento de um compilador está divido em duas fases: a análise e a síntese. A fase de análise, também denominada front-end, é responsável por verificar se o arquivo-fonte está escrito de acordo com as regras definidas pela gramática. Esta fase está divindade em três etapas: análise léxica, sintática e semântica. O front-end disponibiliza para a fase seguinte a árvore de análise sintática, além de alimentar e consultar informações na tabela de símbolo. O compilador faz isso depois da análise sintática e semântica, e utiliza a forma pós-fixa ou três endereços para conversão. Linguagem de baixo-nível = código de máquina = código alvo = é o código que o computador consegue executar.

A geração do código deverá converter a RI (Recuperação da Informação) em um código que possa ser executado na máquina de destino. As ações desta fase da compilação, conforme definidas por Cooper (2014), são: 1. Seleção de instruções – consiste em selecionar uma sequência de instruções da máquina-alvo que implemente as operações de RI; 2. É importante escolher a ferramenta para automatizar o processo de compilação do projeto, já que o compilador será composto, como um todo, de módulos, e a automatização da compilação irá ajudar esse processo, bem como o controle da versão do software. Proposição para organização de seu documento com estes tópicos: • Propósito • Ambiente • Características principais (se houver alguma estrutura específica que diferencie essa linguagem das demais), não deixe de citar: • Sintaxe • Gramática • Comentários finais.

Depois de desenvolverem a apresentação, resta elaborar o último quesito solicitado pela comissão julgadora: o projeto para o desenvolvimento e o cronograma. Para esse item, vale lembrar que um projeto de compiladores tem alguns pontos que não se deve deixar de fora: • Levantamento e análise dos requisitos – todo projeto de software começa assim. • Definição da arquitetura do projeto - definar os módulos ‘go’ intermediário, do código alvo e otimizar o programa fonte e da máquina alvo, bem como qual será o tipo do compilador; • Características principais – definam o tipo do paradigma da linguagem e os tipos de dados. Depois de sua equipe desenvolver todos os pontos solicitados pela comissão julgadora, restará organizar cada item e entregar ao professor: o white paper da linguagem, a apresentação, o projeto do desenvolvimento e o cronograma.

Todo o livro conduz o aluno a apresentar um projeto de compilador a ser explicado no final do curso, é um livro de verificação de conhecimentos no ambito dos programadores, que esclarece dúvidas e indica caminhos para o melhor entendimento do uso e confecção de compiladores. A linguagem pode ser um tanto específica, mas facilmente compreensível, até para o leitor que não seja programador. Entendendo os conceitos, executando os exercícios e seguindo as instruções de onde estudar em cada seção do livro, é possível apresentar um projeto para a construção de um compilador a ser apreciado por uma banca de examinadores.

114 R$ para obter acesso e baixar trabalho pronto

Apenas no StudyBank

Modelo original

Para download