domingo, 21 de março de 2010

Aprendendo JavaCC

"Java Compiler Compiler [tm] (JavaCC [tm]) is the most popular parser generator for use with Java [tm] applications. A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar".

O  Java Compiler Compiler – javacc, poder ser obtido do site: https://javacc.dev.java.net/

O javacc é disponibilizado em um arquivo zipado. Na estrutura de diretório descompactado existe o arquivo javacc.jar dentro da subpasta lib. Além desse arquivo .jar existem diversos exemplos que devem ser estudados para facilitar o entendimento da ferramenta. Comece com os exemplos da subpasta: SimpleExamples e siga o arquivo README contido nessa pasta.

Para compilar esses exemplos via linha de comando siga uma das opções descritas a seguir. Nas opções 1 e 2 considera-se que vc está na pasta da gramática Simple1.jj que será compilada.
 
Opção 1: Crie uma variável de ambiente CLASSPATH, caso não exista. Inclua ou edite essa variável inserindo o caminho completo do arquivo javacc.jar. Deve ser incluído o nome do arquivo também. Considerando que o arquivo .JAR esteja na pasta c:\Java\javacc\lib. No classpath deve ser inserido: c:\Java\javacc\lib\javacc.jar. Compile a gramática Simple1.jj com o comando a seguir:
java javacc Simple1.jj

ou 

Opção 2: Indique via linha de comando o classpath:

java -cp c:\Java\javacc\lib\javacc.jar javacc Simple1.jj

ou

Opção 3: Descompacte o arquivo .jar em determinada pasta, com o comando a seguir:
jar -xf javacc.jar

Considerando que o arquivo .jar foi descompactado na pasta: c:\Java\javacc\lib e que vc está nessa pasta compile a gramática Simple1.jj na linha de comando da seguinte forma:

java javacc c:\Java\javacc\examples\SimpleExamples\Simple1.jj


Sugiro que seja seguida a opção 1 ou 2. Os comandos a seguir podem ser úteis para identificar alguns problemas que podem ocorrer nesse processo:

set classpath - exibe o classpath configurado

jar -tf javacc.jar - exibe todos os arquivos contidos no arquivo .jar


Recomendo os seguintes links:
JavaCC [tm]: Documentation Index
https://javacc.dev.java.net/doc/docindex.html

Possui uma gramática para pascal
http://blogs.sun.com/pascalcompilerinjavacc/entry/pascal_grammer_in_javacc

Esse artigo é muito bom e esclarece vários pontos
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-cooltools.html

Notação EFBN
http://pt.wikipedia.org/wiki/Formalismo_de_Backus-Naur

Plug-in do JavaCC para Eclipse
Downlload       :  http://sourceforge.net/projects/eclipse-javacc
Documentação:  http://eclipse-javacc.sourceforge.net/

Utilização do JavaCC na construção de um compilador
http://www.dicas-l.com.br/dicas-l/20040731.php

Boa leitura.

Pesquisar neste blog

Google