FERRAMENTAS DE ENSINO DE LINGUAGENS FORMAIS: UM COMPARATIVO Laila Maria Gomes Gechele (ICV-UNICENTRO), Prof. Ms. Sandra Mara Guse Scós Venske (Orientadora - Dep. Ciência da Computação/UNICENTRO), e-mail: [email protected] Palavras-chave: autômatos, gramáticas, ensino. RESUMO Para a Computação é fundamental o entendimento de conceitos relacionados à área de Teoria da Computação. Nesta pesquisa objetivou-se fazer o levantamento e estudo de alguns softwares que implementam computacionalmente a teoria dos Autômatos Finitos e Gramáticas, fornecendo dados de comparação entre estes softwares. Os softwares pesquisados foram: FSA, JLex, Transformations of Finite State Automata, SAGEMoLiC, JFlex, JFLAP, Powergrep e Language Emulator. INTRODUÇÃO A área de Teoria da Computação provê formalismos que são utilizados na resolução de diversos problemas. Os temas da área para este estudo foram Autômatos Finitos e Gramáticas da Hierarquia de Chomsky [SIP96]. Nesta pesquisa objetivou-se o levantamento e estudo de softwares que implementam conceitos de autômatos finitos e gramáticas. Tal estudo se justifica pelo fato de que ferramentas de aprendizado são importantes no ensino pela necessidade de praticar os conceitos de disciplinas teóricas. Este estudo fornece dados que podem proporcionar um comparativo, sendo apresentada uma descrição geral das ferramentas. Foram pesquisados oito softwares, dentre comerciais e acadêmicos, com código aberto ou não, alguns com instalação e outros funcionam via Internet. FERRAMENTAS Nesta seção são apresentadas as ferramentas pesquisadas. FSA A ferramenta FSA (Finite State Automaton Applet) [Gri00] foi usada em diversos cursos de computação e possui instruções de uso, contendo uma biblioteca de exemplos de autômatos finitos. Pode-se digitar cadeias a serem processadas e executá-las automaticamente. A versão on-line não permite que se conservem exemplos construídos. É um projeto da Universidade do Estado de Montana, sua última atualização foi em julho de 2000 e foi desenvolvida em Java. Jlex JLex (A Lexical Analyzer Generator for Java) [BER03] é um gerador de analise léxica desenvolvido na Universidade de Princeton. A versão atual é a 1.2.6 de 2003. A documentação apresenta sessões de especificações sobre a ferramenta, expressões regulares, desempenho, dentre outras. Disponibiliza todas as classes que a compõem, sendo simples de usar através de prompt de comando. Transformations of Finite State Automata Transformations of Finite State Automata [AYA99] é um applet educacional usado para otimizar autômatos finitos e foi desenvolvido por alunos da Universidade de Brasília em 1999. A ferramenta otimiza estados de autômatos finitos por eliminação de transições-lambda e não-determinismo e minimiza o autômato resultante. O software não possui documentação, contendo um tipo de ajuda no rodapé da tela. A ferramenta funciona on-line e foi implementada em Java. SAGEMoLiC SAGEMoLiC (System of Graphic Animation of Equivalence Theorems between Computational Models and Languages) [AYA02], é um software educacional da Universidade de Brasília de 2002, escrito em Java e tem versão on-line com instruções para uso. Para linguagens regulares permite manipulação de autômatos não-determinísticos (inclusive com transições-lambda), determinísticos e mínimos. Pode reduzir uma expressão regular para autômato. Para as linguagens livres de contexto permite derivações, traduz para a forma normal e transforma um autômato a pilha para gramática livre de contexto. SAGEMoLiC apresenta exemplos pré-construídos e permite gravar novas construções para reutilização posterior. JFlex JFlex (The Fast Scanner Generator for Java) [KLE05] é um gerador de análise léxica, escrito em Java, sendo uma reescrita do JLex. O JFlex indica tabelas de transição de autômato não-determinístico, determinístico inicial ou minimizado e expressão regular e faz reconhecimento de linguagens. JFlex está disponível para download e inclui dicas de instalação e documentação, classes pré-compiladas e código de fonte. A versão atual é JFlex 1.4.1 liberado em 2004. JFLAP JFLAP (Java Formal Languages and Automata Package) [ROD07] é um software para teste de conceitos de linguagens formais. Seu objetivo é facilitar o aprendizado dos temas com interface simples e intuitiva. A versão corrente é a 6.1 de 2007. Além dos exemplos oferecidos, permite a construção e gravação de outros. JFLAP possui publicações, dentre elas um livro para ensino da ferramenta. No site existe uma sessão para anúncios de workshops, e outra na qual podem ser postados bugs. Há um Help Index com as especificações para uso. Para download é feito um cadastro, com o qual foram obtidas estatísticas de uso de JFLAP no mundo. Powergrep O PowerGREP [GOY07] é um software comercial que faz uso de expressões regulares para buscar informações em arquivos e pastas, faz buscas de palavras em arquivos, como códigos-fonte, logs e sites. A documentação contém uma ampla apresentação de expressões regulares. O software está disponível em uma versão shareware para avaliação. A versão atual é 3.3.3 de 2007, desenvolvida em Delphi. PowerGREP é de fácil instalação e possui uma versão on-line para teste com uma apresentação didática de suas funcionalidades. Language Emulator O Language Emulator [VIE02] é um sistema integrado para manipulação de linguagens regulares desenvolvido em Java na Universidade Federal de Minas Gerais em 2002. Permite a manipulação de expressões regulares, autômatos determinísticos e não-determinísticos (incluindo transições-lambda), gramáticas regulares e máquinas formais. A ferramenta possui link para download sendo de fácil instalação. Existem artigos publicados, não tendo outro tipo de documentação. RESULTADOS E DISCUSSÕES Todas as ferramentas pesquisadas possuem certas especificidades que as diferem umas das outras. Neste estudo SAGEMoLic se mostrou a mais intuitiva de todas. JFLAP é a ferramenta que apresenta um número maior de funcionalidades e também é a mais utilizada em cursos de Teoria da Computação. Os applets FSA e Transformations of Finite State Automata são ideais para o início do aprendizado pela forma intuitiva com que são construídos os autômatos. CONCLUSÕES Esse trabalho teve por finalidade o levantamento e estudo de softwares que implementam a teoria relacionada a linguagens formais. A maior dificuldade encontrada resultou no fato de que a maioria das ferramentas não possui documentação completa. Alguns softwares não são intuitivos e o seu aprendizado é demorado. Esta pesquisa auxiliou no aprendizado sobre os temas envolvidos, seja através de artigos, documentação ou das próprias ferramentas estudadas. Os resultados obtidos poderão ser utilizados em disciplinas dentro do curso de Ciência da Computação e proporcionarão disseminação dos conceitos avaliados. REFERÊNCIAS [AYA02] Brasília. In: Universidade de Brasília: Grupo de Teoria da Computação. “A.H.R. da Silva e A.F. da Fonseca, R.B. Nogueira and M. Ayala-Rincón”. SAGEMoLiC. 2002. Disponível em: <http://www.mat.unb.br/~ayala/TCgroup/SAGEMoLiC/>. Acess: 11 jun 2007. [AYA99] Brasília. In: Universidade de Brasília: Grupo de Teoria da Computação. “Mauricio Ayala Rincón”. Transformations of Finite State Automata. Disponível em: <http://www.mat.unb.br/~ayala/TCgroup/MinFSAs/>. Acesso: 20 maio 2007. [BER03] In: Department of Computer Science. “Elliot Berk”. JLex: A Lexical Analyzer Generator for Java™. 2003. Disponível em: <http://www.cs.princeton.edu/~appel/modern/java/JLex/>. Acesso: 10 jun 2007. [GOY07] Muang, Nonthaburi, na Tailândia. In: JUST GREAT SOFTWARE Co. Ltd. “Jan Goyvaerts”. Windows grep Software to Search (and Replace) through Files and Folders on Your PC and Network. 2007. Disponível em: <http://www.powergrep.com/>. Acesso: 20 maio 2007. [Gri00] Montana. In: Universidade do estado de Montana (MSU). “Michael Grinder”. Finite State Automaton Applet. Disponível em: <http://www.cs.montana.edu/webworks/projects/fsa-old/fsa.html>. Acesso: 20 maio 2007. [KLE05] In: ”Gerwin Klein”. JFlex - The Fast Scanner Generator for Java. 2004. Disponível em: <http://jflex.de/index.html>. Acesso: 10 jun 2007. [ROD07] Durham, NC. In: Duke University Department of Computer Science. JFLAP. Disponível em: < http://www.jflap.org/ >. Acesso: 14 jun 2007. [SIP96] SIPSER, Michael. Introduction to the Theory of Computation. 2nd edition. Boston: PWSPublishing Company, 1996. [VIE02] Belo Horizonte, MG. In: Departamento de Ciência da Computação da Universidade Federal de Minas Gerais. “Luiz Filipe Menezes Vieira, Marcos Augusto Menezes Vieira, Newton José Vieira”. Fundamentos da Teoria da Computação. 2002. Disponível em: <http://homepages.dcc.ufmg.br/~lfvieira/ftc.html>. Acesso: 10 jun 2007.