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 11:03, 25 December 2008 (Parsing Expression Grammars: sort). 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 for various language classes.

Regular languages

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Dolphin [1] DFA C++ Separated All Proprietary
flex [2] DFA C Mixed All GNU GPL
JFlex [3] ? Java ? Java Virtual Machine GNU GPL
JLex [4] ? Java ? Java Virtual Machine ?
lex ? DFA C Mixed POSIX Proprietary
Quex [5] DFA C++ Mixed All GNU LGPL
Ragel [6] DFA C, C++, D, Java, Objective-C, Ruby Mixed All GNU GPL
re2c [7] DFA C Mixed All MIT
Russ Cox's regular expression implementations [8] DFA, NFA Bytecode, x86 assembly language, interpreted Separated All MIT

Context-free languages

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [9] Earley C Mixed External All no GNU GPL
ANTLR [10] LL(*) C#, Java, Python Mixed Generated Java Virtual Machine yes BSD
AnaGram [11] LALR(1) C, C++ Mixed Generated Microsoft Windows ? Proprietary
APaGeD [12] GLR, LALR(1), LL(k) D Mixed Generated All no Artistic
APG [13] Recursive Descent C, C++ Separate None All no GNU GPL
Beaver [14] LALR Java Mixed External Java Virtual Machine no BSD
Bison [15] LALR, GLR C, C++ Mixed External All no GNU GPL
Bison++ [16] LALR(1) C++ Mixed External POSIX no GNU GPL
Bisonc++ [17] LALR(1) C++ Mixed External POSIX no GNU GPL
BtYacc [18] LALR C++ Mixed External All no Public domain
BYACC [19] LALR C Mixed External All no Public domain
BYACC/J [20] LALR C, Java Mixed External All no Public domain
CL-Yacc [21] LALR(1) Common Lisp Mixed External All no MIT
Coco/R [22] 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 [23] LL(k) C++ Mixed Generated POSIX no GNU GPL
CSP [24] LR(1) C++ Separate Generated POSIX no Apache License 2.0
CSTools [25] LALR C# Mixed Generated .NET Framework no Proprietary
CUP [26] LALR Java Mixed External Java Virtual Machine no GNU GPL
DMS Software Reengineering Toolkit [27] GLR Parlanse Mixed Generated Microsoft Windows no Proprietary
DParser [28] Scannerless GLR C Mixed Generated POSIX no BSD
Dragon [29] LR(1), LALR C++, Java Separate Generated All no GNU GPL
Elkhound [30] GLR C++, OCaml Mixed External All no BSD
eli [31] LALR C Mixed Generated POSIX no GNU GPL, GNU LGPL
Essence [32] LR Scheme 48 Mixed External All no BSD
eyapp [33] LALR(1) Perl Mixed External All no Perl
Frown [34] LALR(k) Haskell 98 Mixed External All no GNU GPL
GDK [35] LALR(1), GLR C, Lex, Haskell, HTML, Java, Object Pascal, Yacc Mixed Generated POSIX No MIT
GOLD [36] 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 [37] LALR C# Separate External Microsoft Windows yes Freeware
Grammatica [38] LL(k) C#, Java Separate Generated Java Virtual Machine no GNU LGPL
Happy [39] LALR, GLR Haskell Mixed External All no BSD
HiLexed [40] LL(k) Java Separate Internal Java Virtual Machine no GNU LGPL
Hyacc [41] LR(1) C Mixed External All no GNU GPL
jacc [42] LALR Java Mixed External Java Virtual Machine no BSD
JavaCC [43] LL(k) Java Mixed Generated Java Virtual Machine yes BSD
jay [44] LALR C#, Java Mixed None Java Virtual Machine no BSD
JetPAG [45] LL(k) C++ Mixed Generated All no GNU GPL
JS/CC [46] LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic
Kelbt [47] Backtracking LALR(1) C++ Mixed Generated POSIX no GNU GPL
kmyacc [48] LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL
Lapg [49] LALR C, C++, C#, Java, JavaScript Mixed Generated Java Virtual Machine no GNU GPL
Lemon [50] LALR C Mixed External All no Public domain
Lime [51] LALR(1) PHP Mixed External All no GNU GPL
LISA [52] LR, LL, LALR, SLR Java Mixed Generated Java Virtual Machine yes Public Domain
LPG [53] Backtracking LALR(k) Java Mixed Generated Java Virtual Machine no EPL
LLgen [54] LL(1) C Mixed External POSIX no BSD
LLnextgen [55] LL(1) C Mixed External POSIX no GNU GPL
LRGen [56] LR(1) C++ Separate Generated Microsoft Windows no Proprietary
Menhir [57] LR(1) OCaml Mixed Generated All no QPL
Mini Parser Generator [58] ? Python Mixed Generated All no GNU LGPL
ML-Yacc [59] LALR(1) ML Mixed External All no ?
Monkey [60] LR(1) Java Separate Generated Java Virtual Machine no GNU GPL
More Than Parsing [61] LL(1) Java Separate Generated Java Virtual Machine no GNU GPL
MyL Programming Language [62] ? C#, Java, JScript, Object Pascal,SQL Mixed Generated Microsoft Windows no Public domain
ocamlyacc [63] LALR(1) OCaml Mixed External All no QPL
olex [64] LL(1) C++ Mixed Generated All no GNU GPL
Parsec (parser) [65] GLR Haskell Mixed None All no BSD
Parse::Yapp [66] LALR(1) Perl Mixed External All no GNU GPL
Parser Objects ? LL(k) Java Mixed ? Java Virtual Machine no zlib
PLY [67] LALR(1) Python Mixed Generated All no GNU GPL
PRECC [68] LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL
QLALR [69] LALR(1) C++ Mixed External All no GNU GPL
SableCC [70] LALR C, C++, C#, Java, OCaml, Python Separate Generated All no GNU LGPL
SmaCC [71] LALR(1), LR(1) Smalltalk Mixed Internal All yes MIT
SLK [72] LL(k) C, C++, C#, Java Separate External All no Proprietary
SPARK [73] Earley Python Mixed External All no MIT
Spirit [74] LL(k) C++ Mixed Internal All no Boost
Styx [75] ? C Mixed Generated ? All GNU LGPL
Tap [76] LL(1) C++ Mixed Generated All no GNU GPL
TextTransformer [77] LL(k) C++ Mixed Generated Microsoft Windows yes Proprietary
Tom [78] GLR C Generated None All no Proprietary
TinyPG [79] LL(1) C#, Visual Basic ? ? Microsoft Windows yes CPOL 1.0
Toy Parser Generator [80] Recursive Descent Python Mixed Generated All no GNU LGPL
TP Yacc [81] LALR(1) Turbo Pascal Mixed External All yes GNU GPL
UltraGram [82] 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++ [83] LR(k), LALR(k) C++, C# Mixed Generated or External All no Proprietary
Yapps [84] LL(1) Python Mixed Generated All no MIT
yecc [85] LALR(1) Erlang Separate Generated All no Erlang
Visual BNF [86] LR(1), LALR(1) C# Separate Generated .NET Framework yes Proprietary
Visual Parse++ [87] LALR C, C++, C#, Java Separate Generated Microsoft Windows yes Proprietary
YooParse [88] LR C++ Mixed External All no MIT
Whale [89] LR C++ Mixed External All no Proprietary
Wisent [90] 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 [91] Packrat C, OCaml, Java Mixed All GNU GPL
CL-peg [92] Packrat Common Lisp Mixed All MIT
Drat! [93] Packrat D Mixed All GNU GPL
F# PegParser [94] Packrat F# Mixed .NET Framework Proprietary
Frisby [95] Packrat Haskell Mixed All BSD
grammar::peg [96] Packrat Tcl Mixed All BSD
LPeg [97] Parsing Machine Lua Mixed All MIT
Narwhal [98] Packrat C Mixed POSIX, Microsoft Windows BSD
NPEG [99] Recursive Descent C# Mixed All MIT
OMeta [100] ? JavaScript, Squeak Mixed All MIT
Packrat [101] Packrat Scheme Mixed All MIT
Pappy [102] Packrat Haskell Mixed All Proprietary
parsepp [103] ? C++ Mixed All Public Domain
Parsnip [104] Packrat C++ Mixed Microsoft Windows GNU GPL
peg [105] Recursive Descent C, C++ Mixed All MIT
pegc [106] ? C Mixed All Public Domain
PEGTL [107] Recursive Descent C++0x Mixed POSIX MIT
PGE ? Recursive Descent Parrot bytecode Mixed Parrot virtual machine ?
PyPy rlib [108] Packrat Python Mixed All MIT
Rats! [109] Packrat Java Mixed Java Virtual Machine GNU LGPL
Treetop [110] Recusive Descent Ruby Mixed All ?
Yard [111] 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 [112] General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) C++ Separate External All Proprietary
Scannerless Boolean Parser [113] Scannerless GLR (Boolean grammars) Haskell, Java Separate None Java Virtual Machine BSD

See also