- Comparison of parser generators
-
This is a list of notable lexer generators and parser generators for various language classes.
Contents
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 ? 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 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 proprietary 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 RPA [78] Backtracking Bottom-up 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 SLK [80] LL(k) ? C, C++, C#, Java separate external all No Proprietary Spirit [81] Recursive descent ? C++ mixed internal all No Boost Styx [82] LALR(1) ? C, C++ separate generated all No GNU LGPL Sweet Parser [83] LALR(1) ? C++ separate generated Microsoft Windows No zlib Tap [84] LL(1) ? C++ mixed generated all No GNU GPL TextTransformer [85] LL(k) ? C++ mixed generated Microsoft Windows Yes Proprietary TinyPG [86] LL(1) ? C#, Visual Basic ? ? Microsoft Windows Yes CPOL 1.0 Toy Parser Generator [87] Recursive descent ? Python mixed generated all No GNU LGPL TP Yacc [88] LALR(1) ? Turbo Pascal mixed external all Yes GNU GPL UniCC [89] LALR(1) EBNF C, target-language independent mixed generated POSIX No Artistic 2.0 Whale [90] LR(?), some conjunctive stuff, see Whale Calf ? C++ mixed external all No Proprietary Wisent [91] LALR(1) ? C++, Java mixed external Java Virtual Machine No GNU GPL Yacc (AT&T)/Sun [92]/[93] LALR(1) YACC C mixed external POSIX No CPL & CDDL Yacc++ [94] LR(1), LALR(1) YACC C++, C# mixed generated or external all No Proprietary Yapps [95] LL(1) ? Python mixed generated all No MIT yecc [96] LALR(1) ? Erlang separate generated all No Erlang VisualLangLab [97] 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 [98] LR(1), LALR(1) ? C# separate generated .NET Framework Yes Proprietary Visual Parse++ [99] LALR(???) ? C, C++, C#, Java separate generated Microsoft Windows Yes Proprietary YooParse [100] 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 Parsing expression grammars, deterministic boolean grammars
Name Website Parsing algorithm Output languages Grammar, code Development platform License Aurochs [101] Packrat C, Objective Caml, Java mixed all GNU GPL CL-peg [102] Packrat Common Lisp mixed all MIT Drat! [103] Packrat D mixed all GNU GPL Frisby [104] Packrat Haskell mixed all BSD grammar::peg [105] Packrat Tcl mixed all BSD IronMeta [106] Packrat C# mixed Microsoft Windows BSD Katahdin [107] Packrat (modified), mutating interpreter C# mixed all Public domain Laja [108] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL LPeg [109] Parsing Machine Lua mixed all MIT Mouse [110] Recursive descent Java separate Java Virtual Machine Apache License 2.0 Narwhal [111] Packrat C mixed POSIX, Microsoft Windows BSD Nemerle.Peg [112] Recursive descent + Pratt Nemerle separate all BSD neotoma [113] Packrat Erlang separate all MIT NPEG [114] Recursive descent C# mixed all MIT OMeta [115] Packrat (modified) JavaScript, Squeak mixed all MIT Packrat [116] Packrat Scheme mixed all MIT Pappy [117] Packrat Haskell mixed all Proprietary parboiled [118] Recursive descent Java, Scala mixed Java Virtual Machine Apache License 2.0 parsepp [119] ? C++ mixed all Public domain Parsnip [120] Packrat C++ mixed Microsoft Windows GNU GPL peg [121] Recursive descent C mixed all MIT PEG.js [122] Packrat JavaScript mixed all MIT peg-parser [123] PEG parser interpreter Dylan separate all pegc [124] ? C mixed all Public domain PetitParser [125] Packrat Smalltalk, JavaScript mixed all MIT PEGTL [126] Recursive descent C++0x mixed POSIX MIT PGE Parser Grammar Engine Recursive descent Parrot bytecode mixed Parrot virtual machine Artistic 2.0 PyPy rlib [127] Packrat Python mixed all MIT pyPEG [128] PEG parser interpreter, Packrat Python mixed all GNU GPL Rats! [129] Packrat Java mixed Java Virtual Machine GNU LGPL Spirit2 [130] Recursive descent C++ mixed all Boost Treetop [131] Recursive descent Ruby mixed all MIT Yard [132] Recursive descent C++ mixed all MIT or Public domain Waxeye [133] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT General context-free, conjunctive or boolean languages
Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License ACCENT [134] Earley ? C mixed external all No GNU GPL APaGeD [135] GLR, LALR(1), LL(k) ? D mixed generated all No Artistic Bison [136] LALR, GLR YACC C, C++, Java mixed external all No GNU GPL DMS Software Reengineering Toolkit [137] GLR ? Parlanse mixed generated Microsoft Windows No Proprietary DParser [138] Scannerless GLR ? C mixed scannerless POSIX No BSD Dypgen [139] runtime-extensible GLR ? Objective Caml mixed generated all No CeCILL-B Elkhound [140] GLR ? C++, Objective Caml mixed external all No BSD eu.h8me.Parsing [141] GLR ? N/A (state machine is runtime generated) separate external .NET Framework No BSD GDK [142] LALR(1), GLR ? C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT Happy [143] LALR, GLR ? Haskell mixed external all No BSD Hime Parser Generator [144] GLR ? C# separate generated .NET Framework No GNU LGPL Jison [145] LALR(1), LR(0), SLR(1) YACC JavaScript mixed generated all No MIT Laja [146] Scannerless, two phase Laja Java separate scannerless all No GNU GPL Scannerless Boolean Parser [147] Scannerless GLR (Boolean grammars) ? Haskell, Java separate scannerless Java Virtual Machine No BSD SDF/SGLR [148] Scannerless GLR SDF C, Java separate scannerless all Yes BSD SmaCC [149] GLR(1), LALR(1), LR(1) ? Smalltalk mixed internal all Yes MIT SPARK [150] Earley ? Python mixed external all No MIT Tom [151] GLR ? C generated none all No Proprietary UltraGram [152] LALR, LR, GLR ? C++, C#, Java, Visual Basic .NET separate generated Microsoft Windows Yes Proprietary Wormhole [153] Pruning, LR, GLR, Scannerless GLR ? C, Python mixed scannerless Microsoft Windows No MIT Whale Calf [154] General tabular, SLL(k), Linear normal form (Conjunctive grammars), LR, Binary normal form (Boolean grammars) ? C++ separate external all No Proprietary See also
External links
Categories:- Parser generators
- Parsing algorithms
- Software comparisons
Wikimedia Foundation. 2010.