User Comments

This web page contains responses to questionnaires that we put out from time to time on their opinions of JavaCC and related tools. If you would like to make a contribution to this web page, please send email to javacc-support@metamata.com.



From ward@c2.com  Sun Aug  3 15:06:38 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

Mastering a scanner and parser generator gives a programmer mastery
over structured text. For the Java programmer, JavaCC is the generator
to master.

3.  How would you classify your use of JavaCC?

serious product development 

At the heart of our application is a schema definition that describes
all of the business objects. From this definition, our JavaCC based
translators produce Java stubs, meta data, and other translators.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	9

I would have given JavaCC a 10, but it keeps getting better.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	7

I learned a lot about JavaCC by studying JJTree. I chose not to use
JJTree simply because my colleagues were not skilled in compiler
issues.  I wanted to avoid the extra layer of indirection and
complexity. I also found it convenient to pass context through
production arguments and return values. By this means I did
substantial translation before constructing my simplified syntax
trees.

JJTree combined with the "Visitor" design pattern would make an
extreamly versitle multi-target translator.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	8

Frankly, I am astounded that the developers at (Metamata) find the time
and patience to routinely deliver such thoughtfull replies to both
experts and compiler newbies.

I caught the documentation between generations (in March) but still
found it sufficient to answer every question I had. The prose were
concise and direct -- ideal for someone in a hurry. The examples
complemented these prose with useful techniques that I borrowed
freely.  I was able to learn JavaCC and JJTree, and produce a working
translator, in less than a week. And the experience was exhilerating.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

Yes, Lex and Yacc.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	10

I've found the LL vs LALR arguments rather accademic. Developers who
are really trying to solve problems don't mind writing the productions
the way that works. When problems occur, I find LL easier to think
through.  And, the solution to parsing problems usually involves
moving responsibilities between the scanner and the parser, so JavaCC
wins again by integrating these so nicely.



From sjb@research.bell-labs.com  Mon Jul 28 12:54:03 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

JavaCC takes a grammatical description of a language and produces a
parser and lexical analyzer for that language.  The parser is a
top-down parser with a variable amount of lookahead.  The lexer
supports lexical states as well as a powerful (and clever) feature for
keeping the white space and comments from the input without having it
interfere with the parse output.

jjtree is a preprocessor for a javacc grammar file which adds code to
produce an AST (abstract syntax tree) as the result of the parser.  It
is very powerful and versatile.  It can be used to produce simple
trees with almost no work.  It can also be configured to produce
customized trees with user supplied classes for each node type.  It
can even be used to produce a parser which takes a factory object at
run time to determine the classes to use to represent the various
non-terminals in the grammar.
 
3.  How would you classify your use of JavaCC?

	 serious product development

I used javacc and jjtree to produce a parser for a "little language we
designed for our project.  The parser was designed to support a
pluggable backend and there are now three different backends in use or
under development.
 
4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	10

I have found javacc to be a real pleasure to use.  I prefer its
top-down parser to the bottom-up parsers produced by tools like yacc
and bison.  In addition, the folks developing javacc seem to be
prescient.  Each time I started thinking about adding another feature
to my parser (preservation of comments and white space, better error
handling, etc.), they would announce support for it in the next
release.
 
5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	10

jjtree is a powerful complement to javacc.  It allows you to create a
parser which builds an AST (abstract syntax tree) with little more
work than is required to write the parser itself.  jjtree is highly
customizable allowing you to specify a class to associate with each
non-terminal of the grammar and generating code which creates an AST
of these objects.  If you don't need this generality, jjtree will
create classes for each non-terminal for you or even build the tree
with each node of the same class but identifying information inside.

There is even support for supplying a factory object at parser
execution time so that a single instance of the parser object can
produce ASTs using different classes on different invocations.  I used
this feature to produce my parser with a pluggable backend.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	10

One of the best things about using javacc and jjtree has been the
support.  I've never used a product from a large company which has
been supported like this.  All of the folks developing javacc and
jjtree actually read AND REPLY to their mail.  They respond to bug
reports telling you whether it really is a bug or if you have goofed.
If it is a bug, they almost always commit to fixing it in the next
release (and they do).  If its your mistake, they tell you rather than
just ignoring your mail.

They are also very open to suggestions for changes and/or
enhancements.  Again, if you make one, they don't ignore you.
They respond and either accept the idea or tell you why they don't
or can't do it.  Amazing!!!
 
8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

I've used yacc.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	10

I prefer the top-down to the bottom-up model.  Also, there is nothing
(to the best of my knowledge) like jjtree for yacc.

10. (If answer to 8 is YES) How would you compare JJTree with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	10

As far as I know, there is nothing equivalent to jjtree that works
with yacc.



From: "Tribble, Louis E" 

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

JavaCC is a parser generator which takes a straightforward, intuitive
language specification and creates a 100% pure Java program which will
scan and parse a text file. Because JavaCC can use substantial
lookahead and/or semantic information to make parsing decisions,
JavaCC grammars don't need the kind of mangling that's often required
by YACC grammars to handle real languages.  JavaCC allows semantic
actions to be written, in Java, into the grammar, into the nodes of
the syntax tree, or into external code which manipulates the syntax
tree. Although there is not really a comprehensive tutorial available,
the examples, FAQs, and mailing list archives provide ample
information, and the developers and many users help out on the mailing
list. The developers have shown a tremendous commitment to supporting
and improving their product.

3.  How would you classify your use of JavaCC?

Research: I am using JavaCC to design and implement an experimental
object-oriented programming language.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

JavaCC is robust and never gets in my way (Yacc always got in my way).

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

JJTree is critical to my use of JavaCC. It allows me to completely
separate my semantic processing from my grammar. With very few lines
of code supplied by me, the generated parser creates the intermediate
representation of my compiler: a combination abstract syntax tree and
control flow graph.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

Support is excellent, whether compared to free or commercial (not
free) products. I consider the presence of users on the mailing list
and the web page resources to be essential parts of this (keep those
mailing list archives coming!).

I can imagine that the support would not be suited to a really
clueless user, but that's not the target audience of a parser
generator.

7.  List all platforms on which you have run the JavaCC tools
    successfully.  If your platform is already listed below (after the
    questionnaire), please don't worry about answering this one.

Macintosh Apple MRJ 1.0.2, Macintosh Apple MRJ 1.5, Macintosh
Metrowerks Java (CodeWarrior).

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

Bison and BYACC, extensively. I cursorily evaluated PCCTS 1.x.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

Much, much more powerful, easier to use, and it integrates much better
with the rest of the application than the Yacc family. JavaCC's
approach to passing values during the parse is much more symbolic and
less error-prone than Yacc's, and the placement of actions has no
impact on the parse, unlike with Yacc.

From my recollection of PCCTS 1.x, JavaCC is also much easier to use
and integrate than it is.

10. (If answer to 8 is YES) How would you compare JJTree with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

JJTree automates most of the construction of an intermediate
representation, a task for which Yacc provides no support.



From Jason_Eaton@Vantive.COM  Tue Jul 29 09:27:33 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

A Yacc like parser generator for Java, allowing easy integration of
java productions in the parser.

3.  How would you classify your use of JavaCC?

We have pieces of java code embedded into html which a Javacc
generated parser is used to extract the java embedded code and run it.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

Very stable tool from day 1. I have only encountered one bug during
our development. I appreciate the amout of attention put into the code
to make it effecient and bug free.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	8

What makes it different from other free tools is the support you
recieve if there are questions or problems.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?
	
	Yacc

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	9

Easier to use the Yacc. Easier to customize.



From jwb@megasoft.com  Mon Jul 28 11:40:18 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

JavaCC is a robust and accessible tool for defining grammars.  The
parsers generated by JavaCC are quite efficient and can be easily
integrated in any Java application.  Programmers that use
StreamTokenizer are frequently reinventing the wheel.  Using a
parser-generator results in cleaner, more maintainable code.  With
JavaCC, it's easy to define the input grammar for virtually any
application that must accept (and verify) input that is more complex
than uniform records.  The grammar definitions clearly define the
input and this can be a great advantage when documenting the
interfaces among distributed components as well as for maintenance.
Problems that are introduced when hand-coded parsers are modified are
usually prevented by the checks that are made on the grammar
definition processed by JavaCC.

[This recommendation would be stronger if JJDoc were more robust.]

3.  How would you classify your use of JavaCC?

	. serious product development

JavaCC is used to define the structure of messages exchanged via HTTP
between CGI server and client applications.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

JavaCC provides an especially "natural" notation for grammar definition.
The debugging features are very helpful, but 0.6 leaves a bit to be
desired.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	9

The response from the JavaCC team is really good and they have the most
comprehensive FAQ of any product, Free or otherwise.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

I have only used a few flavors of Yacc/Bison.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	8

The ease/flexibility of integration of the parsers with the
application is much greater than Yacc/Bison.  Though I have had
difficulty with the specfics of the regular expression language and
grammar definition language, I believe they are more natural (to those
unbiased by previous exposure) than [f]lex+yacc/bison.

I haven't tried the error recovery in 0.7, but this is a significant
weakness.



From emeade@fvh.gtegsc.com  Mon Jul 28 11:59:47 1997

3.  How would you classify your use of JavaCC?

serious product development / Using or planing to use to gather
metrics, standardize coding standards (Pretty Print), and testing
(similar to JavaScope)

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

JavaCC is a very reliable well written tool, however speed leaves
something to be desired ( I currently Parse over 120 files. ) I am
sure that as Java speeds up this problem will go away.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

JJTree rocks.  It's usefulness is limited only by your imagination.
Packages can get a little crowded with all the Node classes though.



From theo@engr.mun.ca  Mon Jul 28 11:48:35 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

	JavaCC converts regular expression lexical descriptions and
	EBNF grammars to java lexers and parsers.

3.  How would you classify your use of JavaCC?

	I am using it for serious, but part time development of
	educational software.  Specifically, our system provides
	a window on the workings of a computer program written in
	in a high-level language.  JavaCC is used to parse the
	program.

	I also encouraged my students to use JavaCC for a scaled down
	version of the same project. Because it is a fairly simple
	system, I wasn't too worried about my student's ability to
	figure it out, after some help from me getting started.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

	What it does, it does quite well.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

	I haven't used it yet, but I plan to give it a try. Like JavaCC
	it does what it does very well (it seems). It might be nice to
	have a full blown attribute grammar system someday. Until then,
	JJTree does a nice job of the tree building part.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

	Yes yacc.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	6

	It's hard to beat LR(1) with top-down.

10. (If answer to 8 is YES) How would you compare JJTree with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	8

	Well there's nothing like JJTree in yacc.



From: Warren Pfeffer (slinky@pluto.njcc.com)

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

	I used JavaCC 0.6.1 to implement the JavaDepend
	utility. I've used lex/yacc extensively before
	but JavaCC blows them away when it comes to
	ease of use (no more struggling with yacc 
	inherited/synthesized attributes, you know $$, $-1).
	JavaCC is also portable (written in Java) so I
	don't need a yacc on Linux and a yacc on NT!

3.  How would you classify your use of JavaCC?

	serious product development

	I used JavaCC 0.6.1 to develop JavaDepend
	which is a makedepend for Java (available
	at http://pluto.njcc.com/~slinky/). It was
	very easy to modify the Java grammar that
	comes with JavaCC.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

	I took away 1 point for performance, however
	I know this will be improved in the coming
	release. I also took a point away for documentation
	which could be better organized and more detailed
	(how's about a JavaCC in a Nutshell book?)

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	8

	I've only used JavaCC for one project so far.
	I must say that the JavaCC team has responded
	to my questions in a timely and concise manner.
	I subscribe to the interest list and I am looking
	forward to the news group.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

	ATT lex/yacc
	Berkley byacc
	GNU flex/bison
	PCCTS

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	8

	See answer to question #2



From jheintz@iconcomp.com  Mon Jul 28 11:57:10 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

JavaCC is a lexer/parser written in Java that generated Java code.  It
generated an ll(k) parser.  Additionally, it has integration to JJTree
and JavaScope.  JJTree is a tree generator that run from annotating
the JavaCC grammar.  JavaScope is designed to capture statistics of
usage of the various paths in the grammar.

3.  How would you classify your use of JavaCC?

Serious product development as well as multiple convenience apps.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

    8

I have never before used a lexer or parser so I am a bit new at this
stuff.  I would have given it a 10 because I am very happy with it,
but still do have some problems.  (For example I want to recognize a
specific string in one instance, but in others I want that string to
be treated as an IDENTIFIER token.  Basically I don't want that string
reserved.)

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

    6

I think that JJTree is a highly useful tool.  I also think that it has
the capability to grow.  (Not that it does things wrong now, just that
it could provide features to make development easier.)

Some of the things that I am running into deal with trying separate
Java packages based on the Open-Closed principle.  What I wanted to do
was have a package called parser that had all the JavaCC/JJTree file
in it, and a package called parser.nodes that had implementations of
the _important_ nodes.  Here is my type hierachy:

	parser.Node
		\
		parser.SimpleNode	some.package.Node1Interface
		|		\		|
	parser.ASTNode2	parser.nodes.Ancestor1	
					|
				parser.ASTNode1

Well, parser.nodes.Ancestor1 and parser.SimpleNode and parser.ASTNode1
are all circularly dependent.  Even the constructor for ASTNode1, and
thus for Ancestor1 has a reference to parser.Parser.  This makes it
really hard to compile by hand and it violates the Open-Closed
principle.

I have already made some suggestions to the JavaCC mailing list about
some added notations to the grammar file to generate the AST node
files.  I truly believe that a client to a generated file should never
modify that file.  The client should sub-class it, super-class it,
adapt-to it, or generate it with the needed behavior.  Since JJTree
instanciates the AST node class, this invalidates sub-classing them.

I think that JJTree is already a tremendous product, and that it has
tremendous potential as well to truly fit well into an object oriented
component system.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

    7


I want to stress that I am using JavaCC and JJTree in my products and
loving it!  Thanks for listening to my feedback, let me know if you
want any more of my opinions ;-) (Obviously I like to talk about this
stuff)

ps - I read about the Open-Closed Principle here:
Martin, R. C. "The Open-Closed Principle," C++ Report, Jan. 1996. 



From wkao@yahoo.com  Mon Jul 28 13:07:18 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

	The document is very poor, although product is superior.

3.  How would you classify your use of JavaCC?

	Serious product development.
	I am using JavaCC as a very important part of my project.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	I need user's guile, user's manual, and examples to pick up the
	information that I need to use JavaCC.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	I have hard time to find good documentation.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

	Yacc.

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	9



From fmyers@cs.iupui.edu  Mon Jul 28 15:28:54 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

	A lex/yacc equivalent for use with Java providing an acceptable
	object oriented framework to work with.

3.  How would you classify your use of JavaCC?

	educational research development

	development of a programming language/debugger/virtual machine
	for experiments by computer science students

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

		6

	I really like the foundations of the tool.  JavaCC as a whole
	looses at least 2 points due to the lack of quality and
	informative documentation.  I would still recommend the
	product to anyone and am very pleased with it.  I look
	forward to future of a more complete product.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

		7

	Once again, documentation is a critical issue.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

		4

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

	Yes

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

		9 

	I find JavaCC much more intuitive with better syntax and
	layout.

10. (If answer to 8 is YES) How would you compare JJTree with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

		9

	(same as above except s/JavaCC/JJTree/)



From speck@ruc.dk  Wed Jul 30 00:13:44 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

It is _the_ replacement for lex/yacc when writing java appls.

3.  How would you classify your use of JavaCC?

serious product development

Parsing HTML like syntax for specialized database import from a DB2

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	9 (Same for JJTree, I don't use JavaCC without JJTree)

Easy to use. Easy to understand. (But you have to get used to that it
generates a lot of files).


6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	3

The documentation is hard to find. The web pages are not too well
organized. There is too little documentation online. The tutorials are
many, but you don't learn much from them. Especially the LOOKAHEAD
tutorials doesn't help users not knowing the effects on beforehand.

8.  Have you used other similar tools such as PCCTS, JavaCup, Yacc,
    etc.?

  yacc

9.  (If answer to 8 is YES) How would you compare JavaCC with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	9

easy to use, fast to get running with a new grammer.

10. (If answer to 8 is YES) How would you compare JJTree with these
    other tools?  At least provide a number from 0(very unfavorable) to
    10(very favorable) and then preferably write something also.

	9

same. But I think we should have an option to let JJTree call JavaCC
directly, so that compiling the grammar is a one-step think. This
makes Macintosh (and any other GUI IDEs) users happier.



From vad@iaebox.iae.nsk.su  Thu Jul 31 03:06:56 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

The system that genrates programs to process and analyse text files.

3.  How would you classify your use of JavaCC?

serious product development

We are developing a kind of Jscope product now. We plan also to use
JavaCC in a kind of Internet "Robot"

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

It works. The documentation at least can be understood. It is very
useful tool.

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	6

Actually we do not use it (because we have no need to) but it seems to
be useful tool in principle.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	8

Support is sufficient and is better than for many other tools. However
it would br nice to have more comprehansive documentation or tutorial
like for JDK.



From scott.davis@dsto.defence.GOV.AU  Thu Jul 31 16:56:23 1997

2.  Please provide a short one paragraph description of the JavaCC
    tools as a recommendation to someone who has never seen or used
    our tools before.

JavaCC is an easy-to-use-and-maintain method of writing a parser for a
text file. It takes a little bit of effort to learn it if you are
already familiar with Java and the StringTokenizer class, but it is
MUCH easier to maintain the reader as the format of the input file
evolves and becomes more complex.
 
3.  How would you classify your use of JavaCC?

internal organisation use.

I use JavaCC to read the (rather complex) "documents" or
"configuration files" for a project in our organisation. I guess these
files are a sort of scripting language for our research project. As
the project evolves, the content of these files is becoming larger and
more complex. JavaCC provides a much more error-proof way of reading
them than writing and maintaining the reader by hand.

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	9

I have never tried competing tools, so can't compare them.

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	5

The mailing list seems to be thriving, and always answers questions promptly.
I haven't required more formal support.



From CarlManning@AI.MIT.EDU  Wed Aug 20 20:07:21 1997

3.  How would you classify your use of JavaCC?

research/education

4.  What are your opinions of JavaCC?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	8

5.  What are your opinions of JJTree?  At least provide a number from
    0(horrible) to 10(the greatest) and then preferably write something
    also.

	7

nice tool, though doc doesn't show how to do left recursive
productions by parsing, then popping extra node off stack and fixing
up begin/end -- e.g., to parse x.y.z ... as (...(((x).y).z)...)

6.  How would you rate support for the JavaCC tools.  Please compare it
    with other tools - both free tools and those that come with formal
    support.  At least provide a number from 0(horrible) to 10(the
    greatest) and then preferably write something also.

	8

mailing list seems responsive


The following responses are to an older questionnaire and contain answers to the following three questions:

  • What are your opinions of JavaCC and the other associated tools (JJTree and JJDoc)?

  • Have you used other similar tools such as PCCTS, Yacc, etc.? How would you compare JavaCC with these tools?

  • How would you classify your use of JavaCC?

We have taken the liberty of replacing occurrences of the old name with the new name of the tool.


Date: Sat, 25 Jan 1997 01:05:54 -0500 (EST)
From: pnfisher@pams.ncsu.edu

JavaCC is the coolest compiler-compiler that I've seen in years.
It's off to a great start and should be seriously considered
by any developer that's in need of this type of tool.  It's
easily capable of supporting the features necessary for a
very large and complex project.  JavaCC's input notation is a
breeze to use -- extremely logical, and much easier to use
than lex and yacc.

I've used flex and bison by the GNU Project.  JavaCC is much easier
to use than flex and bison for a full compiler-compiler where both
a grammar and lexer are necessary.  The interaction of the two
under JavaCC is the best that I've seen.  The only real work that
JavaCC needs is on its lexer, as it doesn't quite have the power of
flex as of yet, but I'm sure that in time, JavaCC will gain 
equivalent features.

[I use JavaCC for] Serious product development.

Date: Fri, 17 Jan 1997 19:12:22 -0500
From: kimbo@highway1.com (Kimbo Mundy)

JavaCC is fantastic.  It is more powerful *and* easy to use.  I love it!

I have used yacc and lex.  The way JavaCC handles grammars is so much more
straightforward than LALR(1) parsers.  The only downside is that the
parsers are not as fast.

I am the founder of a small Internet commerce startup.  The company was
founded to build a single commercial application.  The parser I am
writing with JavaCC is a critical component of our system.  Using JavaCC
will let us ship our first product weeks earlier than we could have
otherwise.  So it is fair to say that JavaCC is critical to our company's
success.

Date: Wed, 22 Jan 1997 16:08:42 -0400
From: Jim_Kimble@baan.com

JavaCC is as easy to use as Java, which makes it extremely
powerful because it's actually approachable by someone who has even
a modest command of Java programming -- the ability to recite from
memory hundreds of pages of Aho's seminal works isn't a pre-req for
using JavaCC (unlike lex/yacc).  JavaCC is extremely intuitive (just like
Java) and that makes for great synergy;  I've indirectly become a better
Java programmer while using JavaCC, and that's indirectly made me a better
JavaCC user... That kind of tight integration hasn't been seen since the
1970's releases of UNIX and C (both are elegant in their own rights but
together they're more than the sum of their parts, so to say).

JavaCC is much more useable, readable and tolerable [than other
tools].  I've used Lex in real-life programming to parse input streams
of unknown (human) origin, but not as often as I could have.  JavaCC
is so "friendly" that I use it routinely for tasks that are equally
well-suited for JavaCC, Lex/Yacc, etc. (for example, parsing a user's
config files or writing a home-grown scripting "language").

I stay involved for fun and person edification, but I've used JavaCC on
several occasions to do meat-and-potatoes kinds of hard-code lexing and/or
parsing.  Except for the fact that I needed to add a new entry
to the default rules' ".SUFFIX:" tag in our project-wide Makefile rules,
using JavaCC fits seemlessly in our development environment.

Date: Fri, 17 Jan 1997 20:19:16 -0600 (CST)
From: "Thomas H. Moog" (tmoog@mcs.net)

Conceptually clean, maintained, robust.  Haven't used JJTree.

Hate yacc.  Use pccts quite a bit, but it suffers from lack
of attention by the developer.

[I use JavaCC for] Serious development.

Date: Tue, 21 Jan 97 08:47:13 -0800
From: "David Wagner" (David.A.Wagner@jpl.nasa.gov)

JavaCC: Very easy to use, even with the very incomplete documentation
provided.  (Not to say that more documentation and examples aren't
needed, though).  Good points:

* error messages that suggest likely fixes

* combined lexer/parser generation

* use of regular expressions to express lexical and syntactic patterns.

Weak points:

* still needs a good generalized error handling mechanism instead of
  printing messages to System.out.

I haven't used JJTree.

I've used yacc quite a bit, with C and C++, and this is definitely
much better.  Part of that is just that JavaCC and Java are much
better integrated than C or C++ and Yacc.  JavaCC/Java makes it
somewhat easier to write a parser in the first place, because you
don't have to think about all of the gotcha's in Yacc (particularly
memory leaks).  With JavaCC/Java you also needn't write a separate
lexer.

[I use JavaCC for] Prototype product development.

Date: Fri, 17 Jan 1997 23:41:50 -0600
From: "Bob Horvath" (elvis@graceland.com)

JavaCC is very easy to use and is becoming more and more powerful 
with each release. My biggest complaint at this point is a lack of 
error handling which I understand is in an upcoming release.

I recently wrote a compiler using the flex and bison (GNU lex and
yacc imitations), and find JavaCC a lot easier to use.  Having the
lexer and parser in the same file makes it a lot easier to maintain.

I have not tried PCCTS, but the being able to express grammars
without left recursion is much more intuitive way of building a
parser. The compiler project I wrote in lex and yacc contained a lot
of lists of items, and there was a lot of left recursion.

Being able to pass objects up and down the parser is very
powerful. Using yacc, I could only pass pointers to structs - not 
even typedefs that were pointers to structs to pass up (couldn't pass 
anything down) anything of any complexity.  

The Token objects give you line and column information which is
something that I had to create myself using lex and yacc. 

I currently am using JavaCC on a project which I hope to 
turn into a product someday.

Date: Thu, 23 Jan 1997 15:52:44 +0100
From: Jonas Kvarnstrom (jonkv@lysator.liu.se)

I have only used JavaCC itself (not JJTree or any other tool).  I think
it is an excellent tool -- currently its documentation seems a bit out
of date and is not very "organized", but apart from that, it is very
useful.  I especially like the fact that it is an LL(k)-parser and not
an LR(1) parser; I used an LR(1) parser before and it seemed impossible
to get any reasonable error messages from it.  With JavaCC, at least I get
some kind of message telling me what the parser expected.

I have written my own grammar using Java_CUP.  Compared to that tool,
JavaCC grammars seem "cleaner" and definitely more powerful.  Even
disregarding the fact that Java_CUP is bottom-up and JavaCC is top-down,
Java_CUP forces you to declare tokens before you define them and has no
lexer generator.  All terminal tokens have to be declared and given
names (you can't simply use a quoted string such as "+" in the
grammar).  
It can only generate grammars with a given start symbol; in my JavaCC
version of the grammar, I use multiple start symbols -- one when I want
to parse a complete file, one when I want to parse a single statement
that a user enters, and so on.

I am developing a tool for a logic for reasoning for action and change
(within the Artificial Intelligence area).  I need to parse scenario
descriptions; the grammar is currently about 2000 lines including
actions.  I guess you could call it "serious product development" in the
sense that I am developing a system that we are using in our work and
research, but it is not a *commercial* product.

Date: Wed, 22 Jan 1997 15:20:02 -0800
From: Michael Van De Vanter (mlvdv@springboard)

I use only the lexical analysis part of JavaCC, but I push that hard.  I 
can say that it is a very flexible and robust tool, very well suited 
for the kind of work I'm doing.

JavaCC compares very favorably with lex, the other tool I've used to do 
similar work.

I use JavaCC for an experimental, nonstandard application

Date: Wed, 22 Jan 1997 18:28:59 -0500
From: Michael Keirnan (mgk@atg.com)

I'm very happy with JavaCC, thank you! It is easier for a non
"lanaguage guy" like myself to hack together a reliable parser using
JavaCC than lex+yacc.  Plus of course, since everything we do here is
Java all the Java benefits apply.

Yes, I've used yacc. I find JavaCC easier and more flexible to use
than yacc + lex.  However getting used to the JavaCC world was a
little difficult and required a dive-in and scratch your head
approach.

[I use JavaCC for] for serious product development and consulting
projects 

Date: Wed, 29 Jan 1997 14:13:35 -0500
From: "Kurt W Guenther" (Kurt.W.Guenther@MCI.Com)

JavaCC is very good.  I've only used lex/yacc in the past, so I found
JavaCC very easy to manipulate and use.  The resultant source code
executes faster then I would expect.

Once I got into it, I found JavaCC much easier to use.  One of our
applications uses 2 different parsers, so we were able to use to
separate parse classes for this.  (If I was using lex/yacc, I think I
would have to put one or both parsers into a shared object to avoid name
space collisions.

[I use JavaCC for] Serious product development.  I'm using JavaCC to
parse 800 routing data that doesn't qualify as a context free grammer.
I used JavaCC to lex and parse tokens into a parse "diagram" (ie, not
really a tree) that is (yet another) state machine to use context data
to transform the parse diagram to an object diagram.  The object
diagram is then presented to the user via an RMI interface.  A
previous C++ effort wrote a parser by hand, and I was able to write
the same in Java using JavaCC in a quarter the time.

Date: Mon, 20 Jan 1997 10:27:03 -0500
From: Joe Hutchinson (sasjeh@unx.sas.com)

JavaCC is a very useful and flexible tool, and its use has accelerated
my project development considerably

I have only a fleeting experience with PCCTS, and JavaCC seems to be
fairly comparable, only without some of the bells and whistles such as
automatic node creation and symbol table management. However, the ease
of programming these things yourself using java make those extras
unnecessary in my opinion.

[I use JavaCC for] serious product development

Date: Fri, 17 Jan 1997 17:07:40 -0600 (CST)
From: chenq@chistech.com (QiFan Chen)

Very handy for Java based development.

[Have used] Yacc, byacc, lex and flex. The size of the generated java
code [from JavaCC] concerns us a little bit (the size of the
TokenManager in parcular).

[I use JavaCC for] serious product development

Date: Fri, 17 Jan 1997 15:08:00 -0800
From: Mike Lehman (mgl@cereus7.com)

Very nice.  My only wish is that you make it easier to handle
line oriented languages by (1) providing a mechanism to detect
line transitions and continuations and (2) causing parsing to
stop at the end of the line.  Also, I would like to take the
error message output and be able to override it so that I could
route it to somewhere other than System.out.  Otherwise, It's great.
It came along at just the right time for our project and has saved
probably 80 - 100 hours in the past two months!

I've used a variety of other tools, though mostly older than Yacc.
I like the ability to have JAVACODE but I wish I could code
a real, boolean-returning, non-terminal in Java.

[I use JavaCC for] Definately serious product development

Date: Fri, 17 Jan 1997 15:25:04 -0800
From: Jeffrey Lichtman (swazoo@cloudscape.com)

This is a very useful tool.  Without it, I would have a hard time
completing my project.  It has a lot of useful features - the lexical
states feature will make certain things much easier by allowing the
grammar to do more validation without having to reserve as many
keywords for the entire language.

I believe JavaCC needs better documentation with more examples.
Features like look-ahead should show examples of how to use it in
specific cases.

I have used Yacc, and evaluated Java Cup (a Java-based parser
generator similar to Yacc).  JavaCC is far superior to both, partly
because it has more features, and partly because it generates a
top-down parser (bottom-up parsers are non-intuitive and have poor
error reporting).  JavaCC's error reporting on grammar ambiguities is
very good - it tells the user how to change the grammar to solve the
problem.

[I use JavaCC for] Serious product development

Date: Fri, 17 Jan 1997 15:31:21 -0800
From: Juei Chang (jueic@ix.netcom.com)

It's a very good tool.

JavaCC has a cleaner syntax and is less complicated than PCCTS.

[I use JavaCC for] serious product development

Date: Fri, 17 Jan 1997 14:48:14 -0800
From: rajgopal@raja (Narayan Rajgopal)

Very useful tool. Well designed and fairly intuitive to use. 

Much cleaner design evolves than from using JavaCC. YACC being bottom
up, YACC actions tend to manipulate global state. 
Waiting for lexical actions to work in JavaCC.

[I use JavaCC for] serious product development

Date: Fri, 17 Jan 1997 14:45:22 -0800 (PST)
From: Walter Korman (wkorman@cs.ucsd.edu)

Extremely useful.  Their reliance on Java for execution and code
generation is critically important for the project I'm working on, and
so JavaCC is perfect for my use.

I've used Yacc, and found that it helped a great deal in understanding
the (admittedly slightly outdated) documentation accompanying JavaCC.
At the same time, however, it would be nice if JavaCC's grammar
specification looked more like the format Yacc uses, as most people
are very familiar with Yacc already.  I did see a comment made
somewhere in one of the documentation files re: the possibility of
JavaCC being able to use Yacc-like formats in the future.  I think
this would be a very worthwhile endeavor.

[I use JavaCC for] Serious graduate Computer Science research project

Date: Fri, 17 Jan 1997 16:39:36 -0800 (PST)
From: "J. Jorr" (jelle@ns.net)

Sure beats writing parsers by hand. And since java is the language du 
jour, it's a no-brainer.

I've used yacc, bison, flex and I've started reading PCCTS.

[I use JavaCC for] serious product development, something like 'Cold
Fusion' but with business specific extensions integretated with Sun's
Jeeves.

Date: Sat, 18 Jan 1997 17:22:48 -0330 (NST)
From: Muthu Muthuraman (muthu@cs.mun.ca)

Great tool!

Using it my for Masters program research work. Find it very
useful. But needs *MORE* documents and help files.

Date: Sun, 19 Jan 1997 21:24:01 -0500
From: "Patrick D. Hunt" (phunt@corvid.com)

A great parser generator.

I have used PCCTS and Lex/Yacc, Bison/Flex

JavaCC is definitly better than Lex/Yacc and Bison/Flex but is still
missing some of the functionality available in PCCTS (but JavaCC is
still an excellent tool).

[I use JavaCC for] serious product development

Date: Mon, 20 Jan 1997 14:38:06 +0100
From: Christophe Roux (ch_roux@worldnet.fr)

JavaCC is a good product. I don't need other tools such as JJTree

comparison with JavaCup/JavaLex : JavaCC is faster and able to stand
with large files and easier to fit with semantic ambiguities

[I use JavaCC for] serious product development

Date: Wed, 22 Jan 1997 15:56:51 -0700 (MST)
From: Martin Shumway (shumwaym@CS.ColoState.EDU)

A good first crack at the job.  Rather complex options, though,
I find it rather difficult to understand everything.  Is there 
anything that can be done to simplify use of the tool by providing
a user interface?  Or would this be little more than semantic sugar?
For instance, some options are incompatible, others tend to be used
together; a UI might make it easier to visualize what you are doing.

Another suggestion is that the generated java codes should be formatted
in some canonical way (beautified).  
Like it or not, one has to read and possibly
modify them by hand, and it's hard to do when the text is incoherent.

lex and yacc are easier.

[I use JavaCC for] university research in software engineering

Date: Thu, 23 Jan 1997 10:53:14 +1100
From: Oliver Burn (oliverb@lucent.com)

great, useful, maturing

JavaCC is far easier to use the Yacc

[I use JavaCC for] for internal company use

Date: Wed, 22 Jan 1997 18:55:03 -0700 (MST)
From: Tony Gee (tgee@gpu.srv.ualberta.ca)

JavaCC is powerful, useful, and cool to use.

Date: Mon, 27 Jan 1997 09:14:11 +1100
From: Doug South (dsouth@squirrel.com.au)

Before I found JavaCC, I searched the Net for parser generates in Java. I
found CUP (Construction of Useful Parsers) and Jax. Both of which were
ok, but insufficient for what I was looking to do. Then I found JavaCC.
JavaCC is by far the superior Java parser generator.

JavaCC is my first serious encounter with a parser generator.

[I use JavaCC for] As a hobby, but looking to produce product from my hobby

Copyright Metamata, Inc. 1997-2000. All Rights Reserved.