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:
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