Jump to content

Comparison of parser generators

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Hyperyl (talk | contribs) at 16:06, 24 December 2008 (add other language classes). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

This is a list of notable parser generators.

Regular languages

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Dolphin [1] Deterministic finite state machine C++ Separated All no GNU GPL
Ragel [2] Deterministic finite state machine C, C++, D, Java, Objective-C, Ruby Mixed All no GNU GPL

Context-free languages

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [3] Earley C Mixed External All no GNU GPL
ANTLR [4] LL(*) C#, Java, Python Mixed Generated Java Virtual Machine yes BSD
AnaGram [5] LALR(1) C, C++ Mixed Generated Microsoft Windows ? Proprietary
APaGeD [6] GLR, LALR(1), LL(k) D Mixed Generated All no Artistic
APG [7] Recursive Descent C, C++ Separate None All no GNU GPL
Beaver [8] LALR Java Mixed External Java Virtual Machine no BSD
Bison [9] LALR, GLR C (programming language), C++ Mixed External All no GNU GPL
Bison++ [10] LALR(1) C++ Mixed External POSIX no GNU GPL
Bisonc++ [11] LALR(1) C++ Mixed External POSIX no GNU GPL
BtYacc [12] LALR C++ Mixed External All no Public domain
BYACC [13] LALR C Mixed External All no Public domain
BYACC/J [14] LALR C, Java Mixed External All no Public domain
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 Java Virtual Machine, .NET Framework 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 2.0
CSTools [19] LALR C# Mixed Generated .NET Framework no Proprietary
CUP [20] LALR Java Mixed External Java Virtual Machine no GNU GPL
DMS Software Reengineering Toolkit [21] GLR Parlanse Mixed Generated Microsoft Windows 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
Elkhound [24] GLR C++, OCaml Mixed External All no BSD
eli [25] LALR C Mixed Generated POSIX no GNU GPL, GNU LGPL
Essence [26] LR Scheme 48 Mixed External All no BSD
eyapp [27] LALR(1) Perl Mixed External All no Perl
Frown [28] LALR(k) Haskell 98 Mixed External All no GNU GPL
GDK [29] LALR(1), GLR C, Lex, Haskell, HTML, Java, Object Pascal, Yacc Mixed Generated POSIX No MIT
GOLD [30] LALR x86 assembly language, ANSI C, C#, D, Java, Pascal, Object Pascal, Python, Visual Basic 6, Visual Basic .NET, Visual C++ Separate Generated Microsoft Windows yes Freeware
GPPG [31] LALR C# Separate External Microsoft Windows yes Freeware
Grammatica [32] LL(k) C#, Java Separate Generated Java Virtual Machine no GNU LGPL
Happy [33] LALR, GLR Haskell Mixed External All no BSD
HiLexed [34] LL(k) Java Separate Internal Java Virtual Machine no GNU LGPL
Hyacc [35] LR(1) C Mixed External All no GNU GPL
jacc [36] LALR Java Mixed External Java Virtual Machine no BSD
JavaCC [37] LL(k) Java Mixed Generated Java Virtual Machine yes BSD
jay [38] LALR C#, Java Mixed None Java Virtual Machine no BSD
JetPAG [39] LL(k) C++ Mixed Generated All no GNU GPL
JS/CC [40] LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic
Kelbt [41] Backtracking LALR(1) C++ Mixed Generated POSIX no GNU GPL
kmyacc [42] LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL
Lapg [43] LALR C, C++, C#, Java, JavaScript Mixed Generated Java Virtual Machine no GNU GPL
LEMON [44] LALR C Mixed External All no Public domain
Lime [45] LALR(1) PHP Mixed External All no GNU GPL
LISA [46] LR, LL, LALR, SLR Java Mixed Generated Java Virtual Machine yes Public Domain
LPG [47] Backtracking LALR(k) Java Mixed Generated Java Virtual Machine no EPL
LLgen [48] LL(1) C Mixed External POSIX no BSD
LLnextgen [49] LL(1) C Mixed External POSIX no GNU GPL
LRGen [50] LR(1) C++ Separate Generated Microsoft Windows no Proprietary
Menhir [51] LR(1) OCaml Mixed Generated All no QPL
Mini Parser Generator [52] ? Python Mixed Generated All no GNU LGPL
ML-Yacc [53] LALR(1) ML Mixed External All no ?
Monkey [54] LR(1) Java Separate Generated Java Virtual Machine no GNU GPL
More Than Parsing [55] LL(1) Java Separate Generated Java Virtual Machine no GNU GPL
MyL Programming Language [56] ? C#, Java, JScript, Object Pascal,SQL Mixed Generated Microsoft Windows no Public domain
ocamlyacc [57] LALR(1) OCaml Mixed External All no QPL
olex [58] LL(1) C++ Mixed Generated All no GNU GPL
Parsec (parser) [59] GLR Haskell Mixed None All no BSD
Parse::Yapp [60] LALR(1) Perl Mixed External All no GNU GPL
Parser Objects ? LL(k) Java Mixed ? Java Virtual Machine no zlib
PLY [61] LALR(1) Python Mixed Generated All no GNU GPL
PRECC [62] LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL
QLALR [63] LALR(1) C++ Mixed External All no GNU GPL
SableCC [64] LALR C, C++, C#, Java, OCaml, Python (programming language) Separate Generated All no GNU LGPL
SmaCC [65] LALR(1), LR(1) Smalltalk Mixed Internal All yes MIT
SLK [66] LL(k) C, C++, C#, Java Separate External All no Proprietary
SPARK [67] Earley Python Mixed External All no MIT
Spirit [68] LL(k) C++ Mixed Internal All no Boost
Styx [69] ? C Mixed Generated ? All GNU LGPL
Tap [70] LL(1) C++ Mixed Generated All no GNU GPL
TextTransformer [71] LL(k) C++ Mixed Generated Microsoft Windows yes Proprietary
Tom [72] GLR C Generated None All no Proprietary
TinyPG [73] LL(1) C#, Visual Basic ? ? Microsoft Windows yes CPOL 1.0
Toy Parser Generator [74] Recursive Descent Python Mixed Generated All no GNU LGPL
TP Yacc [75] LALR(1) Turbo Pascal Mixed External All yes GNU GPL
UltraGram [76] LALR, LR, GLR C++, C#, Java, Visual Basic .NET Separate Generated Microsoft Windows yes Proprietary
Yacc (AT&T) ? LALR C Mixed External POSIX no Proprietary
Yacc++ [77] LR(k), LALR(k) C++, C# Mixed Generated or External All no Proprietary
Yapps [78] LL(1) Python Mixed Generated All no MIT
yecc [79] LALR(1) Erlang Separate Generated All no Erlang
Visual BNF [80] LR(1), LALR(1) C# Separate Generated .NET Framework yes Proprietary
Visual Parse++ [81] LALR C, C++, C#, Java Separate Generated Microsoft Windows yes Proprietary
YooParse [82] LR C++ Mixed External All no MIT
Whale [83] LR C++ Mixed External All no Proprietary
Wisent [84] LALR(1) C++, Java Mixed External Java Virtual Machine no GNU GPL
Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License

Parsing Expression Grammars

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Aurochs [85] Packrat C, OCaml, Java Mixed All GNU GPL
CL-peg [86] Packrat Common Lisp Mixed All MIT
Drat! [87] Packrat D Mixed All GNU GPL
F# PegParser [88] Packrat F# Mixed .NET Framework Proprietary
Frisby [89] Packrat Haskell Mixed All BSD
grammar::peg [90] Packrat Tcl Mixed All BSD
LPeg [91] Parsing Machine Lua Mixed All MIT
Narwhal [92] Packrat C Mixed POSIX, Microsoft Windows BSD
OMeta [93] ? JavaScript, Squeak Mixed All MIT
NPEG [94] Recursive Descent C# Mixed All MIT
Packrat [95] Packrat Scheme Mixed All MIT
Pappy [96] Packrat Haskell Mixed All Proprietary
parsepp [97] ? C++ Mixed All Public Domain
Parsnip [98] Packrat C++ Mixed Microsoft Windows GNU GPL
peg [99] Recursive Descent C, C++ Mixed All MIT
pegc [100] ? C Mixed All Public Domain
PEGTL [101] Recursive Descent C++0x Mixed POSIX MIT
PGE ? Recursive Descent Parrot bytecode Mixed Parrot virtual machine ?
PyPy rlib [102] Packrat Python Mixed All MIT
Rats! [103] Packrat Java Mixed Java Virtual Machine GNU LGPL
Treetop [104] Recusive Descent Ruby Mixed All ?
Yard [105] Recursive Descent C++ Mixed All MIT or Public Domain

Miscellaneous language classes

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform License
Whale Calf [106] General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) C++ Separate External All Proprietary
Scannerless Boolean Parser [107] Scannerless GLR (Boolean grammars) Haskell, Java Separate None Java Virtual Machine BSD

See also