Comparison of parser generators

From Wikipedia, the free encyclopedia

This is a list of notable parsing systems.

Contents

[edit] 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.

[edit] 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++, C#, Java, Python Mixed Generated JVM yes BSD
APaGeD [3] GLR, LALR(1), LL(k) D Mixed Generated All no Artistic
APG [4] Recursive Descent C, C++ Separate None All no GNU GPL
Aurochs [5] Packrat C, Ocaml, Java Mixed Generated All no GNU GPL
Beaver [6] LALR Java Mixed External JVM no BSD
Bison [7] LALR, GLR C, C++ Mixed External All no GNU GPL
BtYACC [8] LALR C++ Mixed External All no Public domain
BYACC [9] LALR C Mixed External All no Public domain
BYACC/J [10] LALR C, Java Mixed External (JFlex) All no Public domain
CL-peg [11] Packrat Common Lisp Mixed Generated All no MIT
CL-Yacc [12] LALR(1) Common Lisp Mixed External All no MIT
Coco/R [13] 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 [14] LL(k) C++ Mixed Generated POSIX no GNU GPL
CSTools [15] LALR C# Mixed Generated .NET no  ?
CUP [16] LALR Java Mixed External (JLex) JVM no GNU GPL
DMS Software Reengineering Toolkit [17] GLR Parlanse Mixed Generated Win32 no Proprietary
DParser [18] Scannerless GLR C Mixed Generated POSIX no BSD
Drat! [19] Packrat D Mixed Generated All no GNU GPL
Elkhound [20] GLR C++, OCaml Mixed External All no BSD
eli [21] LALR C, others Mixed Generated POSIX no GNU GPL, GNU LGPL
Essence [22] LR Scheme (Scheme 48) Mixed External All no BSD
eyapp [23] LALR(1) Perl Mixed External All no Perl
F# PegParser [24] Packrat F# Mixed Generated .NET no  ?
Frisby [25] Packrat Haskell Mixed Generated All no BSD
GOLD [26] 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 [27] Packrat TCL Mixed Generated All no BSD
Grammatica [28] LL(k) C#, Java Separate Generated JVM no GNU LGPL
Happy [29] LALR, GLR Haskell Mixed External All no BSD
Hyacc [30] LR(1) C Mixed External All no GNU GPL
jacc [31] LALR Java Mixed External JVM no BSD
JavaCC [32] LL(k) Java Mixed Generated JVM yes BSD
jay [33] LALR C#, Java Mixed None All no BSD
JetPAG [34] LL(k) C++ Mixed Generated All no GNU GPL
JS/CC [35] LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic
kmyacc [36] LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL
Lapg [37] LALR Java, Javascript, C, C++, C# Mixed Generated JVM no EPL
LEMON [38] LALR C Mixed External All no Public domain
LISA [39] LR, LL, LALR, SLR Java Mixed Generated JVM yes Public Domain
LPeg [40] Parsing Machine Lua Mixed Generated All no MIT
LPG [41] LALR Java Mixed Generated JVM no EPL
LRGen  ? LR(1) C++ Separate Generated Win32 no Proprietary
Menhir [42] LR(1) OCaml Mixed Generated All no QPL
ML-Yacc [43] LALR(1) ML Mixed External All no  ?
More Than Parsing [44] LL(1) Java Separate Generated JVM no GNU GPL
Narwhal [45] Packrat C Mixed Generated POSIX, Win32 no BSD
ocamlyacc [46] LALR(1) OCaml Mixed External (Ocamllex) All no QPL
Packrat [47] Packrat Scheme Mixed Generated All no MIT
Pappy [48] Packrat Haskell Mixed Generated All no  ?
Parsec (parser) [49] GLR Haskell Mixed None All no BSD
Parsnip [50] Packrat C++ Mixed Generated Win32 no GNU GPL
Parser Objects  ? LL(k) Java Mixed  ? JVM no zlib
peg [51] Recursive Descent (PEG) C, C++ Mixed Generated All no MIT
PEGTL [52] Recursive Descent (PEG) C++0x Mixed Internal POSIX no MIT
PGE  ? Recursive Descent (PEG) Parrot bytecode Mixed Generated All no  ?
PyPy rlib [53] Packrat Python Mixed Generated All no MIT
PLY [54] LALR(1) Python Mixed Generated All no GNU GPL
PRECC [55] LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL
Rats! [56] PEG Java Mixed Generated JVM no GNU LGPL
QLALR [57] LALR(1) C++ Mixed External All no GNU GPL
SableCC [58] LALR Java, C, C++, C#, OCaml, Python Separate Generated All no GNU LGPL
Scannerless Boolean Parser [59] Scannerless GLR (Boolean Grammars) Java, Haskell Separate Generated All no BSD
SmaCC [60] LALR(1)/LR(1) Smalltalk Mixed Internal All yes MIT
SLK [61] LL(k) C, C++, C#, Java Separate External All no Proprietary
SPARK [62] GLR Python Mixed External All no MIT
Spirit [63] LL(k) C++ Mixed Internal All no Boost
TextTransformer [64] LL(k) C++ Mixed Generated Win32 yes Proprietary
TP Yacc [65] LALR(1) Turbo Pascal Mixed External All yes GNU GPL
Treetop [66] Recusive Descent (PEG) Ruby Mixed Generated All no  ?
Yacc (AT&T)  ? LALR C, others Mixed External POSIX no  ?
Yacc++ [67] LR(k)/LALR(k) C++, C# Mixed Generated or External All no Proprietary or GNU GPL
Yapps [68] LL(1) Python Mixed Generated All no MIT
YARD [69] Recursive Descent (PEG) C++ Mixed Generated All no MIT or Public Domain
yecc [70] LALR(1) Erlang Separate Generated All no Erlang
Visual BNF [71] LR(1)/LALR(1) C# Separate Generated .NET yes Proprietary
Visual Parse++ [72] LALR C, C++, C#, Java Separate Generated Win32 yes Proprietary
YooParse [73] LR C++ Mixed External (YooLex) All no MIT
Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License

[edit] See also

[edit] External links