JTB can be compared to JJTree in the following way:
10/2012-12/2014 - 1.4.8 : added generation of JavaCodeProductions ('%' syntax) ; fixed bug #3164860 ; fixed some messages ; fixed some problems (null choice for an empty choice, prefix / suffix management in lookahead) ; checked duplicated Javacode production names ; fixed the Java grammar (in ExplicitConstructorInvocation & ClassOrInterfaceBodyDeclaration) ; added annotations in the generated classes ; fixed some cases and improved printing specials (comments) ; improved short names generation for generated intermediate variables ; modified the warning message on ignored LOOKAHEAD (as it can actually be not ignored) ; fixed java blocs generation ; some internals improvements
09/2012 - 1.4.7 : added sub comments in the generated visitors java code ; did some optimizations ; fixed
bugs JTB-1 & JTB-2 ; fixed some generation errors ; added a check when 'n = prod()' and 'void prod()' ;
added the '!' syntax for not generating a node creation (in a BNFProduction, RegExprSpec and ExpansionUnit)
; fixed some Java grammar issues and did some refactoring ; added column numbers in messages ; performed
tests on more limit cases ; fixed missing
01/2011 - 1.4.6 : JTB hosted at http://java.net/projects/jtb ; new contributor (Francis Andre Kampbell) ;
added -va and -npfx and -nsfx options
12/2010 - 1.4.5 : Convert nodes and visitors output directories to absolute paths
7/2010 - 1.4.4 : Fixed missing space after throws issue in visiting MethodDeclaration & ConstructorDeclaration
of JavaPrinter; Fixed index issue in visiting TypeArguments of JavaPrinter
04/2010 - 1.4.3.2 : bug #2991455
04/2010 - 1.4.3.1 : bugs #2990962 and #2989497
03/2010 - 1.4.3 : Fixed wrong conditionals generation and TreeFormatter generation issues;
added node declarations initialization
02/2010 - 1.4.2 : Fixed missing java.util package in generated JTBToolkit class,
fixed accept inlining issue in visiting ExpansionChoices
02/2010 - 1.4.1 : Fixed wrong conditionals generation and missing static modifier for generated return types
issues (bug 2945965), fixed hard error in semantic checker, fixed command line options overwrite issue
11/2009 - 1.4.0 : New version delivered / integrated under the
JavaCC Eclipse Plug-in
xx/2005 - 1.3.2 : Last (known) version from UCLA Compilers Group
: see JTB 1.3.2 home page
JTB 1.4.7 is meant to be used as a front end for JavaCC 5.0, with a 1.6.0 JDK, and so is command line by nature.
On the command line:
New Features in version 1.4.0+ / 1.4.7
Here are the following enhancements that have been added to JTB 1.3.2:
i.e: JTB_O = "myout.jj" <-> -o myout.jj,
JTB_TK = true <-> -tk
How to use
Environment:
But it has been integrated within the JavaCC Eclipse Plugin, which embeds the latest
JTB version each time is is released, and avoids running the tool on the command line.java -jar jtb-1.4.x.jar -h
: to view all available options
java -jar jtb-1.4.x.jar [CL_Option] -si
: to use system.in as the input file
java -jar jtb-1.4.x.jar [CL_Option] [input-file]
: to use input-file as the input file
In the input file options section:options {(JTB_BOOL_OPT=(true|false); | JTB_STR_OPT="str";)*}
Options are the following:
CL_Option JTB_Option Description -cl JTB_CL=(true|false) Print a list of the classes generated to standard out -d dir JTB_D="dir" Short for (and overwrites) "-nd dir/syntaxtree -vd dir/visitor" -dl JTB_DL=(true|false) Generate depth level info -e JTB_E=(true|false) Suppress JTB semantic error checking -f JTB_F=(true|false) Use descriptive node class field names -h N/A Display this help message and quit -ia JTB_IA=(true|false) Inline visitors accept methods on base classes -jd JTB_JD=(true|false) Generate JavaDoc-friendly comments in the nodes and visitor -nd dir JTB_ND="dir" Use dir as the package for the syntax tree nodes -np pkg JTB_NP="pkg" Use pkg as the package for the syntax tree nodes -ns class JTB_NS="class" Use class as the class which all node classes will extend -o file JTB_o="file" Use file as the filename for the annotated output grammar -p pkg JTB_P="pkg" Short for (and overwrites) "-np pkg.syntaxtree -vp pkg.visitor" -pp JTB_PP=(true|false) Generate parent pointers in all node classes -printer JTB_PRINTER Generate a syntax tree dumping visitor -si N/A Read from standard input rather than a file -scheme JTB_SCHEME Generate Scheme records representing the grammar and a Scheme tree building visitor -tk JTB_TK=(true|false) Generate special tokens into the tree -vd dir JTB_VD="dir" Use dir as the package for the default visitor classes -vp pkg JTB_VP="pkg" Use pkg as the package for the default visitor classes -w JTB_W=(true|false ) Do not overwrite existing files Support
Feel free to report any bug or suggest enhancement at the
JavaCC Eclipse Plug-in Sourceforge site.License
JTB 1.3.2 is licensed under the BSD license.
JTB 1.4.x adds the GPL license and the CECILL license.