FERRAMENTAS DE ENSINO DE LINGUAGENS FORMAIS

Propaganda
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.
Download