Sei sulla pagina 1di 10

JFLAP (Java Formal Languages and Automata Package)

Centro Federal de Educao Tecnolgica de Minas Gerais

Filipe Andrade Eduardo Rangel

RESUMO Neste trabalho pensou-se em criar um material de fcil entendimento para quem busca o aprendizado na ferramenta JFLAP para criao de autmatos finitos. Ferramenta esta que facilita o aprendizado de teoria de linguagens, atravs de uma interface simples e intuitiva. Ele pode ser usado tanto como aparato de auxlio s aulas, como ferramenta de estudo e pesquisa, facilitando tanto a criao de autmatos, quanto a verificao se esto corretos.

Palavras-chaves: linguagens formais, autmatos finitos, jflap

Graduando em Engenharia de Computao (CEFET-MG). E-mail andradefilipe@gmail.com Graduando em Engenharia de Computao (CEFET-MG). E-mail: eh.rangel@hotmail.com

INTRODUO: JFLAP (Java Formal Languages and Automata Package): O JFLAP e um pacote de ferramentas grficas no qual usado para criar e simular diversos tipos de autmatos, e converter diferentes representaes de linguagens. O seu principal objetivo facilitar o aprendizado de teoria de linguagens, atravs de uma interface simples e intuitiva. Ele pode ser usado tanto como aparato de auxlio s aulas, como ferramenta de estudo e pesquisa, facilitando tanto a criao de autmatos, quanto a verificao se esto corretos. O que se pode fazer com JFLAP em linguagens regulares: Criar Autmato finito determinstico (AFD) e Autmato finito determinstico (AFN) Gramticas regulares Expresses regulares Converter AFN em AFD mnimo AFN Expresses regulares AFN Gramticas regulares Simular AFD e AFN Combinar dois AFDs Comparar equivalncia O que se pode fazer com JFLAP em linguagens livres de contexto: Criar Nondeterministic PDA Gramtica livre de contexto Transformar Automato de pilha deterministico Gramatica livre de contexto CFG PDA (LL & SLR parser) CFG CNF CFG Parse table (LL and SLR) CFG Brute Force Parser O que se pode fazer com JFLAP em linguagens numericamente enumerveis: Criar Maquina de Turing (1 fita) Maquina de Turing (multi-fitas) Building Blocks Gramtica irrestrita

COMO INSTALAR O JFLAP:

A ultima verso do JFLAP, a 4.0b10, requer a presena do Java 1.4 ou superior. O melhor local de download a pgina de Java da Sun. Para a execuo do JFLAP necessria apenas a presena do arquivo JFLAP.jar. Para a sua execuo, as instrues gerais em diversas plataformas:
Mac OS X Unix/Linux Windows Duplo clique no arquivo JFLAP.jar No diretrio com o arquivo JFLAP.jar, execute java -jar JFLAP.jar em qualquer Shell Duplo clique no arquivo JFLAP.jar Se no funcionou, 1) Tenha certeza que instalou o Java 1.4 2) Se por acaso o arquivo salvo tem o nome JFLAP.zip, mude seu nome para JFLAP.jar.

DEFINIO: JFLAP define um autmato finito (FA) M como uma quntupla M = (Q, , qs, F) onde Q um conjunto finito de estados {qi | i um inteiro no negativo} o alfabeto de entrada finito a funo de transio : D 2T, onde D um subconjunto finito de Q * qs ( membro do Q) o estado inicial F ( um subconjunto de Q) o conjunto de estados finais Construo de diferentes tipos de autmatos em JFLAP bastante similar, ento vamos comear por construir um DFA para a linguagem L = { ambn: m 0, n> 0, n mpar}. Ou seja,vamos construir um DFA que reconhece que a linguagem de qualquer nmero de um, seguido por qualquer nmero mpar de b . A janela de edio: Para comear um novo autmato finito (AF), inicie o JFLAP e clique na opo Finite Automaton no menu que aparecer.

Isso deve abrir uma nova janela que permite criar e editar uma AF. O editor dividido em duas reas bsicas: a tela, que voc pode construir seu autmato, e na barra de ferramentas, que detm as ferramentas necessrias para construir o seu autmato.

Observe a barra de ferramentas mais de perto

Agora vamos criar nosso AF

Criando Estados Primeiro, vamos criar alguns estados. Para tanto, precisamos clicar em State Creator na barra de ferramentas. Em seguida, clique na tela em locais diferentes para criar estados..

Agora que criamos os estados, vamos definir qual e final e qual e inicial.

Definindo estados iniciais e finais Arbitrariamente, decidimos que q0 ser o nosso estado inicial. Para definir isso, primeiro selecione Attribute Editor tool na barra de ferramentas. Agora estamos no modo de edio de atributos, clique com boto direito em q0. Aparecer uma pop-up como mostrado a seguir:

No menu pop-up, selecione a caixa Initial. Uma seta brnca aparecera ao lado de q0 , logo estar definido como estado inicial.

Em seguida, vamos criar um estado final. Arbitrariamente, selecionamos q1 como nosso estado final. Para defini-lo como o estado final, boto direito do mouse sobre o estado e clique na caixa Final. Ela ter um contorno duplo, indicando que ele o estado final.

Agora que definimos os estados inicial e final, vamos passar a criar transicoes. Criando Transies: Sabemos as palavras em nossa gramatica podem comear com as, ento, o estado inicial deve ter uma transio de sada em a. Sabemos tambm que ele pode comear com qualquer nmero de as, o que significa que o AF deve estar no mesmo estado aps o processamento de entrada de qualquer nmero de as. Assim, a transio de sada em a para q0 deve voltar para q0. Para criar uma transio, primeiro selecione Transition Creator tool na barra de ferramentas. Ento, clique em q0. Uma caixa de texto deve aparecer sobre o estado:

Veja que , representa a palavra vazia, e aparece inicialmente na criao da transio. Pressione "a" na caixa de texto e pressione Enter. O seu estado ficara assim:

Em frente, sabemos que palavras em nossa linguagem devem terminar com um nmero mpar de bs. Logo, sabemos que a transio de b para q0 deve ser um estado final no qual terminar com b dever ser aceito. Para criar a transio de nosso estado inicial q0 para o nosso estado final q1, primeiro tenha certeza que a ferramenta Transition Creator est selecionada na barra de ferramentas. Ento, clique e segure q0,e arraste o mouse at q1 e finalmente solte o boto do mouse. Digite "b" no campo de texto da mesma forma que foi feito na transio anterior. A transio entre 2 estados deve aparecer como a seguir:

Por ltimo, sabemos que apenas palavras que terminam com um nmero mpar de bs devem ser aceitas. Assim, sabemos que q1 tem uma transio de sada em b, que no pode ter um loop de volta para q1. H duas opes para a transio: ele pode ir para o estado inicial q0, ou para um estado novo q2. Se a transio de b fosse para estado inicial q0, palavras no teriam que ser da forma ambn ; palavras como ababab tambm seriam aceitas. Assim, a transio no pode ser para q0, e deve ser a q2. Crie a transio b de q1 para q2. Como o AF deve aceitar palavras que terminem com um nmero mpar de bs, crie outra transio b de q2 para q1. Seu AF agora est complete e functional. E deve parecer com algo assim:

Rodando o autmato e realizando testes: Agora que voc terminou o seu FA, voc pode querer test-lo para ver se ele realmente aceita palavras da linguagem. Para fazer isso, selecione Input: Multiple Run na barra de menu.

Uma nova aba aparecer exibindo o autmato no painel esquerdo, e uma tabela de entrada direita:

Para testar palavras, clique na primeira linha na coluna de entrada e a digite. Pressione Enter para inserir outra seqncia. Quando voc terminar, clique em Executar Entradas para testar seu AF em todas as cadeias de entrada. Os resultados, aceitar ou rejeitar so exibidos na coluna Resultado. Voc tambm pode carregar as entradas de arquivo delimitado por espaos em branco. Basta clicar nas entradas Load e carregar o arquivo para adicionar cadeias de entrada adicionais para executar multipainel.

Referncias: http://jflap.org/ http://www.cs.duke.edu/csed/jflapworkshop/sigcse06/WorkshopIntroOverview. pdf http://www.cs.duke.edu/csed/jflap/tutorial/fa/createfa/fa.html http://www.cs.duke.edu/csed/jflap/whatis.html JFLAP An Interactive Formal Languages and Automata Package

Potrebbero piacerti anche