"Grzegorz Adam Hankiewicz" <[email protected]> wrote in message news:[email protected]... > > I googled for GOLD vs ANTLR and only found a thread five years ago that > stated ANTLR was better if you wanted the full kitchen sink, and GOLD was > just a bunch of hacks. > > Has somebody a link to a more recent comparison or do I have to write my > own homework?
You're right, it does seem to be hard to find a good comparison of the two. Here's what I was able to find: Another one a few years old: http://www.antlr.org/pipermail/antlr-interest/2004-October/009730.html Newer, but somewhat one-sided in favor of GOLD: http://books.slashdot.org/comments.pl?sid=566251&cid=23579953 Includes a lot of other parser generators: http://en.wikipedia.org/wiki/Comparison_of_parser_generators#Context-free_languages I have only very limited experience with ANTLR, and I've spent much more time with GOLD (Which I personally prefer, as you can probably tell from the fact that I wrote a GOLD engine ;) ), but here's my best attempt at an accurate neutral comparison: [Neutral?] - GOLD is LALR and ANTLR is LL(*) (For whatever that information is worth....You could probably find an LALR vs LL(*) comparison somewhere.) [Pro ANTLR] - ANTLR is open-source and cross-platform (because it runs on the JVM). But, GOLD is only available on Windows (although it might work on wine, I haven't tried) and doesn't have any released source (although it is freeware). However, FWIW, I do intend to make and release an open-source cross-platform equivalent to GOLD (fully-compatible with GOLD, of course). [Pro ANTLR] - ANTLR's grammar definition syntax includes certain bells and whistles that GOLD doesn't have, like extensive rewrite rules (with GOLD, you have to do rewrites yourself in your app). [Pro GOLD] - I personally find ANTLR very difficult to learn as it's documentation seems to be quite poor. GOLD has very good documentation (although that's probably to be expected since GOLD seems to be much simpler). [Pro ANTLR] - ANTLR seems to be much more popular and more heavily used. Sometimes a large user base can be good. [Pro GOLD] - GOLD has much better support for various host languages (by that I mean languages that can be used to write the programs that will parse/manipulate the generated grammars). GOLD already supports far more host languages than ANTLR, and I'm certain this is because adding support for a host language is far easier in GOLD. Also, there's no ANTLR for D (I tried a while ago, but gave up since it was such a huge painful undertaking, I basically would have had to port an entire production-level Java app to D). [Neutral] - With GOLD, host language is completely separated from grammar. This allows for far more flexibility (see some of the items below) and it makes the grammars much more reusable, but the cost is that you lose the convenience of being able to embed code directly into your grammar. [Pro GOLD] - Since ANTLR wants to convert all it's grammars directly to lexer/parser source code, it's not a good choice for programs that need to be able to work with grammars that the *users* of your program generate. For example, I used GOLD to write a program that outputs the parse tree of any source file written in any GOLD grammar. An equivalent ANTLR program would have been far more difficult to create and to use. [Pro GOLD] - Both GOLD and ANTLR come with GUI tools to help build grammars, but ANTLR's official GUI tool only works with grammars that have embedded Java (ie, grammars that are designed to be generated into a Java app, and not any other host language.) Because of GOLD's language-neutrality, it's GUI tool is helpful regardless of your desired host app. [Pro ANTLR?] - GOLD's GUI tool *is* GOLD, and so (unless I'm mistaken) you can't use it as a command-line app (but I've found compiling grammars with it to be very painless, anyway). I *think* ANTLR can be used command-line. (But again, FWIW, I do intend to create an GOLD-compatible program that will work on the command line) [Neutral] - ANTLR's GUI tool is probably a little more fully-featured (although maybe doesn't provide quite as detailed information, but then, maybe it doesn't need to), but in my experience, it's also very sluggish and resource-intensive.
