Comparison of parser generators

From Wikipedia, the free encyclopedia
Jump to: navigation, search

This is a list of notable lexer generators and parser generators for various language classes.

Contents

[edit] Regular languages

Name Website Lexer algorithm Output languages Grammar, code Development platform License
DFASTAR [1] DFA matrix tables C, C++ separate Windows Proprietary
Dolphin [2] DFA C++ separate all Proprietary
flex [3] DFA table driven C mixed all BSD
Alex [4] DFA Haskell mixed all BSD
JFlex [5] DFA Java mixed Java Virtual Machine GNU GPL
C# Flex [6] DFA C# mixed .NET CLR GNU GPL
JLex [7] DFA Java mixed Java Virtual Machine BSD-like [8]
C# Lex [9] DFA C# mixed .NET CLR  ?
CookCC [10] DFA Java mixed Java Virtual Machine BSD
gelex [11] DFA Eiffel mixed Eiffel MIT
gplex [12] DFA C# mixed .NET CLR BSD-like
lex  ? DFA C mixed POSIX Proprietary, CDDL
Quex [13] DFA direct code C, C++ mixed all GNU LGPL
Ragel [14] DFA C, C++, D, Java, Objective-C, Ruby mixed all GNU GPL
re2c [15] DFA direct code C mixed all MIT
Russ Cox's regular expression implementations [16] DFA, NFA Bytecode, x86 assembly language, interpreted separate all MIT
lexertl [17] DFA C++ all GNU LGPL

[edit] Deterministic context-free languages

Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License
ANTLR [18] LL(*) EBNF ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby mixed generated Java Virtual Machine Yes BSD
APG [19] Recursive descent, Backtracking ABNF C, C++, JavaScript, Java separate none all No GNU GPL
AXE [20] Recursive descent AXE/C++ C++11 mixed none any platform with standard C++11 compiler No Boost
Beaver [21] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
Bison++ [22] LALR(1)  ? C++ mixed external POSIX No GNU GPL
Bisonc++ [23] LALR(1)  ? C++ mixed external POSIX No GNU GPL
BtYacc [24] Backtracking Bottom-up  ? C++ mixed external all No Public domain
byacc [25] LALR(1) YACC C mixed external all No Public domain
BYACC/J [26] LALR(1)  ? C, Java mixed external all No Public domain
CL-Yacc [27] LALR(1)  ? Common Lisp mixed external all No MIT
Coco/R [28] 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
CookCC [29] LALR(1)  ? Java mixed generated Java Virtual Machine No BSD
CppCC [30] LL(k)  ? C++ mixed generated POSIX No GNU GPL
CSP [31] LR(1)  ? C++ separate generated POSIX No Apache License 2.0
CSTools [32] LALR(1)  ? C# mixed generated .NET Framework No Proprietary
CUP [33] LALR(1)  ? Java mixed external Java Virtual Machine No GNU GPL
Dragon [34] LR(1), LALR(1)  ? C++, Java separate generated all No GNU GPL
eli [35] LALR(1)  ? C mixed generated POSIX No GNU GPL, GNU LGPL
Essence [36] LR(???)  ? Scheme 48 mixed external all No BSD
eyapp [37] LALR(1)  ? Perl mixed external or generated all No Perl
Frown [38] LALR(k)  ? Haskell 98 mixed external all No GNU GPL
geyacc [39] LALR(1)  ? Eiffel mixed external all No MIT
GOLD [40] LALR(1) BNF 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 Modified Zlib
GPPG [41] LALR(1) YACC C# separate external Microsoft Windows Yes BSD
Grammatica [42] LL(k) BNF dialect C#, Java separate generated Java Virtual Machine No GNU LGPL
HiLexed [43] LL(*) EBNF or Java Java separate internal Java Virtual Machine No GNU LGPL
Hime Parser Generator [44] LR(1), LALR(1), LR(0), LR(*)  ? C# separate generated .NET Framework No GNU LGPL
Hyacc [45] LR(1), LALR(1), LR(0) YACC C mixed external all No GNU GPL
jacc [46] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
JavaCC [47] LL(k)  ? Java mixed generated Java Virtual Machine Yes BSD
jay [48] LALR(1) YACC C#, Java mixed none Java Virtual Machine No BSD
JFLAP [49] LL(1), LALR(1)  ? Java  ?  ? Java Virtual Machine Yes  ?
JetPAG [50] LL(k)  ? C++ mixed generated all No GNU GPL
JS/CC [51] LALR(1) EBNF JavaScript, JScript, ECMAScript mixed internal all Yes Artistic
KDevelop-PG-Qt [52] LL(1), Backtracking, Shunting yard  ? C++ mixed generated or external all, KDE No GNU LGPL
Kelbt [53] Backtracking LALR(1)  ? C++ mixed generated POSIX No GNU GPL
kmyacc [54] LALR(1)  ? C, Java, Perl, JavaScript mixed external all No GNU GPL
Lapg [55] LALR(1)  ? C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine No GNU GPL
Lemon [56] LALR(1)  ? C mixed external all No Public domain
LEPL [57] Recursive descent Python Python (no generation, library) separate none all No MPL/GNU LGPL
Lime [58] LALR(1)  ? PHP mixed external all No GNU GPL
LISA [59] LR(?), LL(?), LALR(?), SLR(?)  ? Java mixed generated Java Virtual Machine Yes Public domain
LPG [60] Backtracking LALR(k)  ? Java mixed generated Java Virtual Machine No EPL
LLgen [61] LL(1)  ? C mixed external POSIX No BSD
LLnextgen [62] LL(1)  ? C mixed external POSIX No GNU GPL
LRSTAR [63] LALR(1), LALR(k) TBNF C++, Visual C++ separate Includes DFASTAR Microsoft Windows Microsoft Visual Studio proprietary
Menhir [64] LR(1)  ? Objective Caml mixed generated all No QPL
Mini Parser Generator [65]  ?  ? Python mixed generated all No GNU LGPL
ML-Yacc [66] LALR(1)  ? ML mixed external all No  ?
Monkey [67] LR(1)  ? Java separate generated Java Virtual Machine No GNU GPL
More Than Parsing [68] LL(1)  ? Java separate generated Java Virtual Machine No GNU GPL
Msta [69] LALR(k), LR(k) YACC, EBNF C, C++ mixed external or generated POSIX, Cygwin No GNU GPL
ocamlyacc [70] LALR(1)  ? Objective Caml mixed external all No QPL
olex [71] LL(1)  ? C++ mixed generated all No GNU GPL
Parsec [72] LL, Backtracking  ? Haskell mixed none all No BSD
Parse::Yapp [73] LALR(1)  ? Perl mixed external all No GNU GPL
Parser Objects  ? LL(k)  ? Java mixed  ? Java Virtual Machine No zlib
PCCTS [74] LL  ? C, C++  ?  ? all No  ?
PLY [75] LALR(1)  ? Python mixed generated all No MIT License
PRECC [76] LL(k)  ? C separate generated DOS, POSIX No GNU GPL
QLALR [77] LALR(1)  ? C++ mixed external all No GNU GPL
RPATK [78] Recursive descent, Backtracking BNF C (no generation, library) separate none all No GNU GPL
SableCC [79] LALR(1)  ? C, C++, C#, Java, Objective Caml, Python separate generated all No GNU LGPL
Simple Parser [80] Recursive descent Python Python separate generated all No GNU LGPL
SLK [81] LL(k)  ? C, C++, C#, Java separate external all No Proprietary
Spirit [82] Recursive descent  ? C++ mixed internal all No Boost
Styx [83] LALR(1)  ? C, C++ separate generated all No GNU LGPL
Sweet Parser [84] LALR(1)  ? C++ separate generated Microsoft Windows No zlib
Tap [85] LL(1)  ? C++ mixed generated all No GNU GPL
TextTransformer [86] LL(k)  ? C++ mixed generated Microsoft Windows Yes Proprietary
TinyPG [87] LL(1)  ? C#, Visual Basic  ?  ? Microsoft Windows Yes CPOL 1.0
Toy Parser Generator [88] Recursive descent  ? Python mixed generated all No GNU LGPL
TP Yacc [89] LALR(1)  ? Turbo Pascal mixed external all Yes GNU GPL
UniCC [90] LALR(1) EBNF C, target-language independent mixed generated POSIX No Artistic 2.0
Whale [91] LR(?), some conjunctive stuff, see Whale Calf  ? C++ mixed external all No Proprietary
Wisent [92] LALR(1)  ? C++, Java mixed external Java Virtual Machine No GNU GPL
Yacc (AT&T)/Sun [93]/[94] LALR(1) YACC C mixed external POSIX No CPL & CDDL
Yacc++ [95] LR(1), LALR(1) YACC C++, C# mixed generated or external all No Proprietary
Yapps [96] LL(1)  ? Python mixed generated all No MIT
yecc [97] LALR(1)  ? Erlang separate generated all No Erlang
VisualLangLab [98] LL(*) visual tree (JTree) All JVM Languages, though Scala is particularly well supported because of its pattern matching capabilities mixed generated Scala Yes GNU GPL
Visual BNF [99] LR(1), LALR(1)  ? C# separate generated .NET Framework Yes Proprietary
Visual Parse++ [100] LALR(???)  ? C, C++, C#, Java separate generated Microsoft Windows Yes Proprietary
YooParse [101] LR(1), LALR(1)  ? C++ mixed external all No MIT
Product Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License

[edit] Parsing expression grammars, deterministic boolean grammars

Name Website Parsing algorithm Output languages Grammar, code Development platform License
Aurochs [102] Packrat C, Objective Caml, Java mixed all GNU GPL
CL-peg [103] Packrat Common Lisp mixed all MIT
Drat! [104] Packrat D mixed all GNU GPL
Frisby [105] Packrat Haskell mixed all BSD
grammar::peg [106] Packrat Tcl mixed all BSD
IronMeta [107] Packrat C# mixed Microsoft Windows BSD
Katahdin [108] Packrat (modified), mutating interpreter C# mixed all Public domain
Laja [109] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL
LPeg [110] Parsing Machine Lua mixed all MIT
Mouse [111] Recursive descent Java separate Java Virtual Machine Apache License 2.0
Narwhal [112] Packrat C mixed POSIX, Microsoft Windows BSD
Nemerle.Peg [113] Recursive descent + Pratt Nemerle separate all BSD
neotoma [114] Packrat Erlang separate all MIT
NPEG [115] Recursive descent C# mixed all MIT
OMeta [116] Packrat (modified) JavaScript, Squeak mixed all MIT
Packrat [117] Packrat Scheme mixed all MIT
Pappy [118] Packrat Haskell mixed all Proprietary
parboiled [119] Recursive descent Java, Scala mixed Java Virtual Machine Apache License 2.0
parsepp [120]  ? C++ mixed all Public domain
Parsnip [121] Packrat C++ mixed Microsoft Windows GNU GPL
peg [122] Recursive descent C mixed all MIT
PEG.js [123] Packrat JavaScript mixed all MIT
peg-parser [124] PEG parser interpreter Dylan separate all
pegc [125]  ? C mixed all Public domain
PetitParser [126] Packrat Smalltalk, JavaScript mixed all MIT
PEGTL [127] Recursive descent C++0x mixed POSIX MIT
PGE Parser Grammar Engine Recursive descent Parrot bytecode mixed Parrot virtual machine Artistic 2.0
PyPy rlib [128] Packrat Python mixed all MIT
pyPEG [129] PEG parser interpreter, Packrat Python mixed all GNU GPL
Rats! [130] Packrat Java mixed Java Virtual Machine GNU LGPL
Spirit2 [131] Recursive descent C++ mixed all Boost
Treetop [132] Recursive descent Ruby mixed all MIT
Yard [133] Recursive descent C++ mixed all MIT or Public domain
Waxeye [134] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT
PHP PEG [135]  ? (PEG Parser?) PHP mixed all BSD

[edit] General context-free, conjunctive or boolean languages

Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License
ACCENT [136] Earley  ? C mixed external all No GNU GPL
APaGeD [137] GLR, LALR(1), LL(k)  ? D mixed generated all No Artistic
Bison [138] LALR(1), LR(1), IELR(1), GLR YACC C, C++, Java mixed external all No GNU GPL
DMS Software Reengineering Toolkit [139] GLR  ? Parlanse mixed generated Microsoft Windows No Proprietary
DParser [140] Scannerless GLR  ? C mixed scannerless POSIX No BSD
Dypgen [141] runtime-extensible GLR  ? Objective Caml mixed generated all No CeCILL-B
Elkhound [142] GLR  ? C++, Objective Caml mixed external all No BSD
eu.h8me.Parsing [143] GLR  ? N/A (state machine is runtime generated) separate external .NET Framework No BSD
GDK [144] LALR(1), GLR  ? C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT
Happy [145] LALR, GLR  ? Haskell mixed external all No BSD
Hime Parser Generator [146] GLR  ? C# separate generated .NET Framework No GNU LGPL
Jison [147] LALR(1), LR(0), SLR(1) YACC JavaScript mixed generated all No MIT
Laja [148] Scannerless, two phase Laja Java separate scannerless all No GNU GPL
Scannerless Boolean Parser [149] Scannerless GLR (Boolean grammars)  ? Haskell, Java separate scannerless Java Virtual Machine No BSD
SDF/SGLR [150] Scannerless GLR SDF C, Java separate scannerless all Yes BSD
SmaCC [151] GLR(1), LALR(1), LR(1)  ? Smalltalk mixed internal all Yes MIT
SPARK [152] Earley  ? Python mixed external all No MIT
Tom [153] GLR  ? C generated none all No Proprietary
UltraGram [154] LALR, LR, GLR  ? C++, C#, Java, Visual Basic .NET separate generated Microsoft Windows Yes Proprietary
Wormhole [155] Pruning, LR, GLR, Scannerless GLR  ? C, Python mixed scannerless Microsoft Windows No MIT
Whale Calf [156] General tabular, SLL(k), Linear normal form (Conjunctive grammars), LR, Binary normal form (Boolean grammars)  ? C++ separate external all No Proprietary

[edit] See also

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Toolbox
Print/export