Comparison of parser generators

From Wikipedia, the free encyclopedia
  (Redirected from List of compiler-compilers)
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
DFAC [1] DFA direct code C, C++ separate Windows BSD
DFASTAR [2] DFA matrix tables C, C++ separate Windows BSD
Dolphin [3] DFA C++ separate all Proprietary
flex [4] DFA table driven C mixed all BSD
Alex [5] DFA Haskell mixed all BSD
JFlex [6] DFA Java mixed Java Virtual Machine GNU GPL
C# Flex [7] DFA C# mixed .NET CLR GNU GPL
JLex [8] DFA Java mixed Java Virtual Machine BSD-like [9]
C# Lex [10] DFA C# mixed .NET CLR  ?
CookCC [11] DFA Java mixed Java Virtual Machine BSD
gelex [12] DFA Eiffel mixed Eiffel MIT
gplex [13] DFA C# mixed .NET CLR BSD-like
lex [14] DFA C mixed POSIX Proprietary, CDDL
Quex [15] DFA direct code C, C++ mixed all GNU LGPL
Ragel [16] DFA C, C++, D, Java, Objective-C, Ruby mixed all GNU GPL
re2c [17] DFA direct code C mixed all MIT
Russ Cox's regular expression implementations [18] DFA, NFA Bytecode, x86 assembly language, interpreted separate all MIT
lexertl [19] 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 [20] LL(*) EBNF ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby mixed generated Java Virtual Machine Yes BSD
APG [21] Recursive descent, Backtracking ABNF C, C++, JavaScript, Java separate none all No GNU GPL
AXE [22] Recursive descent AXE/C++ C++11 mixed none any platform with standard C++11 compiler No Boost
Beaver [23] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
Bison++ [24] LALR(1)  ? C++ mixed external POSIX No GNU GPL
Bisonc++ [25] LALR(1)  ? C++ mixed external POSIX No GNU GPL
BtYacc [26] Backtracking Bottom-up  ? C++ mixed external all No Public domain
byacc [27] LALR(1) YACC C mixed external all No Public domain
BYACC/J [28] LALR(1)  ? C, Java mixed external all No Public domain
CL-Yacc [29] LALR(1)  ? Common Lisp mixed external all No MIT
Coco/R [30] 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 [31] LALR(1)  ? Java mixed generated Java Virtual Machine No BSD
CppCC [32] LL(k)  ? C++ mixed generated POSIX No GNU GPL
CSP [33] LR(1)  ? C++ separate generated POSIX No Apache License 2.0
CUP [34] LALR(1)  ? Java mixed external Java Virtual Machine No GNU GPL
Dragon [35] LR(1), LALR(1)  ? C++, Java separate generated all No GNU GPL
eli [36] LALR(1)  ? C mixed generated POSIX No GNU GPL, GNU LGPL
Essence [37] LR(???)  ? Scheme 48 mixed external all No BSD
eyapp [38] LALR(1)  ? Perl mixed external or generated all No Perl
Frown [39] LALR(k)  ? Haskell 98 mixed external all No GNU GPL
geyacc [40] LALR(1)  ? Eiffel mixed external all No MIT
GOLD [41] 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 [42] LALR(1) YACC C# separate external Microsoft Windows Yes BSD
Grammatica [43] LL(k) BNF dialect C#, Java separate generated Java Virtual Machine No GNU LGPL
HiLexed [44] LL(*) EBNF or Java Java separate internal Java Virtual Machine No GNU LGPL
Hime Parser Generator [45] LR(1), LALR(1), LR(0), LR(*)  ? C# separate generated .NET Framework No GNU LGPL
Hyacc [46] LR(1), LALR(1), LR(0) YACC C mixed external all No GNU GPL
jacc [47] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
JavaCC [48] LL(k)  ? Java mixed generated Java Virtual Machine Yes BSD
jay [49] LALR(1) YACC C#, Java mixed none Java Virtual Machine No BSD
JFLAP [50] LL(1), LALR(1)  ? Java  ?  ? Java Virtual Machine Yes  ?
JetPAG [51] LL(k)  ? C++ mixed generated all No GNU GPL
JS/CC [52] LALR(1) EBNF JavaScript, JScript, ECMAScript mixed internal all Yes Artistic
KDevelop-PG-Qt [53] LL(1), Backtracking, Shunting yard  ? C++ mixed generated or external all, KDE No GNU LGPL
Kelbt [54] Backtracking LALR(1)  ? C++ mixed generated POSIX No GNU GPL
kmyacc [55] LALR(1)  ? C, Java, Perl, JavaScript mixed external all No GNU GPL
Lapg [56] LALR(1)  ? C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine No GNU GPL
Lemon [57] LALR(1)  ? C mixed external all No Public domain
LEPL [58] Recursive descent Python Python (no generation, library) separate none all No MPL/GNU LGPL
Lime [59] LALR(1)  ? PHP mixed external all No GNU GPL
LISA [60] LR(?), LL(?), LALR(?), SLR(?)  ? Java mixed generated Java Virtual Machine Yes Public domain
LPG [61] Backtracking LALR(k)  ? Java mixed generated Java Virtual Machine No EPL
LLgen [62] LL(1)  ? C mixed external POSIX No BSD
LLnextgen [63] LL(1)  ? C mixed external POSIX No GNU GPL
LRSTAR [64] LALR(1), LALR(k) TBNF C++, Visual C++ separate Includes DFASTAR and DFAC Microsoft Windows Microsoft Visual Studio BSD
Menhir [65] LR(1)  ? Objective Caml mixed generated all No QPL
Mini Parser Generator [66]  ?  ? Python mixed generated all No GNU LGPL
ML-Yacc [67] LALR(1)  ? ML mixed external all No  ?
Monkey [68] LR(1)  ? Java separate generated Java Virtual Machine No GNU GPL
More Than Parsing [69] LL(1)  ? Java separate generated Java Virtual Machine No GNU GPL
Msta [70] LALR(k), LR(k) YACC, EBNF C, C++ mixed external or generated POSIX, Cygwin No GNU GPL
ocamlyacc [71] LALR(1)  ? Objective Caml mixed external all No QPL
olex [72] LL(1)  ? C++ mixed generated all No GNU GPL
Parsec [73] LL, Backtracking  ? Haskell mixed none all No BSD
Parse::Yapp [74] LALR(1)  ? Perl mixed external all No GNU GPL
Parser Objects  ? LL(k)  ? Java mixed  ? Java Virtual Machine No zlib
PCCTS [75] LL  ? C, C++  ?  ? all No  ?
PLY [76] LALR(1)  ? Python mixed generated all No MIT License
PRECC [77] LL(k)  ? C separate generated DOS, POSIX No GNU GPL
QLALR [78] LALR(1)  ? C++ mixed external all No GNU GPL
RPATK [79] Recursive descent, Backtracking BNF C (no generation, library) separate none all No GNU GPL
SableCC [80] LALR(1)  ? C, C++, C#, Java, Objective Caml, Python separate generated all No GNU LGPL
Simple Parser [81] Recursive descent Python Python separate generated all No GNU LGPL
SLK [82] LL(k)  ? C, C++, C#, Java separate external all No Proprietary
Spirit [83] Recursive descent  ? C++ mixed internal all No Boost
Styx [84] LALR(1)  ? C, C++ separate generated all No GNU LGPL
Sweet Parser [85] LALR(1)  ? C++ separate generated Microsoft Windows No zlib
Tap [86] LL(1)  ? C++ mixed generated all No GNU GPL
TextTransformer [87] LL(k)  ? C++ mixed generated Microsoft Windows Yes Proprietary
TinyPG [88] LL(1)  ? C#, Visual Basic  ?  ? Microsoft Windows Yes CPOL 1.0
Toy Parser Generator [89] Recursive descent  ? Python mixed generated all No GNU LGPL
TP Yacc [90] LALR(1)  ? Turbo Pascal mixed external all Yes GNU GPL
UniCC [91] LALR(1) EBNF C, target-language independent mixed generated POSIX No Artistic 2.0
Whale [92] LR(?), some conjunctive stuff, see Whale Calf  ? C++ mixed external all No Proprietary
Wisent [93] LALR(1)  ? C++, Java mixed external Java Virtual Machine No GNU GPL
Yacc (AT&T)/Sun [94]/[95] LALR(1) YACC C mixed external POSIX No CPL & CDDL
Yacc++ [96] LR(1), LALR(1) YACC C++, C# mixed generated or external all No Proprietary
Yapps [97] LL(1)  ? Python mixed generated all No MIT
yecc [98] LALR(1)  ? Erlang separate generated all No Erlang
VisualLangLab [99] 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 [100] LR(1), LALR(1)  ? C# separate generated .NET Framework Yes Proprietary
Visual Parse++ [101] LALR(???)  ? C, C++, C#, Java separate generated Microsoft Windows Yes Proprietary
YooParse [102] 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 [103] Packrat C, Objective Caml, Java mixed all GNU GPL
CL-peg [104] Packrat Common Lisp mixed all MIT
Drat! [105] Packrat D mixed all GNU GPL
Frisby [106] Packrat Haskell mixed all BSD
grammar::peg [107] Packrat Tcl mixed all BSD
IronMeta [108] Packrat C# mixed Microsoft Windows BSD
Katahdin [109] Packrat (modified), mutating interpreter C# mixed all Public domain
Laja [110] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL
LPeg [111] Parsing Machine Lua mixed all MIT
Mouse [112] Recursive descent Java separate Java Virtual Machine Apache License 2.0
Narwhal [113] Packrat C mixed POSIX, Microsoft Windows BSD
Nemerle.Peg [114] Recursive descent + Pratt Nemerle separate all BSD
neotoma [115] Packrat Erlang separate all MIT
NPEG [116] Recursive descent C# mixed all MIT
OMeta [117] Packrat (modified) JavaScript, Squeak, Python mixed all MIT
Packrat [118] Packrat Scheme mixed all MIT
Pappy [119] Packrat Haskell mixed all Proprietary
parboiled [120] Recursive descent Java, Scala mixed Java Virtual Machine Apache License 2.0
parsepp [121]  ? C++ mixed all Public domain
Parsnip [122] Packrat C++ mixed Microsoft Windows GNU GPL
peg [123] Recursive descent C mixed all MIT
PEG.js [124] Packrat JavaScript mixed all MIT
peg-parser [125] PEG parser interpreter Dylan separate all
pegc [126]  ? C mixed all Public domain
PetitParser [127] Packrat Smalltalk, JavaScript mixed all MIT
PEGTL [128] Recursive descent C++0x mixed POSIX MIT
PGE Parser Grammar Engine Recursive descent Parrot bytecode mixed Parrot virtual machine Artistic 2.0
PyPy rlib [129] Packrat Python mixed all MIT
pyPEG [130] PEG parser interpreter, Packrat Python mixed all GNU GPL
Rats! [131] Packrat Java mixed Java Virtual Machine GNU LGPL
Spirit2 [132] Recursive descent C++ mixed all Boost
Treetop [133] Recursive descent Ruby mixed all MIT
Yard [134] Recursive descent C++ mixed all MIT or Public domain
Waxeye [135] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT
PHP PEG [136]  ? (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 [137] Earley  ? C mixed external all No GNU GPL
APaGeD [138] GLR, LALR(1), LL(k)  ? D mixed generated all No Artistic
Bison [139] LALR(1), LR(1), IELR(1), GLR YACC C, C++, Java mixed external all No GNU GPL
DMS Software Reengineering Toolkit [140] GLR  ? Parlanse mixed generated Microsoft Windows No Proprietary
DParser [141] Scannerless GLR  ? C mixed scannerless POSIX No BSD
Dypgen [142] runtime-extensible GLR  ? Objective Caml mixed generated all No CeCILL-B
Elkhound [143] GLR  ? C++, Objective Caml mixed external all No BSD
eu.h8me.Parsing [144] GLR  ? N/A (state machine is runtime generated) separate external .NET Framework No BSD
GDK [145] LALR(1), GLR  ? C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT
Happy [146] LALR, GLR  ? Haskell mixed external all No BSD
Hime Parser Generator [147] GLR  ? C# separate generated .NET Framework No GNU LGPL
Jison [148] LALR(1), LR(0), SLR(1) YACC JavaScript mixed generated all No MIT
Laja [149] Scannerless, two phase Laja Java separate scannerless all No GNU GPL
Scannerless Boolean Parser [150] Scannerless GLR (Boolean grammars)  ? Haskell, Java separate scannerless Java Virtual Machine No BSD
SDF/SGLR [151] Scannerless GLR SDF C, Java separate scannerless all Yes BSD
SmaCC [152] GLR(1), LALR(1), LR(1)  ? Smalltalk mixed internal all Yes MIT
SPARK [153] Earley  ? Python mixed external all No MIT
Tom [154] GLR  ? C generated none all No Proprietary
UltraGram [155] LALR, LR, GLR  ? C++, C#, Java, Visual Basic .NET separate generated Microsoft Windows Yes Proprietary
Wormhole [156] Pruning, LR, GLR, Scannerless GLR  ? C, Python mixed scannerless Microsoft Windows No MIT
Whale Calf [157] 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