Comparison of parser generators: Difference between revisions
Appearance
Content deleted Content added
remove Latest Release column |
|||
Line 28: | Line 28: | ||
| valign="top" |'''License''' |
| valign="top" |'''License''' |
||
| This column indicates the type [[Software license|end-user license]] offered by the author of the product. |
| This column indicates the type [[Software license|end-user license]] offered by the author of the product. |
||
|- |
|||
| valign="top" |'''Latest Release''' |
|||
| This column indicates the year of the latest (in some cases last) release. This column was introduced in 2008 so wherever it reads "2008" when youn com here in say 2010 has to be re-checked. |
|||
|} |
|} |
||
==Comparison Charts== |
==Comparison Charts== |
||
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;" |
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;" |
||
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]] |
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]] |
||
|- |
|- |
||
| [[ACCENT]] || [http://accent.compilertools.net/] || [[Earley parser|Earley]] || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[ACCENT]] || [http://accent.compilertools.net/] || [[Earley parser|Earley]] || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[ANTLR]] || [http://antlr.org/] || [[LL parser|LL(*)]] || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]] || Mixed || Generated || [[Java Virtual Machine|JVM]] || yes || [[BSD licenses|BSD]] |
| [[ANTLR]] || [http://antlr.org/] || [[LL parser|LL(*)]] || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]] || Mixed || Generated || [[Java Virtual Machine|JVM]] || yes || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[AnaGram]] || [http://www.parsifalsoft.com/] || [[LALR parser|LALR(1)]] || C, C++ || Mixed || Generated || Win32 || ? || [[Proprietary software|Proprietary]] |
| [[AnaGram]] || [http://www.parsifalsoft.com/] || [[LALR parser|LALR(1)]] || C, C++ || Mixed || Generated || Win32 || ? || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[APaGeD]] || [http://apaged.mainia.de/] || [[GLR parser|GLR]], [[LALR parser|LALR(1)]], [[LL parser|LL(k)]] || [[D (programming language)|D]] || Mixed || Generated || All || no || [[Artistic license|Artistic]] |
| [[APaGeD]] || [http://apaged.mainia.de/] || [[GLR parser|GLR]], [[LALR parser|LALR(1)]], [[LL parser|LL(k)]] || [[D (programming language)|D]] || Mixed || Generated || All || no || [[Artistic license|Artistic]] |
||
|- |
|- |
||
| [[APG (parser generator)|APG]] || [http://coasttocoastresearch.com/] || [[Recursive descent parser|Recursive Descent]] || C, C++ || Separate || None || All || no || [[GNU General Public License|GNU GPL]] |
| [[APG (parser generator)|APG]] || [http://coasttocoastresearch.com/] || [[Recursive descent parser|Recursive Descent]] || C, C++ || Separate || None || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Aurochs (parser generator)|Aurochs]] || [http://aurochs.fr] || [[Packrat parser|Packrat]] || C, [[Ocaml]], Java || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[Aurochs (parser generator)|Aurochs]] || [http://aurochs.fr] || [[Packrat parser|Packrat]] || C, [[Ocaml]], Java || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Beaver (parser generator)|Beaver]] || [http://beaver.sourceforge.net/] || LALR || Java || Mixed || External || JVM || no || [[BSD licenses|BSD]] |
| [[Beaver (parser generator)|Beaver]] || [http://beaver.sourceforge.net/] || LALR || Java || Mixed || External || JVM || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[GNU bison|Bison]] || [http://gnu.org/software/bison/] || [[LALR]], [[GLR]] || C, C++ || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[GNU bison|Bison]] || [http://gnu.org/software/bison/] || [[LALR]], [[GLR]] || C, C++ || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Bison++]] || [ftp://ftp.iecc.com/pub/file/bison++flex++/] || [[LALR(1)]] || [[C++]] || Mixed || External || POSIX || No || [[GNU General Public License|GNU GPL]] |
| [[Bison++]] || [ftp://ftp.iecc.com/pub/file/bison++flex++/] || [[LALR(1)]] || [[C++]] || Mixed || External || POSIX || No || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Bisonc++]] || [http://bisoncpp.sourceforge.net/] || [[LALR(1)]] || [[C++]] || Mixed || External || POSIX || No || [[GNU General Public License|GNU GPL]] |
| [[Bisonc++]] || [http://bisoncpp.sourceforge.net/] || [[LALR(1)]] || [[C++]] || Mixed || External || POSIX || No || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[BtYacc]] || [http://siber.com/btyacc/] || LALR || C++ || Mixed || External || All || no || [[Public domain]] |
| [[BtYacc]] || [http://siber.com/btyacc/] || LALR || C++ || Mixed || External || All || no || [[Public domain]] |
||
|- |
|- |
||
| [[Berkeley Yacc|BYACC]] || [http://invisible-island.net/byacc/byacc.html] || LALR || C || Mixed || External || All || no || [[Public domain]] |
| [[Berkeley Yacc|BYACC]] || [http://invisible-island.net/byacc/byacc.html] || LALR || C || Mixed || External || All || no || [[Public domain]] |
||
|- |
|- |
||
| [[BYACC/J]] || [http://byaccj.sourceforge.net/] || LALR || C, Java || Mixed || External (JFlex) || All || no || [[Public domain]] |
| [[BYACC/J]] || [http://byaccj.sourceforge.net/] || LALR || C, Java || Mixed || External (JFlex) || All || no || [[Public domain]] |
||
|- |
|- |
||
| [[CL-peg]] || [http://common-lisp.net/project/cl-peg/] || Packrat || [[Common Lisp]] || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[CL-peg]] || [http://common-lisp.net/project/cl-peg/] || Packrat || [[Common Lisp]] || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[CL-Yacc]] || [http://www.pps.jussieu.fr/~jch/software/cl-yacc/] || LALR(1) || Common Lisp || Mixed || External || All || no || [[MIT license|MIT]] |
| [[CL-Yacc]] || [http://www.pps.jussieu.fr/~jch/software/cl-yacc/] || LALR(1) || Common Lisp || Mixed || External || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Coco/R]] || [http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/] || LL(k) || C, C++, C#, [[F Sharp (programming language)|F#]], Java, [[Ada (programming language)|Ada]], [[Pascal (programming language)|Pascal]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Ruby (programming language)|Ruby]], [[Unicon (programming language)|Unicon]], [[Visual Basic .NET]] || Mixed || Generated || JVM, [[.NET Framework|.NET]] || no || [[GNU General Public License|GNU GPL]] |
| [[Coco/R]] || [http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/] || LL(k) || C, C++, C#, [[F Sharp (programming language)|F#]], Java, [[Ada (programming language)|Ada]], [[Pascal (programming language)|Pascal]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Ruby (programming language)|Ruby]], [[Unicon (programming language)|Unicon]], [[Visual Basic .NET]] || Mixed || Generated || JVM, [[.NET Framework|.NET]] || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[CppCC]] || [http://cppcc.sourceforge.net/] || LL(k) || C++ || Mixed || Generated || [[POSIX]] || no || [[GNU General Public License|GNU GPL]] |
| [[CppCC]] || [http://cppcc.sourceforge.net/] || LL(k) || C++ || Mixed || Generated || [[POSIX]] || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[CSP]] || [http://csparser.sourceforge.net/] || [[LR(1)]] || [[C++]] || Separate || Generated || POSIX || no || [[Apache License|Apache License V2.0]] |
| [[CSP]] || [http://csparser.sourceforge.net/] || [[LR(1)]] || [[C++]] || Separate || Generated || POSIX || no || [[Apache License|Apache License V2.0]] |
||
|- |
|- |
||
| [[CSTools]] || [http://cis.paisley.ac.uk/crow-ci0/] || LALR || C# || Mixed || Generated || .NET || no |
| [[CSTools]] || [http://cis.paisley.ac.uk/crow-ci0/] || LALR || C# || Mixed || Generated || .NET || no || ? |
||
|- |
|- |
||
| [[CUP (parser generator)|CUP]] || [http://www.cs.princeton.edu/~appel/modern/java/CUP/] || LALR || Java || Mixed || External ([[JLex]]) || JVM || no || [[GNU General Public License|GNU GPL]] |
| [[CUP (parser generator)|CUP]] || [http://www.cs.princeton.edu/~appel/modern/java/CUP/] || LALR || Java || Mixed || External ([[JLex]]) || JVM || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[DMS Software Reengineering Toolkit]] || [http://semanticdesigns.com/Products/DMS/DMSToolkit.html] || GLR || Parlanse || Mixed || Generated || [[Windows API|Win32]] || no || [[Proprietary software|Proprietary]] |
| [[DMS Software Reengineering Toolkit]] || [http://semanticdesigns.com/Products/DMS/DMSToolkit.html] || GLR || Parlanse || Mixed || Generated || [[Windows API|Win32]] || no || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[DParser]] || [http://dparser.sourceforge.net/] || [[Scannerless parsing|Scannerless GLR]] || C || Mixed || Generated || POSIX || no || [[BSD licenses|BSD]] |
| [[DParser]] || [http://dparser.sourceforge.net/] || [[Scannerless parsing|Scannerless GLR]] || C || Mixed || Generated || POSIX || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[Dragon]] || [http://www.lemke-it.com/] || [[LR(1)]], [[LALR]] || [[C++]], [[Java (programming language)|Java]] || Separate || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[Dragon]] || [http://www.lemke-it.com/] || [[LR(1)]], [[LALR]] || [[C++]], [[Java (programming language)|Java]] || Separate || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Drat!]] || [http://wiki.dprogramming.com/Drat/HomePage/] || Packrat || D || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[Drat!]] || [http://wiki.dprogramming.com/Drat/HomePage/] || Packrat || D || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Elkhound (parser generator)|Elkhound]] || [http://cs.berkeley.edu/~smcpeak/elkhound/] || GLR || C++, [[Objective Caml|OCaml]] || Mixed || External || All || no || [[BSD licenses|BSD]] |
| [[Elkhound (parser generator)|Elkhound]] || [http://cs.berkeley.edu/~smcpeak/elkhound/] || GLR || C++, [[Objective Caml|OCaml]] || Mixed || External || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[eli (parser generator)|eli]] || [http://eli-project.sourceforge.net/] || LALR || C, others || Mixed || Generated || POSIX || no || [[GNU General Public License|GNU GPL]], [[GNU Lesser General Public License|GNU LGPL]] |
| [[eli (parser generator)|eli]] || [http://eli-project.sourceforge.net/] || LALR || C, others || Mixed || Generated || POSIX || no || [[GNU General Public License|GNU GPL]], [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[Essence (software)|Essence]] || [http://www.informatik.uni-freiburg.de/proglang/software/essence/] || LR || Scheme ([[Scheme 48]]) || Mixed || External || All || no || [[BSD licenses|BSD]] |
| [[Essence (software)|Essence]] || [http://www.informatik.uni-freiburg.de/proglang/software/essence/] || LR || Scheme ([[Scheme 48]]) || Mixed || External || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[eyapp]] || [http://search.cpan.org/~casiano/Parse-Eyapp/] || LALR(1) || [[Perl]] || Mixed || External || All || no || [[Perl]] |
| [[eyapp]] || [http://search.cpan.org/~casiano/Parse-Eyapp/] || LALR(1) || [[Perl]] || Mixed || External || All || no || [[Perl]] |
||
|- |
|- |
||
| [[F Sharp PegParser|F# PegParser]] || [http://devhawk.net/2007/12/10/Practical+Parsing+In+F.aspx] || Packrat || F# || Mixed || Generated || .NET || no |
| [[F Sharp PegParser|F# PegParser]] || [http://devhawk.net/2007/12/10/Practical+Parsing+In+F.aspx] || Packrat || F# || Mixed || Generated || .NET || no || ? |
||
|- |
|- |
||
| [[Frisby (library)|Frisby]] || [http://repetae.net/computer/frisby/] || Packrat || [[Haskell (programming language)|Haskell]] || Mixed || Generated || All || no || [[BSD licenses|BSD]] |
| [[Frisby (library)|Frisby]] || [http://repetae.net/computer/frisby/] || Packrat || [[Haskell (programming language)|Haskell]] || Mixed || Generated || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[Frown]] || [http://www.informatik.uni-bonn.de/~ralf/frown/] || [[LALR(k)]] || [[Haskell|Haskell 98]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[Frown]] || [http://www.informatik.uni-bonn.de/~ralf/frown/] || [[LALR(k)]] || [[Haskell|Haskell 98]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
<!-- there are more parsing algorithms and output formats supported, see http://gdk.sourceforge.net/gdkref.pdf --> |
<!-- there are more parsing algorithms and output formats supported, see http://gdk.sourceforge.net/gdkref.pdf --> |
||
| [[Grammar Deployment Kit|GDK]] || [http://sourceforge.net/projects/gdk] || LALR(1), GLR || C, Delphi, Lex, Haskell, HTML, Java, Yacc || Mixed || Generated || POSIX || No || [[MIT license|MIT]] |
| [[Grammar Deployment Kit|GDK]] || [http://sourceforge.net/projects/gdk] || LALR(1), GLR || C, Delphi, Lex, Haskell, HTML, Java, Yacc || Mixed || Generated || POSIX || No || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[GOLD (parser)|GOLD]] || [http://devincook.com/goldparser/] || LALR || [[x86 assembly language]], [[ANSI C]], C#, D, [[Borland Delphi|Delphi]], Java, Pascal, Python, [[Visual Basic|Visual Basic 6]], Visual Basic .NET, [[Visual C++]] || Separate || Generated || Win32 || yes || [[Freeware]] |
| [[GOLD (parser)|GOLD]] || [http://devincook.com/goldparser/] || LALR || [[x86 assembly language]], [[ANSI C]], C#, D, [[Borland Delphi|Delphi]], Java, Pascal, Python, [[Visual Basic|Visual Basic 6]], Visual Basic .NET, [[Visual C++]] || Separate || Generated || Win32 || yes || [[Freeware]] |
||
|- |
|- |
||
| [[tcllib|grammar::peg]] || [http://tcllib.sourceforge.net/doc/peg.html] || Packrat || [[TCL]] || Mixed || Generated || All || no || [[BSD licenses|BSD]] |
| [[tcllib|grammar::peg]] || [http://tcllib.sourceforge.net/doc/peg.html] || Packrat || [[TCL]] || Mixed || Generated || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[Grammatica]] || [http://grammatica.percederberg.net/] || LL(k) || C#, Java || Separate || Generated || JVM || no || [[GNU Lesser General Public License|GNU LGPL]] |
| [[Grammatica]] || [http://grammatica.percederberg.net/] || LL(k) || C#, Java || Separate || Generated || JVM || no || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[Happy (Parser)|Happy]] || [http://www.haskell.org/happy/] || LALR, GLR || Haskell || Mixed || External || All || no || [[BSD licenses|BSD]] |
| [[Happy (Parser)|Happy]] || [http://www.haskell.org/happy/] || LALR, GLR || Haskell || Mixed || External || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[HiLexed]] || [http://www.hilexed.org/] || LL(k) || Java || Separate || Internal || JVM || no || [[GNU Lesser General Public Licence|GNU LGPL]] |
| [[HiLexed]] || [http://www.hilexed.org/] || LL(k) || Java || Separate || Internal || JVM || no || [[GNU Lesser General Public Licence|GNU LGPL]] |
||
|- |
|- |
||
| [[Hyacc]] || [http://hyacc.sourceforge.net/] || LR(1) || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[Hyacc]] || [http://hyacc.sourceforge.net/] || LR(1) || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[jacc]] || [http://web.cecs.pdx.edu/~mpj/jacc/index.html] || LALR || Java || Mixed || External || JVM || no || [[BSD licenses|BSD]] |
| [[jacc]] || [http://web.cecs.pdx.edu/~mpj/jacc/index.html] || LALR || Java || Mixed || External || JVM || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[JavaCC]] || [https://javacc.dev.java.net/] || LL(k) || Java || Mixed || Generated || JVM || yes || [[BSD licenses|BSD]] |
| [[JavaCC]] || [https://javacc.dev.java.net/] || LL(k) || Java || Mixed || Generated || JVM || yes || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[jay (parser generator)|jay]] || [http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html] || LALR || C#, Java || Mixed || None || All || no || [[BSD licenses|BSD]] |
| [[jay (parser generator)|jay]] || [http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html] || LALR || C#, Java || Mixed || None || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[JetPAG]] || [http://jetpag.sourceforge.net/] || LL(k) || C++ || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[JetPAG]] || [http://jetpag.sourceforge.net/] || LL(k) || C++ || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[JS/CC]] || [http://jscc.jmksf.com/] || LALR(1) || [[JavaScript]], [[JScript]], [[ECMAScript]] || Mixed || Internal || All || yes || [[Artistic license|Artistic]] |
| [[JS/CC]] || [http://jscc.jmksf.com/] || LALR(1) || [[JavaScript]], [[JScript]], [[ECMAScript]] || Mixed || Internal || All || yes || [[Artistic license|Artistic]] |
||
|- |
|- |
||
| [[Kelbt]] || [http://research.cs.queensu.ca/~thurston/kelbt/] || [[Backtracking]] [[LALR(1)]] || C++ || Mixed || Generated || POSIX || no || [[GNU General Public License|GNU GPL]] |
| [[Kelbt]] || [http://research.cs.queensu.ca/~thurston/kelbt/] || [[Backtracking]] [[LALR(1)]] || C++ || Mixed || Generated || POSIX || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[kmyacc]] || [http://www005.upp.so-net.ne.jp/kmori/kmyacc/] || LALR(1) || C, Java, Perl, JavaScript || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[kmyacc]] || [http://www005.upp.so-net.ne.jp/kmori/kmyacc/] || LALR(1) || C, Java, Perl, JavaScript || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Lexical Analyzer and Parser Generator|Lapg]] || [http://sourceforge.net/projects/lapg/] || LALR || Java, Javascript, C, C++, C# || Mixed || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
| [[Lexical Analyzer and Parser Generator|Lapg]] || [http://sourceforge.net/projects/lapg/] || LALR || Java, Javascript, C, C++, C# || Mixed || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Lemon Parser|LEMON]] || [http://hwaci.com/sw/lemon] || LALR || C || Mixed || External || All || no || [[Public domain]] |
| [[Lemon Parser|LEMON]] || [http://hwaci.com/sw/lemon] || LALR || C || Mixed || External || All || no || [[Public domain]] |
||
|- |
|- |
||
| [[Lime]] || [http://sourceforge.net/projects/lime-php/] || [[LALR(1)]] || [[PHP]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[Lime]] || [http://sourceforge.net/projects/lime-php/] || [[LALR(1)]] || [[PHP]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[LISA (parser generator)|LISA]] || [http://labraj.uni-mb.si/lisa] || LR, LL, LALR, SLR || Java || Mixed || Generated || JVM || yes || [[Public Domain]] |
| [[LISA (parser generator)|LISA]] || [http://labraj.uni-mb.si/lisa] || LR, LL, LALR, SLR || Java || Mixed || Generated || JVM || yes || [[Public Domain]] |
||
|- |
|- |
||
| [[LPeg]] || [http://www.inf.puc-rio.br/~roberto/lpeg/] || Parsing Machine || [[Lua (programming language)|Lua]] || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[LPeg]] || [http://www.inf.puc-rio.br/~roberto/lpeg/] || Parsing Machine || [[Lua (programming language)|Lua]] || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[LALR Parser Generator|LPG]] || [http://sourceforge.net/projects/lpg/] || Backtracking LALR || Java || Mixed || Generated || JVM || no || [[Eclipse Public License|EPL]] |
| [[LALR Parser Generator|LPG]] || [http://sourceforge.net/projects/lpg/] || Backtracking LALR || Java || Mixed || Generated || JVM || no || [[Eclipse Public License|EPL]] |
||
|- |
|- |
||
| [[LLgen]] || [http://freshmeat.net/projects/llgen/] || [[LL(1)]] || C || Mixed || External || POSIX || no || [[BSD]] |
| [[LLgen]] || [http://freshmeat.net/projects/llgen/] || [[LL(1)]] || C || Mixed || External || POSIX || no || [[BSD]] |
||
|- |
|- |
||
| [[LLnextgen]] || [http://os.ghalkes.nl/LLnextgen/] || [[LL(1)]] || C || Mixed || External || POSIX || no || [[GNU General Public License|GNU GPL]] |
| [[LLnextgen]] || [http://os.ghalkes.nl/LLnextgen/] || [[LL(1)]] || C || Mixed || External || POSIX || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[LRGen]] || [http://lrgen.com/] || LR(1) || C++ || Separate || Generated || Win32 || no || [[Proprietary]] |
| [[LRGen]] || [http://lrgen.com/] || LR(1) || C++ || Separate || Generated || Win32 || no || [[Proprietary]] |
||
|- |
|- |
||
| [[Menhir (parser generator)|Menhir]] || [http://cristal.inria.fr/~fpottier/menhir/] || LR(1) || OCaml || Mixed || Generated || All || no || [[Q Public License|QPL]] |
| [[Menhir (parser generator)|Menhir]] || [http://cristal.inria.fr/~fpottier/menhir/] || LR(1) || OCaml || Mixed || Generated || All || no || [[Q Public License|QPL]] |
||
|- |
|- |
||
| [[Mini Parser Generator]] || [http://christophe.delord.free.fr/mp/index.html] || ? || Python || Mixed || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
| [[Mini Parser Generator]] || [http://christophe.delord.free.fr/mp/index.html] || ? || Python || Mixed || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[ML-Yacc]] || [http://www.smlnj.org/doc/ML-Yacc/] || LALR(1) || [[ML (programming language)|ML]] || Mixed || External || All || no |
| [[ML-Yacc]] || [http://www.smlnj.org/doc/ML-Yacc/] || LALR(1) || [[ML (programming language)|ML]] || Mixed || External || All || no || ? |
||
|- |
|- |
||
| [[Monkey]] || [http://sourceforge.net/projects/monkey/] || [[LR(1)]] || [[Java (programming language)|Java]] || Separate || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
| [[Monkey]] || [http://sourceforge.net/projects/monkey/] || [[LR(1)]] || [[Java (programming language)|Java]] || Separate || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[More Than Parsing]] || [http://babel.ls.fi.upm.es/research/mtp/] || LL(1) || Java || Separate || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
| [[More Than Parsing]] || [http://babel.ls.fi.upm.es/research/mtp/] || LL(1) || Java || Separate || Generated || JVM || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[MyL Programming Language]] || [http://blog.ronaldomoreira.com/myl/] || ? || C#, Delphi, Java, JScript, SQL || Mixed || Generated || Win32 || no || [[Public domain]] |
| [[MyL Programming Language]] || [http://blog.ronaldomoreira.com/myl/] || ? || C#, Delphi, Java, JScript, SQL || Mixed || Generated || Win32 || no || [[Public domain]] |
||
|- |
|- |
||
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || C || Mixed || Generated || POSIX, Win32 || no || [[BSD licenses|BSD]] |
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || C || Mixed || Generated || POSIX, Win32 || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[ocamlyacc]] || [http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html] || LALR(1) || OCaml || Mixed || External (Ocamllex) || All || no || [[Q Public License|QPL]] |
| [[ocamlyacc]] || [http://caml.inria.fr/pub/docs/manual-ocaml/manual026.html] || LALR(1) || OCaml || Mixed || External (Ocamllex) || All || no || [[Q Public License|QPL]] |
||
|- |
|- |
||
| [[olex]] || [http://www.irule.be/bvh/c++/olex/] || [[LL(1)]] || [[C++]] || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[olex]] || [http://www.irule.be/bvh/c++/olex/] || [[LL(1)]] || [[C++]] || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Packrat (library)|Packrat]] || [http://www.call-with-current-continuation.org/eggs/packrat.html] || Packrat || Scheme || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[Packrat (library)|Packrat]] || [http://www.call-with-current-continuation.org/eggs/packrat.html] || Packrat || Scheme || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Pappy]] || [http://pdos.csail.mit.edu/~baford/packrat/thesis/] || Packrat || Haskell || Mixed || Generated || All || no || [[Proprietary software|Proprietary]] |
| [[Pappy]] || [http://pdos.csail.mit.edu/~baford/packrat/thesis/] || Packrat || Haskell || Mixed || Generated || All || no || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[Parsec (parser)]]|| [http://legacy.cs.uu.nl/daan/parsec.html] || GLR || Haskell || Mixed || None || All || no || [[BSD licence|BSD]] |
| [[Parsec (parser)]]|| [http://legacy.cs.uu.nl/daan/parsec.html] || GLR || Haskell || Mixed || None || All || no || [[BSD licence|BSD]] |
||
|- |
|- |
||
| [[Parse::Yapp]] || [http://freshmeat.net/projects/parse-yapp/] || [[LALR(1)]] || [[Perl]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[Parse::Yapp]] || [http://freshmeat.net/projects/parse-yapp/] || [[LALR(1)]] || [[Perl]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Parser Objects]] || ? || LL(k) || Java || Mixed || ? || JVM || no || [[Zlib license|zlib]] |
| [[Parser Objects]] || ? || LL(k) || Java || Mixed || ? || JVM || no || [[Zlib license|zlib]] |
||
|- |
|- |
||
| [[Parsnip Parser Library|Parsnip]] || [http://parsnip-parser.sourceforge.net/] || Packrat || C++ || Mixed || Generated || Win32 || no || [[GNU General Public License|GNU GPL]] |
| [[Parsnip Parser Library|Parsnip]] || [http://parsnip-parser.sourceforge.net/] || Packrat || C++ || Mixed || Generated || Win32 || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[peg (parser generator)|peg]] || [http://piumarta.com/software/peg/] || Recursive Descent (PEG) || C, C++ || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[peg (parser generator)|peg]] || [http://piumarta.com/software/peg/] || Recursive Descent (PEG) || C, C++ || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Parsing Expression Grammar Template Library|PEGTL]] || [http://code.google.com/p/pegtl/] || Recursive Descent (PEG) || C++0x || Mixed || Internal || POSIX || no || [[MIT license|MIT]] |
| [[Parsing Expression Grammar Template Library|PEGTL]] || [http://code.google.com/p/pegtl/] || Recursive Descent (PEG) || C++0x || Mixed || Internal || POSIX || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Parser Grammar Engine|PGE]] || ? || Recursive Descent (PEG) || [[Parrot virtual machine|Parrot bytecode]] || Mixed || Generated || All || no |
| [[Parser Grammar Engine|PGE]] || ? || Recursive Descent (PEG) || [[Parrot virtual machine|Parrot bytecode]] || Mixed || Generated || All || no || ? |
||
|- |
|- |
||
| [[PyPy|PyPy rlib]] || [http://codespeak.net/pypy/dist/pypy/doc/rlib.html#parsing] || Packrat || Python || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[PyPy|PyPy rlib]] || [http://codespeak.net/pypy/dist/pypy/doc/rlib.html#parsing] || Packrat || Python || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Python Lex-Yacc|PLY]] || [http://www.dabeaz.com/ply/] || LALR(1) || Python || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[Python Lex-Yacc|PLY]] || [http://www.dabeaz.com/ply/] || LALR(1) || Python || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[PRECC]] || [http://vl.fmnet.info/precc/] || LL(k) || C || Separate || Generated || [[MS-DOS]], POSIX || no || [[GNU General Public License|GNU GPL]] |
| [[PRECC]] || [http://vl.fmnet.info/precc/] || LL(k) || C || Separate || Generated || [[MS-DOS]], POSIX || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Rats!]] || [http://cs.nyu.edu/rgrimm/xtc/rats.html] || [[Parsing expression grammar|PEG]] || Java || Mixed || Generated || JVM || no || [[GNU Lesser General Public License|GNU LGPL]] |
| [[Rats!]] || [http://cs.nyu.edu/rgrimm/xtc/rats.html] || [[Parsing expression grammar|PEG]] || Java || Mixed || Generated || JVM || no || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[QLALR]] || [http://labs.trolltech.com/page/Projects/Compilers/QLALR] || LALR(1) || C++ || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
| [[QLALR]] || [http://labs.trolltech.com/page/Projects/Compilers/QLALR] || LALR(1) || C++ || Mixed || External || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[SableCC]] || [http://sablecc.org/] || LALR || Java, C, C++, C#, OCaml, Python || Separate || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
| [[SableCC]] || [http://sablecc.org/] || LALR || Java, C, C++, C#, OCaml, Python || Separate || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[Scannerless Boolean Parser]] || [http://research.cs.berkeley.edu/project/sbp/] || [[Scannerless parsing|Scannerless GLR]] ([[Boolean grammar|Boolean Grammars]]) || Java, Haskell || Separate || Generated || All || no || [[BSD licenses|BSD]] |
| [[Scannerless Boolean Parser]] || [http://research.cs.berkeley.edu/project/sbp/] || [[Scannerless parsing|Scannerless GLR]] ([[Boolean grammar|Boolean Grammars]]) || Java, Haskell || Separate || Generated || All || no || [[BSD licenses|BSD]] |
||
|- |
|- |
||
| [[SmaCC]] || [http://refactory.com/Software/SmaCC/] || LALR(1), LR(1) || [[Smalltalk]] || Mixed || Internal || All || yes || [[MIT license|MIT]] |
| [[SmaCC]] || [http://refactory.com/Software/SmaCC/] || LALR(1), LR(1) || [[Smalltalk]] || Mixed || Internal || All || yes || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[SLK (parser generator)|SLK]] || [http://home.earthlink.net/~slkpg/] || LL(k) || C, C++, C#, Java || Separate || External || All || no || [[Proprietary software|Proprietary]] |
| [[SLK (parser generator)|SLK]] || [http://home.earthlink.net/~slkpg/] || LL(k) || C, C++, C#, Java || Separate || External || All || no || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[SPARK (parser generator)|SPARK]] || [http://pages.cpsc.ucalgary.ca/~aycock/spark/] || Earley || Python || Mixed || External || All || no || [[MIT license|MIT]] |
| [[SPARK (parser generator)|SPARK]] || [http://pages.cpsc.ucalgary.ca/~aycock/spark/] || Earley || Python || Mixed || External || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Spirit Parser Framework|Spirit]] || [http://spirit.sourceforge.net/] || LL(k) || C++ || Mixed || Internal || All || no || [[Boost]] |
| [[Spirit Parser Framework|Spirit]] || [http://spirit.sourceforge.net/] || LL(k) || C++ || Mixed || Internal || All || no || [[Boost]] |
||
|- |
|- |
||
| [[Styx]] || [http://sourceforge.net/projects/xstyx/] || ? || [[C (programming language)|C]] || Mixed || Generated || ? || All || [[GNU Lesser General Public License|GNU LGPL]] |
| [[Styx]] || [http://sourceforge.net/projects/xstyx/] || ? || [[C (programming language)|C]] || Mixed || Generated || ? || All || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[Tap]] || [http://tap.sourceforge.net/] || [[LL(1)]] || [[C++]] || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
| [[Tap]] || [http://tap.sourceforge.net/] || [[LL(1)]] || [[C++]] || Mixed || Generated || All || no || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[TextTransformer]] || [http://texttransformer.com/] || LL(k) || C++ || Mixed || Generated || Win32 || yes || [[Proprietary software|Proprietary]] |
| [[TextTransformer]] || [http://texttransformer.com/] || LL(k) || C++ || Mixed || Generated || Win32 || yes || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[Tom]] || [http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/nlp/parsing/tom/0.html] || [[LR(k)]] (Tomita) || C || Generated || None || All || no || [[Proprietary software|Proprietary]] |
| [[Tom]] || [http://www-2.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/nlp/parsing/tom/0.html] || [[LR(k)]] (Tomita) || C || Generated || None || All || no || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[Toy Parser Generator]] || [http://christophe.delord.free.fr/tpg/] || Recusive Descent || Python || Mixed || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
| [[Toy Parser Generator]] || [http://christophe.delord.free.fr/tpg/] || Recusive Descent || Python || Mixed || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]] |
||
|- |
|- |
||
| [[Turbo Pascal Lex/Yacc|TP Yacc]] || [http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html] || LALR(1) || [[Turbo Pascal]] || Mixed || External || All || yes || [[GNU General Public License|GNU GPL]] |
| [[Turbo Pascal Lex/Yacc|TP Yacc]] || [http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html] || LALR(1) || [[Turbo Pascal]] || Mixed || External || All || yes || [[GNU General Public License|GNU GPL]] |
||
|- |
|- |
||
| [[Treetop]] || [http://treetop.rubyforge.org/] || Recusive Descent (PEG) || Ruby || Mixed || Generated || All || no |
| [[Treetop]] || [http://treetop.rubyforge.org/] || Recusive Descent (PEG) || Ruby || Mixed || Generated || All || no || ? |
||
|- |
|- |
||
| [[yacc|Yacc (AT&T)]] || ? || LALR || C, others || Mixed || External || POSIX || no |
| [[yacc|Yacc (AT&T)]] || ? || LALR || C, others || Mixed || External || POSIX || no || ? |
||
|- |
|- |
||
| [[Yacc++]] || [http://world.std.com/~compres/] || LR(k)/LALR(k) || C++, C# || Mixed || Generated or External || All || no || [[Proprietary software|Proprietary]] |
| [[Yacc++]] || [http://world.std.com/~compres/] || LR(k)/LALR(k) || C++, C# || Mixed || Generated or External || All || no || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[Yapps]] || [http://theory.stanford.edu/~amitp/yapps/] || LL(1) || Python || Mixed || Generated || All || no || [[MIT license|MIT]] |
| [[Yapps]] || [http://theory.stanford.edu/~amitp/yapps/] || LL(1) || Python || Mixed || Generated || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Yard]] || [http://code.google.com/p/yardparser/] || Recursive Descent (PEG) || C++ || Mixed || Generated || All || no || [[MIT license|MIT]] or [[Public Domain]] |
| [[Yard]] || [http://code.google.com/p/yardparser/] || Recursive Descent (PEG) || C++ || Mixed || Generated || All || no || [[MIT license|MIT]] or [[Public Domain]] |
||
|- |
|- |
||
| [[yecc]] || [http://www.erlang.org/faq/parsing.html] || LALR(1) || [[Erlang (programming language)|Erlang]] || Separate || Generated || All || no || [[Erlang (programming language)|Erlang]] |
| [[yecc]] || [http://www.erlang.org/faq/parsing.html] || LALR(1) || [[Erlang (programming language)|Erlang]] || Separate || Generated || All || no || [[Erlang (programming language)|Erlang]] |
||
|- |
|- |
||
| [[Visual BNF]] || [http://intralogic.eu/] || LR(1)/LALR(1) || C# || Separate || Generated || .NET || yes || [[Proprietary software|Proprietary]] |
| [[Visual BNF]] || [http://intralogic.eu/] || LR(1)/LALR(1) || C# || Separate || Generated || .NET || yes || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[Visual Parse++]] || [http://sand-stone.com/] || LALR || C, C++, C#, Java || Separate || Generated || Win32 || yes || [[Proprietary software|Proprietary]] |
| [[Visual Parse++]] || [http://sand-stone.com/] || LALR || C, C++, C#, Java || Separate || Generated || Win32 || yes || [[Proprietary software|Proprietary]] |
||
|- |
|- |
||
| [[YooParse]] || [http://yooparse.sourceforge.net/] || LR || C++ || Mixed || External ([[YooLex]]) || All || no || [[MIT license|MIT]] |
| [[YooParse]] || [http://yooparse.sourceforge.net/] || LR || C++ || Mixed || External ([[YooLex]]) || All || no || [[MIT license|MIT]] |
||
|- |
|- |
||
| [[Wisent]] || [http://sourceforge.net/projects/wisent/] || [[LALR(1)]] || [[C++]], [[Java (programming language)|Java]] || Mixed || External || JVM || All || [[GNU General Public License|GNU GPL]] |
| [[Wisent]] || [http://sourceforge.net/projects/wisent/] || [[LALR(1)]] || [[C++]], [[Java (programming language)|Java]] || Mixed || External || JVM || All || [[GNU General Public License|GNU GPL]] |
||
|-class="sortbottom" |
|-class="sortbottom" |
||
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]] |
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]] |
||
|} |
|} |
||
Revision as of 12:23, 24 October 2008
This is a list of notable parsing systems.
Chart Key
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. |
Comparison Charts
Product | Website | Parsing Algorithm | Output Languages | Grammar / Code | Lexer | Development Platform | IDE | License |
---|---|---|---|---|---|---|---|---|
ACCENT | [1] | Earley | C | Mixed | External | All | no | GNU GPL |
ANTLR | [2] | LL(*) | C#, Java, Python | Mixed | Generated | JVM | yes | BSD |
AnaGram | [3] | LALR(1) | C, C++ | Mixed | Generated | Win32 | ? | Proprietary |
APaGeD | [4] | GLR, LALR(1), LL(k) | D | Mixed | Generated | All | no | Artistic |
APG | [5] | Recursive Descent | C, C++ | Separate | None | All | no | GNU GPL |
Aurochs | [6] | Packrat | C, Ocaml, Java | Mixed | Generated | All | no | GNU GPL |
Beaver | [7] | LALR | Java | Mixed | External | JVM | no | BSD |
Bison | [8] | LALR, GLR | C, C++ | Mixed | External | All | no | GNU GPL |
Bison++ | [9] | LALR(1) | C++ | Mixed | External | POSIX | No | GNU GPL |
Bisonc++ | [10] | LALR(1) | C++ | Mixed | External | POSIX | No | GNU GPL |
BtYacc | [11] | LALR | C++ | Mixed | External | All | no | Public domain |
BYACC | [12] | LALR | C | Mixed | External | All | no | Public domain |
BYACC/J | [13] | LALR | C, Java | Mixed | External (JFlex) | All | no | Public domain |
CL-peg | [14] | Packrat | Common Lisp | Mixed | Generated | All | no | MIT |
CL-Yacc | [15] | LALR(1) | Common Lisp | Mixed | External | All | no | MIT |
Coco/R | [16] | LL(k) | C, C++, C#, F#, Java, Ada, Pascal, Modula-2, Oberon, Ruby, Unicon, Visual Basic .NET | Mixed | Generated | JVM, .NET | no | GNU GPL |
CppCC | [17] | LL(k) | C++ | Mixed | Generated | POSIX | no | GNU GPL |
CSP | [18] | LR(1) | C++ | Separate | Generated | POSIX | no | Apache License V2.0 |
CSTools | [19] | LALR | C# | Mixed | Generated | .NET | no | ? |
CUP | [20] | LALR | Java | Mixed | External (JLex) | JVM | no | GNU GPL |
DMS Software Reengineering Toolkit | [21] | GLR | Parlanse | Mixed | Generated | Win32 | no | Proprietary |
DParser | [22] | Scannerless GLR | C | Mixed | Generated | POSIX | no | BSD |
Dragon | [23] | LR(1), LALR | C++, Java | Separate | Generated | All | no | GNU GPL |
Drat! | [24] | Packrat | D | Mixed | Generated | All | no | GNU GPL |
Elkhound | [25] | GLR | C++, OCaml | Mixed | External | All | no | BSD |
eli | [26] | LALR | C, others | Mixed | Generated | POSIX | no | GNU GPL, GNU LGPL |
Essence | [27] | LR | Scheme (Scheme 48) | Mixed | External | All | no | BSD |
eyapp | [28] | LALR(1) | Perl | Mixed | External | All | no | Perl |
F# PegParser | [29] | Packrat | F# | Mixed | Generated | .NET | no | ? |
Frisby | [30] | Packrat | Haskell | Mixed | Generated | All | no | BSD |
Frown | [31] | LALR(k) | Haskell 98 | Mixed | External | All | no | GNU GPL |
GDK | [32] | LALR(1), GLR | C, Delphi, Lex, Haskell, HTML, Java, Yacc | Mixed | Generated | POSIX | No | MIT |
GOLD | [33] | 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 | [34] | Packrat | TCL | Mixed | Generated | All | no | BSD |
Grammatica | [35] | LL(k) | C#, Java | Separate | Generated | JVM | no | GNU LGPL |
Happy | [36] | LALR, GLR | Haskell | Mixed | External | All | no | BSD |
HiLexed | [37] | LL(k) | Java | Separate | Internal | JVM | no | GNU LGPL |
Hyacc | [38] | LR(1) | C | Mixed | External | All | no | GNU GPL |
jacc | [39] | LALR | Java | Mixed | External | JVM | no | BSD |
JavaCC | [40] | LL(k) | Java | Mixed | Generated | JVM | yes | BSD |
jay | [41] | LALR | C#, Java | Mixed | None | All | no | BSD |
JetPAG | [42] | LL(k) | C++ | Mixed | Generated | All | no | GNU GPL |
JS/CC | [43] | LALR(1) | JavaScript, JScript, ECMAScript | Mixed | Internal | All | yes | Artistic |
Kelbt | [44] | Backtracking LALR(1) | C++ | Mixed | Generated | POSIX | no | GNU GPL |
kmyacc | [45] | LALR(1) | C, Java, Perl, JavaScript | Mixed | External | All | no | GNU GPL |
Lapg | [46] | LALR | Java, Javascript, C, C++, C# | Mixed | Generated | JVM | no | GNU GPL |
LEMON | [47] | LALR | C | Mixed | External | All | no | Public domain |
Lime | [48] | LALR(1) | PHP | Mixed | External | All | no | GNU GPL |
LISA | [49] | LR, LL, LALR, SLR | Java | Mixed | Generated | JVM | yes | Public Domain |
LPeg | [50] | Parsing Machine | Lua | Mixed | Generated | All | no | MIT |
LPG | [51] | Backtracking LALR | Java | Mixed | Generated | JVM | no | EPL |
LLgen | [52] | LL(1) | C | Mixed | External | POSIX | no | BSD |
LLnextgen | [53] | LL(1) | C | Mixed | External | POSIX | no | GNU GPL |
LRGen | [54] | LR(1) | C++ | Separate | Generated | Win32 | no | Proprietary |
Menhir | [55] | LR(1) | OCaml | Mixed | Generated | All | no | QPL |
Mini Parser Generator | [56] | ? | Python | Mixed | Generated | All | no | GNU LGPL |
ML-Yacc | [57] | LALR(1) | ML | Mixed | External | All | no | ? |
Monkey | [58] | LR(1) | Java | Separate | Generated | JVM | no | GNU GPL |
More Than Parsing | [59] | LL(1) | Java | Separate | Generated | JVM | no | GNU GPL |
MyL Programming Language | [60] | ? | C#, Delphi, Java, JScript, SQL | Mixed | Generated | Win32 | no | Public domain |
Narwhal | [61] | Packrat | C | Mixed | Generated | POSIX, Win32 | no | BSD |
ocamlyacc | [62] | LALR(1) | OCaml | Mixed | External (Ocamllex) | All | no | QPL |
olex | [63] | LL(1) | C++ | Mixed | Generated | All | no | GNU GPL |
Packrat | [64] | Packrat | Scheme | Mixed | Generated | All | no | MIT |
Pappy | [65] | Packrat | Haskell | Mixed | Generated | All | no | Proprietary |
Parsec (parser) | [66] | GLR | Haskell | Mixed | None | All | no | BSD |
Parse::Yapp | [67] | LALR(1) | Perl | Mixed | External | All | no | GNU GPL |
Parser Objects | ? | LL(k) | Java | Mixed | ? | JVM | no | zlib |
Parsnip | [68] | Packrat | C++ | Mixed | Generated | Win32 | no | GNU GPL |
peg | [69] | Recursive Descent (PEG) | C, C++ | Mixed | Generated | All | no | MIT |
PEGTL | [70] | Recursive Descent (PEG) | C++0x | Mixed | Internal | POSIX | no | MIT |
PGE | ? | Recursive Descent (PEG) | Parrot bytecode | Mixed | Generated | All | no | ? |
PyPy rlib | [71] | Packrat | Python | Mixed | Generated | All | no | MIT |
PLY | [72] | LALR(1) | Python | Mixed | Generated | All | no | GNU GPL |
PRECC | [73] | LL(k) | C | Separate | Generated | MS-DOS, POSIX | no | GNU GPL |
Rats! | [74] | PEG | Java | Mixed | Generated | JVM | no | GNU LGPL |
QLALR | [75] | LALR(1) | C++ | Mixed | External | All | no | GNU GPL |
SableCC | [76] | LALR | Java, C, C++, C#, OCaml, Python | Separate | Generated | All | no | GNU LGPL |
Scannerless Boolean Parser | [77] | Scannerless GLR (Boolean Grammars) | Java, Haskell | Separate | Generated | All | no | BSD |
SmaCC | [78] | LALR(1), LR(1) | Smalltalk | Mixed | Internal | All | yes | MIT |
SLK | [79] | LL(k) | C, C++, C#, Java | Separate | External | All | no | Proprietary |
SPARK | [80] | Earley | Python | Mixed | External | All | no | MIT |
Spirit | [81] | LL(k) | C++ | Mixed | Internal | All | no | Boost |
Styx | [82] | ? | C | Mixed | Generated | ? | All | GNU LGPL |
Tap | [83] | LL(1) | C++ | Mixed | Generated | All | no | GNU GPL |
TextTransformer | [84] | LL(k) | C++ | Mixed | Generated | Win32 | yes | Proprietary |
Tom | [85] | LR(k) (Tomita) | C | Generated | None | All | no | Proprietary |
Toy Parser Generator | [86] | Recusive Descent | Python | Mixed | Generated | All | no | GNU LGPL |
TP Yacc | [87] | LALR(1) | Turbo Pascal | Mixed | External | All | yes | GNU GPL |
Treetop | [88] | Recusive Descent (PEG) | Ruby | Mixed | Generated | All | no | ? |
Yacc (AT&T) | ? | LALR | C, others | Mixed | External | POSIX | no | ? |
Yacc++ | [89] | LR(k)/LALR(k) | C++, C# | Mixed | Generated or External | All | no | Proprietary |
Yapps | [90] | LL(1) | Python | Mixed | Generated | All | no | MIT |
Yard | [91] | Recursive Descent (PEG) | C++ | Mixed | Generated | All | no | MIT or Public Domain |
yecc | [92] | LALR(1) | Erlang | Separate | Generated | All | no | Erlang |
Visual BNF | [93] | LR(1)/LALR(1) | C# | Separate | Generated | .NET | yes | Proprietary |
Visual Parse++ | [94] | LALR | C, C++, C#, Java | Separate | Generated | Win32 | yes | Proprietary |
YooParse | [95] | LR | C++ | Mixed | External (YooLex) | All | no | MIT |
Wisent | [96] | LALR(1) | C++, Java | Mixed | External | JVM | All | GNU GPL |
Product | Website | Parsing Algorithm | Output Languages | Grammar / Code | Lexer | Development Platform | IDE | License |