The following key describes the columns used in the comparison chart below.
| Table Column | Description |
|---|---|
| Parser Algorithm | Each parsing system implements a special algorithm for analyzing a token stream and building a tree structure which corresponds to the syntax of the language as defined by a grammar. The different parsing algorithms are: LALR, LR(1), GLR, and LL. |
| Output Languages | Most parser generators output source code in one or more specific programming languages. This source code is used in the construction of the compiler, interpreter or translator. |
| Grammar/Code | If the grammar and source code are "mixed", the developer's source code is directly embedded into the grammar. This is the approach typically used by compiler-compilers. If "separated", the grammar and source-code are developed separately. |
| Lexer | The lexer is used to read characters and identify tokens and pass them to the parser. Lexers can be generated by the parser development software, a separate lexer generator or hand coded. |
| Development Platform | This is the required platform and/or operating system required to use the parser development software. |
| IDE | Some products feature an integrated development environment. |
| License | This column indicates the type end-user license offered by the author of the product. |
| Latest Release | This column indicates the year of the latest (in some cases last) release. This column was introduced in 2008 so whereever it reads "2008" when youn com here in say 2010 has to be re-checked. |
| Product | Website | Parsing Algorithm | Output Languages | Grammar / Code | Lexer | Development Platform | IDE | License | Latest release |
|---|---|---|---|---|---|---|---|---|---|
| ACCENT |
| Earley | C | Mixed | External | All | no | GNU GPL | ? |
| ANTLR |
| LL(*) | C#, Java, Python | Mixed | Generated | JVM | yes | BSD | ? |
| AnaGram |
| LALR(1) | C, C++ | ? | ? | Win32 | ? | Proprietary | ? |
| APaGeD |
| GLR, LALR(1), LL(k) | D | Mixed | Generated | All | no | Artistic | ? |
| APG |
| Recursive Descent | C, C++ | Separate | None | All | no | GNU GPL | 2007 |
| Aurochs |
| Packrat | C, Ocaml, Java | Mixed | Generated | All | no | GNU GPL | ? |
| Beaver |
| LALR | Java | Mixed | External | JVM | no | BSD | ? |
| Bison |
| LALR, GLR | C, C++ | Mixed | External | All | no | GNU GPL | 2008 |
| Bison++ |
| LALR(1) | C++ | ? | ? | ? | ? | GPL | 1993 |
| Bisonc++ |
| LALR(1) | C++ | ? | ? | ? | ? | GPL | 2008 |
| BtYacc |
| LALR | C++ | Mixed | External | All | no | Public domain | 1999 |
| BYACC |
| LALR | C | Mixed | External | All | no | Public domain | ? |
| BYACC/J |
| LALR | C, Java | Mixed | External (JFlex) | All | no | Public domain | ? |
| CL-peg |
| Packrat | Common Lisp | Mixed | Generated | All | no | MIT | ? |
| CL-Yacc |
| LALR(1) | Common Lisp | Mixed | External | All | no | MIT | ? |
| Coco/R |
| LL(k) | C, C++, C#, F#, Java, Ada, Pascal, Modula-2, Oberon, Ruby, Unicon, Visual Basic .NET | Mixed | Generated | JVM, .NET | no | GNU GPL | 2008 |
| CppCC |
| LL(k) | C++ | Mixed | Generated | POSIX | no | GNU GPL | 2004 |
| CSP |
| LR(1) | C++ | ? | ? | ? | ? | Apache License V2.0 | 2007 |
| CSTools |
| LALR | C# | Mixed | Generated | .NET | no | ? | ? |
| CUP |
| LALR | Java | Mixed | External (JLex) | JVM | no | GNU GPL | ? |
| DMS Software Reengineering Toolkit |
| GLR | Parlanse | Mixed | Generated | Win32 | no | Proprietary | ? |
| DParser |
| Scannerless GLR | C | Mixed | Generated | POSIX | no | BSD | ? |
| Dragon |
| LR(1), LALR | C++, Java | ? | ? | ? | ? | GPL | 2007 |
| Drat! |
| Packrat | D | Mixed | Generated | All | no | GNU GPL | ? |
| Elkhound |
| GLR | C++, OCaml | Mixed | External | All | no | BSD | 2005 |
| eli |
| LALR | C, others | Mixed | Generated | POSIX | no | GNU GPL, GNU LGPL | ? |
| Essence |
| LR | Scheme (Scheme 48) | Mixed | External | All | no | BSD | ? |
| eyapp |
| LALR(1) | Perl | Mixed | External | All | no | Perl | ? |
| F# PegParser |
| Packrat | F# | Mixed | Generated | .NET | no | ? | ? |
| Frisby |
| Packrat | Haskell | Mixed | Generated | All | no | BSD | ? |
| Frown |
| LALR(k) | Haskell 98 | ? | ? | ? | ? | GPL | ? |
| GDK |
| ? | ? | ? | ? | ? | ? | MIT | ? |
| GOLD |
| LALR | x86 assembly language, ANSI C, C#, D, Delphi, Java, Pascal, Python, Visual Basic 6, Visual Basic .NET, Visual C++ | Separate | Generated | Win32 | yes | Freeware | ? |
| grammar::peg |
| Packrat | TCL | Mixed | Generated | All | no | BSD | ? |
| Grammatica |
| LL(k) | C#, Java | Separate | Generated | JVM | no | GNU LGPL | ? |
| Happy |
| LALR, GLR | Haskell | Mixed | External | All | no | BSD | ? |
| HiLexed |
| LL(k) | Java | Separate | Internal | JVM | no | GNU LGPL | ? |
| Hyacc |
| LR(1) | C | Mixed | External | All | no | GNU GPL | ? |
| jacc |
| LALR | Java | Mixed | External | JVM | no | BSD | ? |
| JavaCC |
| LL(k) | Java | Mixed | Generated | JVM | yes | BSD | ? |
| jay |
| LALR | C#, Java | Mixed | None | All | no | BSD | ? |
| JetPAG |
| LL(k) | C++ | Mixed | Generated | All | no | GNU GPL | 2007 |
| JS/CC |
| LALR(1) | JavaScript, JScript, ECMAScript | Mixed | Internal | All | yes | Artistic | ? |
| Kelbt |
| Backtracking LALR(1) | ? | ? | ? | ? | ? | GPL | 2007 |
| kmyacc |
| LALR(1) | C, Java, Perl, JavaScript | Mixed | External | All | no | GNU GPL | ? |
| Lapg |
| LALR | Java, Javascript, C, C++, C# | Mixed | Generated | JVM | no | GNU GPL | 2007 |
| LEMON |
| LALR | C | Mixed | External | All | no | Public domain | 2008 |
| Lime |
| LALR(1) | PHP | ? | ? | ? | ? | GPL | ? |
| LISA |
| LR, LL, LALR, SLR | Java | Mixed | Generated | JVM | yes | Public Domain | ? |
| LPeg |
| Parsing Machine | Lua | Mixed | Generated | All | no | MIT | ? |
| LPG |
| LALR | Java | Mixed | Generated | JVM | no | EPL | ? |
| LLgen |
| LL(1) | C | ? | ? | ? | ? | BSD | ? |
| LLnextgen |
| LL(1) | C | ? | ? | ? | ? | GPL | ? |
| LRGen |
| LR(1) | C++ | Separate | Generated | Win32 | no | Proprietary | ? |
| Menhir |
| LR(1) | OCaml | Mixed | Generated | All | no | QPL | ? |
| Mini Parser Generator |
| ? | Python | ? | ? | ? | ? | LGPL | ? |
| ML-Yacc |
| LALR(1) | ML | Mixed | External | All | no | ? | ? |
| Monkey |
| LR(1) | Java | ? | ? | ? | ? | GPL | ? |
| More Than Parsing |
| LL(1) | Java | Separate | Generated | JVM | no | GNU GPL | ? |
| MyL Programming Language |
| Mylc | Delphi, Java, C#, JScript, SQL | Mixed | Generated | Win32 | no | Public domain | ? |
| Narwhal |
| Packrat | C | Mixed | Generated | POSIX, Win32 | no | BSD | ? |
| ocamlyacc |
| LALR(1) | OCaml | Mixed | External (Ocamllex) | All | no | QPL | ? |
| olex |
| LL(1) | C++ | GPL | 2002 | ||||
| Packrat |
| Packrat | Scheme | Mixed | Generated | All | no | MIT | ? |
| Pappy |
| Packrat | Haskell | Mixed | Generated | All | no | ? | ? |
| Parsec (parser) |
| GLR | Haskell | Mixed | None | All | no | BSD | ? |
| LALR(1) | Perl | GPL | ? | |||||
| Parser Objects | ? | LL(k) | Java | Mixed | ? | JVM | no | zlib | ? |
| Parsnip |
| Packrat | C++ | Mixed | Generated | Win32 | no | GNU GPL | 2007 |
| peg |
| Recursive Descent (PEG) | C, C++ | Mixed | Generated | All | no | MIT | 2007 |
| PEGTL |
| Recursive Descent (PEG) | C++0x | Mixed | Internal | POSIX | no | MIT | ? |
| PGE | ? | Recursive Descent (PEG) | Parrot bytecode | Mixed | Generated | All | no | ? | ? |
| PyPy rlib |
| Packrat | Python | Mixed | Generated | All | no | MIT | ? |
| PLY |
| LALR(1) | Python | Mixed | Generated | All | no | GNU GPL | ? |
| PRECC |
| LL(k) | C | Separate | Generated | MS-DOS, POSIX | no | GNU GPL | ? |
| Rats! |
| PEG | Java | Mixed | Generated | JVM | no | GNU LGPL | ? |
| QLALR |
| LALR(1) | C++ | Mixed | External | All | no | GNU GPL | ? |
| SableCC |
| LALR | Java, C, C++, C#, OCaml, Python | Separate | Generated | All | no | GNU LGPL | 2008 |
| Scannerless Boolean Parser |
| Scannerless GLR (Boolean Grammars) | Java, Haskell | Separate | Generated | All | no | BSD | ? |
| SmaCC |
| LALR(1)/LR(1) | Smalltalk | Mixed | Internal | All | yes | MIT | ? |
| SLK |
| LL(k) | C, C++, C#, Java | Separate | External | All | no | Proprietary | ? |
| SPARK |
| Earley | Python | Mixed | External | All | no | MIT | ? |
| Spirit |
| LL(k) | C++ | Mixed | Internal | All | no | Boost | 2008 |
| Styx |
| ? | C | ? | ? | ? | ? | LGPL | ? |
| Tap |
| LL(1) | C++ | ? | ? | ? | ? | GPL | 2002 |
| TextTransformer |
| LL(k) | C++ | Mixed | Generated | Win32 | yes | Proprietary | ? |
| Tom |
| LR(k)/Tomita | C | ? | ? | ? | ? | ? | ? |
| Toy Parser Generator (TPG) |
| Backtracking | Python | ? | ? | ? | ? | LGPL | ? |
| TP Yacc |
| LALR(1) | Turbo Pascal | Mixed | External | All | yes | GNU GPL | ? |
| Treetop |
| Recusive Descent (PEG) | Ruby | Mixed | Generated | All | no | ? | ? |
| Yacc (AT&T) | ? | LALR | C, others | Mixed | External | POSIX | no | ? | ? |
| Yacc++ |
| LR(k)/LALR(k) | C++, C# | Mixed | Generated or External | All | no | Proprietary | ? |
| Yapps |
| LL(1) | Python | Mixed | Generated | All | no | MIT | ? |
| Yard |
| Recursive Descent (PEG) | C++ | Mixed | Generated | All | no | MIT or Public Domain | 2008 |
| yecc |
| LALR(1) | Erlang | Separate | Generated | All | no | Erlang | ? |
| Visual BNF |
| LR(1)/LALR(1) | C# | Separate | Generated | .NET | yes | Proprietary | ? |
| Visual Parse++ |
| LALR | C, C++, C#, Java | Separate | Generated | Win32 | yes | Proprietary | ? |
| YooParse |
| LR | C++ | Mixed | External (YooLex) | All | no | MIT | 2002 |
| Wisent |
| LALR(1) | C++, Java | ? | ? | ? | ? | GPL | 2006 |
| Product | Website | Parsing Algorithm | Output Languages | Grammar / Code | Lexer | Development Platform | IDE | License | Latest release |