Prévia do material em texto
1 CIÊNCIA DA COMPUTAÇÃO BACHARELADO Kelberson Abreu RA 3639635402 2 ATIVIDADE PRÁTICA COMPILADORES Trabalho apresentado à Universidade Anhanguera, como requisito parcial para a obtenção de média semestral nas disciplinas norteadoras do semestre letivo. Tutor (a): Fausto Rodrigo Toloi. CAMPESTRE - MG 2026 3 Sumário 1 Introdução. ................................................................................................. 4 2 Objetivos. ................................................................................................... 4 2.1 Objetivo Geral ............................................................................................................. 4 2.2 Objetivos Específicos ................................................................................................. 4 3 REFERENCIAL TEÓRICO ......................................................................... 4 3.1 Compiladores ............................................................................................................. 4 3.2 Análise Léxica ............................................................................................................. 5 3.3 Expressões Regulares e Gramáticas ......................................................................... 5 3.4 Ferramentas Utilizadas ............................................................................................... 5 4 METODOLOGIA ......................................................................................... 5 4.1 Infraestrutura Utilizada ............................................................................................... 6 4.2 Procedimento 1 — Conhecimento e Instalação dos Softwares .................................. 6 4.3 Procedimento 2 — Criação da Especificação Léxica ................................................. 6 5 RESULTADOS E DISCUSSÃO .................................................................. 7 6 CONCLUSÃO ............................................................................................. 7 REFERÊNCIAS.............................................................................................. 8 4 1 Introdução. O presente portfólio tem como finalidade registrar e documentar as atividades realizadas durante as aulas práticas da disciplina de Compiladores, Unidade 1, Seção 1.3. A construção de compiladores é uma área fundamental da Ciência da Computação, pois envolve o processo de tradução de código escrito em linguagens de alto nível para linguagens executáveis por máquinas. Nesta etapa inicial, o objetivo central foi a familiarização com os ambientes e ferramentas de desenvolvimento que serão utilizados ao longo do curso, com ênfase no IDE NetBeans 8.1, no Java JDK 1.8.0 e na ferramenta JFlex 1.6.1, voltada à geração de analisadores léxicos. Além disso, foram dados os primeiros passos para a construção de uma especificação léxica no formato .flex, introduzindo conceitos práticos sobre análise léxica e gramáticas. A documentação aqui apresentada segue as normas da Associação Brasileira de Normas Técnicas (ABNT), conforme diretrizes estabelecidas pelas normas NBR 6022, NBR 6023 e NBR 14724. 2 Objetivos. 2.1 Objetivo Geral Compreender os conceitos iniciais relacionados ao desenvolvimento de compiladores, por meio da instalação, configuração e utilização das ferramentas necessárias para a construção de um analisador léxico. 2.2 Objetivos Específicos • Conhecer e instalar os softwares utilizados no decorrer da disciplina; • Familiarizar-se com a interface do IDE NetBeans 8.1; • Compreender a função e os recursos da ferramenta JFlex 1.6.1; • Criar um projeto Java no NetBeans e configurar o plug-in JFlex; • Desenvolver a especificação léxica no arquivo especificacao.flex. 3 REFERENCIAL TEÓRICO 3.1 Compiladores Um compilador é um programa que traduz o código-fonte escrito em uma linguagem de programação de alto nível para uma linguagem de baixo nível, geralmente código de máquina 5 ou código intermediário. O processo de compilação é dividido em fases, sendo as principais: análise léxica, análise sintática, análise semântica, geração de código intermediário, otimização e geração de código final (AHO et al., 2008). 3.2 Análise Léxica A análise léxica é a primeira fase de um compilador. Ela consiste em ler a sequência de caracteres do código-fonte e agrupá-los em unidades significativas denominadas tokens. Um token é a menor unidade sintática de um programa, como palavras reservadas, identificadores, operadores e delimitadores. O programa responsável por essa etapa é chamado de analisador léxico ou scanner (DELAMARO, 2004). 3.3 Expressões Regulares e Gramáticas As expressões regulares são utilizadas para descrever os padrões que definem os tokens de uma linguagem. Elas constituem a base teórica sobre a qual os analisadores léxicos são construídos. Uma gramática formal especifica as regras de formação das sentenças válidas em uma linguagem, sendo um elemento central na teoria dos compiladores (AHO et al., 2008). 3.4 Ferramentas Utilizadas NetBeans IDE 8.1 é um ambiente de desenvolvimento integrado (IDE) de código aberto, suportado pela Oracle, amplamente utilizado para desenvolvimento em Java. Oferece recursos como edição de código com destaque de sintaxe, depuração, gerenciamento de projetos e suporte a plug-ins. Java JDK 1.8.0 (Java Development Kit) é um conjunto de ferramentas necessárias para o desenvolvimento de aplicações em Java SE, incluindo o compilador javac, a máquina virtual Java (JVM) e bibliotecas padrão. JFlex 1.6.1 é um gerador de analisadores léxicos escrito em Java. A partir de uma especificação formal definida pelo desenvolvedor em um arquivo .flex, a ferramenta gera automaticamente o código-fonte Java do analisador léxico correspondente. Sua utilização é gratuita, sob licença de software livre. 4 METODOLOGIA As atividades práticas foram realizadas em laboratório de informática, com um computador por aluno (ou por dupla), utilizando os softwares descritos anteriormente. Os procedimentos foram conduzidos em duas etapas principais, conforme detalhado a seguir. 6 4.1 Infraestrutura Utilizada Item Descrição Local Laboratório de Informática Hardware 1 computador por aluno/dupla Sistema Operacional Windows IDE NetBeans 8.1 Linguagem Java (JDK 1.8.0) Gerador Léxico JFlex 1.6.1 Licença Software Livre 4.2 Procedimento 1 — Conhecimento e Instalação dos Softwares Na primeira etapa, foram apresentados os softwares que seriam utilizados durante o curso, com demonstração das respectivas interfaces e recursos. O objetivo foi garantir que os alunos tivessem plena familiaridade com os programas antes de iniciar o desenvolvimento prático. As etapas realizadas foram: a) Apresentação do IDE NetBeans 8.1 e sua interface principal; b) Apresentação do Java JDK 1.8.0 e sua configuração no sistema operacional; c) Apresentação do JFlex 1.6.1 e sua função como gerador de analisadores léxicos; d) Instalação e configuração de cada ferramenta nos computadores do laboratório. 4.3 Procedimento 2 — Criação da Especificação Léxica Na segunda etapa, foi dado início à construção do projeto que será desenvolvido ao longo da Unidade 2 do livro didático. Os passos realizados foram os seguintes: a) Abertura do NetBeans 8.1; b) Criação de um novo projeto Java Application com o nome Unidade2, organizado na pasta C:\COMPILADORES para facilitar a localização futura; c) Instalação da biblioteca JFlex 1.6.1 como plug-in do NetBeans, com auxílio de vídeo tutorial disponibilizado pelo professor; 7 d) Criação de um Pacote Java denominadoCompilador dentro do projeto; e) Criação do arquivo de especificação léxica. Ressalta-se que este arquivo deve ser criado como arquivo vazio, e não como uma classe Java. A extensão utilizada é .flex, resultando no arquivo especificacao.flex. Observação importante: Um erro comum entre iniciantes é criar uma classe Java vazia em vez de um arquivo vazio com extensão .flex. Os dois tipos de arquivo possuem natureza e comportamento distintos dentro do NetBeans. 5 RESULTADOS E DISCUSSÃO Ao final das atividades práticas, foi possível verificar os seguintes resultados: Quanto ao Procedimento 1, Tive compreensão satisfatória acerca das ferramentas apresentadas, identificando a função de cada software dentro do processo de desenvolvimento de um compilador. A instalação foi realizada com sucesso em todos os computadores do laboratório. Quanto ao Procedimento 2, o projeto Unidade2 foi criado corretamente no ambiente NetBeans, com a estrutura de pacotes adequada. O plug-in JFlex foi instalado e integrado ao projeto. O arquivo especificacao.flex foi gerado como arquivo vazio com a extensão correta, preparando o ambiente para as próximas etapas da disciplina. As atividades desta aula prática serviram como base introdutória para o entendimento do processo de análise léxica e para a construção incremental de um compilador simples, que será desenvolvido ao longo das próximas unidades. 6 CONCLUSÃO A aula prática da Unidade 1, Seção 1.3 da disciplina de Compiladores cumpriu seus objetivos ao proporcionar uma apresentação estruturada dos softwares e ao iniciar o desenvolvimento de um projeto léxico em Java com o suporte do JFlex. O contato inicial com as ferramentas reduziu possíveis dificuldades futuras relacionadas à configuração do ambiente de desenvolvimento. A experiência reforçou a importância da análise léxica como etapa fundamental no processo de compilação, além de evidenciar a relevância do uso de ferramentas automatizadas — como o JFlex — para a geração de analisadores léxicos eficientes e baseados em especificações formais. 8 REFERÊNCIAS AHO, Alfred V. et al. Compiladores: princípios, técnicas e ferramentas. 2. ed. São Paulo: Pearson Addison-Wesley, 2008. DELAMARO, Márcio Eduardo. Como construir um compilador utilizando ferramentas Java. São Paulo: Novatec, 2004. JFLEX. JFlex — The Fast Scanner Generator for Java. Versão 1.6.1. Disponível em: http://www.jflex.de/download.html. ORACLE. Java SE Development Kit 8 Downloads. Disponível em: http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html. NETBEANS. NetBeans IDE. Versão 8.1. Disponível em: https://netbeans.apache.org.