Tutorial de JFLEX Versão 1.1 (08/2004) – Leonardo Kasperavicius 1º Passo - Criação do arquivo .flex O programa JFlex serve para se criar uma classe Java que faz a análise léxica de qualquer arquivo texto. Para que o JFlex crie esta classe, devemos indicar para ele um arquivo .flex, que contém as regras da construção desta classe. Este é um exemplo de arquivo para ser utilizado no JFlex: Teste.flex %% <<- Indica o início das pré-definições %standalone <<- Faz com que a classe tenha uma função "main" %class Teste <<- Indica o nome da classe a ser gerada %{ int numA=0; <<- Contador para o número de letras A ou a %} %eof{ <<- Executar no final do arquivo texto System.out.println("Numeros de A's = " + numA); %eof} %% <<- Aqui começam as regras da linguagem... [a|A] { numA++; System.out.println("A"); } [ \n\t\r] { // ignora } <<- "a" ou "A" <<- Espaço, pula-linha, tabulações... ((0|1)*) { System.out.println("Bin"); } . { // ignora } <<- 0 ou 1 fechamento <<- Qualquer outra coisa Repare que este arquivo é composto de duas partes distintas, separadas por "%%". A primeira parte contém todas as declarações globais da classe que vai ser construída, enquanto que a segunda parte possue as regras do analisador léxico. Ainda poderia ter uma terceira parte, onde definiríamos o código em Java de funções criadas por nós, como por exemplo se fizéssemos uma função que fosse escrevendo em um arquivo texto, etc. 2º Passo - Utilizando o JFlex O próximo passo é executar o JFlex, para que ele gere o arquivo Teste.java. Se você instalou corretamente o JFlex, deverá indicar para o programa o caminho do seu arquivo Teste.flex. Clique em "Generate" para criar o arquivo, e você verá a seguinte mensagem: Isto significa que o arquivo foi criado com sucesso. Repare que foi criado um Autômato Não-Determinísco primeiramente, depois ele converteu para um Autômato Finito Determinísco, e depois minimizou os estados, o que resultou em um grafo com 10 estados. Mas e daí, não é verdade? O que importa é que o JFlex gerou para você um arquivo Teste.java, que você pode compilar e executar. 3º Passo - Compilando e executando o Teste.java Para compilar e testar o arquivo gerado é muito fácil, pessoal. Eu utilizei o JCreator, mas você pode utilizar qualquer outro método, inclusive compilar e executar via linha de comando. Abra o JCreator e crie um Projeto vazio no diretório onde está o Teste.java. Se estiver tudo certo, o arquivo estará aparecendo na aba FileView do JCreator: Se você compilar e executar o arquivo, verá a seguinte mensagem: Isto porque, na função main, ele espera que você entre com o nome do arquivo texto a ser analizado pelo programa. Criando um arquivo texto qualquer no mesmo diretório do Teste.class, você pode passar o nome dele como parâmetro. Para configurar a execução do Teste.class com parâmetros, devemos configurar o JCreator. Entre no menu Project -> Project Properties, entre na aba JDKTools e escolha a opção Run Application no combo "Select Tool Type". Dois cliques no <default>, na aba Parameters ative a opção "Prompt for main method arguments". Quando você executar o programa, vai aparecer uma janela perguntando o nome do arquivo, digite Teste.txt e você deverá obter o seguinte resultado: Ele reconheceu nosso arquivo e fez a análise léxica. É isto que se baseiou o nosso trabalho de Compiladores, construimos um programa que faz a análise léxica da linguagem Tiger, do livro "Modern Compiler Implementation in Java". O nosso trabalho está disponível em minha página pessoal : http://leocck.tripod.com/site/trabalhos/tiger/tiger.html