Jump to content

Comparison of parser generators: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
VladD2 (talk | contribs)
Line 229: Line 229:
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || [[C (programming language)|C]] || mixed || [[POSIX]], [[Microsoft Windows]] || [[BSD licenses|BSD]]
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || [[C (programming language)|C]] || mixed || [[POSIX]], [[Microsoft Windows]] || [[BSD licenses|BSD]]
|-
|-
| [[Nemerle.Peg]] || [http://nemerle.googlecode.com/svn/nemerle/trunk/snippets/peg-parser] || Recursive Descent || [[Nemerle]] || separate || all || [[BSD licenses|BSD]]
| [[Nemerle.Peg]] || [http://nemerle.googlecode.com/svn/nemerle/trunk/snippets/peg-parser] || Recursive Descent + Pratt || [[Nemerle]] || separate || all || [[BSD licenses|BSD]]
|-
|-
| neotoma || [http://github.com/seancribbs/neotoma] || Packrat || [[Erlang (programming language)|Erlang]] || separate || all || [[MIT license|MIT]]
| neotoma || [http://github.com/seancribbs/neotoma] || Packrat || [[Erlang (programming language)|Erlang]] || separate || all || [[MIT license|MIT]]

Revision as of 09:33, 13 February 2011

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

Regular languages

Name Website Lexer Algorithm Output Languages Grammar / Code Development Platform License
DFASTAR [1] DFA matrix tables C/C++ separate Windows 32-bit BSD
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
Quex [13] DFA direct code C, C++ mixed all modified GNU LGPL (semi-free)
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

Deterministic Context-free Languages

Name Website Parsing Algorithm [Input Grammar Notation] Output Languages Grammar / Code Lexer Development Platform IDE License
ANTLR [17] LL(*) ? C, C++, C#, Java, Python, Ruby mixed generated Java Virtual Machine Yes BSD
APG [18] Recursive descent , Backtracking ? C, C++, JavaScript separate none all No GNU GPL
Beaver [19] LALR(1) ? Java mixed external Java Virtual Machine No BSD
Bison++ [20] LALR(1) ? C++ mixed external POSIX No GNU GPL
Bisonc++ [21] LALR(1) ? C++ mixed external POSIX No GNU GPL
BtYacc [22] Backtracking Bottom-up ? C++ mixed external all No public domain
byacc [23] LALR(1) YACC C mixed external all No public domain
BYACC/J [24] LALR(1) ? C, Java mixed external all No public domain
CL-Yacc [25] LALR(1) ? Common Lisp mixed external all No MIT
Coco/R [26] 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 [27] LALR(1) ? Java mixed generated Java Virtual Machine No BSD
CppCC [28] LL(k) ? C++ mixed generated POSIX No GNU GPL
CSP [29] LR(1) ? C++ separate generated POSIX No Apache License 2.0
CSTools [30] LALR(1) ? C# mixed generated .NET Framework No proprietary
CUP [31] LALR(1) ? Java mixed external Java Virtual Machine No GNU GPL
Dragon [32] LR(1), LALR(1) ? C++, Java separate generated all No GNU GPL
eli [33] LALR(1) ? C mixed generated POSIX No GNU GPL, GNU LGPL
Essence [34] LR(???) ? Scheme 48 mixed external all No BSD
eyapp [35] LALR(1) ? Perl mixed external or generated all no Perl
Frown [36] LALR(k) ? Haskell 98 mixed external all No GNU GPL
geyacc [37] LALR(1) ? Eiffel mixed external all No MIT
GOLD [38] 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 freeware
GPPG [39] LALR(1) YACC C# separate external Microsoft Windows Yes BSD
Grammatica [40] LL(k) ? C#, Java separate generated Java Virtual Machine No GNU LGPL
HiLexed [41] LL(*) EBNF or Java Java separate internal Java Virtual Machine No GNU LGPL
Hyacc [42] LR(1), LALR(1), LR(0) YACC C mixed external all No GNU GPL
jacc [43] LALR(1) ? Java mixed external Java Virtual Machine No BSD
JavaCC [44] LL(k) ? Java mixed generated Java Virtual Machine Yes BSD
jay [45] LALR(1) ? C#, Java mixed none Java Virtual Machine No BSD
JFLAP [46] LL(1) ? Java ? ? Java Virtual Machine Yes ?
JetPAG [47] LL(k) ? C++ mixed generated all No GNU GPL
JS/CC [48] LALR(1) ? JavaScript, JScript, ECMAScript mixed internal all Yes Artistic
KDevelop-PG-Qt [49] LL(1), Backtracking, Shunting yard ? C++ mixed generated or external all, KDE No GNU LGPL
Kelbt [50] Backtracking LALR(1) ? C++ mixed generated POSIX No GNU GPL
kmyacc [51] LALR(1) ? C, Java, Perl, JavaScript mixed external all No GNU GPL
Lapg [52] LALR(1) ? C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine No GNU GPL
Lemon [53] LALR(1) ? C mixed external all No public domain
Lime [54] LALR(1) ? PHP mixed external all No GNU GPL
LISA [55] LR(???), LL(???), LALR(???), SLR(???) ? Java mixed generated Java Virtual Machine Yes public domain
LPG [56] Backtracking LALR(k) ? Java mixed generated Java Virtual Machine No EPL
LLgen [57] LL(1) ? C mixed external POSIX No BSD
LLnextgen [58] LL(1) ? C mixed external POSIX No GNU GPL
LRSTAR [59] LALR(1) matrix tables TBNF C, C++ separate lexer generator
included
Windows 32-bit No BSD
Menhir [60] LR(1) ? OCaml mixed generated all No QPL
Mini Parser Generator [61] ? ? Python mixed generated all No GNU LGPL
ML-Yacc [62] LALR(1) ? ML mixed external all No ?
Monkey [63] LR(1) ? Java separate generated Java Virtual Machine No GNU GPL
More Than Parsing [64] LL(1) ? Java separate generated Java Virtual Machine No GNU GPL
Msta [65] LALR(k), LR(k) YACC, EBNF C, C++ mixed external or generated POSIX, Cygwin No GNU GPL
ocamlyacc [66] LALR(1) ? OCaml mixed external all No QPL
olex [67] LL(1) ? C++ mixed generated all No GNU GPL
Parsec [68] LL, Backtracking ? Haskell mixed none all No BSD
Parse::Yapp [69] LALR(1) ? Perl mixed external all No GNU GPL
Parser Objects ? LL(k) ? Java mixed ? Java Virtual Machine No zlib
PCCTS [70] LL ? C, C++ ? ? all No ?
PLY [71] LALR(1) ? Python mixed generated all No MIT License
PRECC [72] LL(k) ? C separate generated MS-DOS, POSIX No GNU GPL
QLALR [73] LALR(1) ? C++ mixed external all No GNU GPL
SableCC [74] LALR(1) ? C, C++, C#, Java, OCaml, Python separate generated all No GNU LGPL
SLK [75] LL(k) ? C, C++, C#, Java separate external all No proprietary
Spirit [76] Recursive Descent ? C++ mixed internal all No Boost
Styx [77] LALR(1) ? C, C++ separate generated all No GNU LGPL
Sweet Parser [78] LALR(1) ? C++ separate generated Microsoft Windows No zlib
Tap [79] LL(1) ? C++ mixed generated all No GNU GPL
TextTransformer [80] LL(k) ? C++ mixed generated Microsoft Windows Yes proprietary
TinyPG [81] LL(1) ? C#, Visual Basic ? ? Microsoft Windows Yes CPOL 1.0
Toy Parser Generator [82] Recursive Descent ? Python mixed generated all No GNU LGPL
TP Yacc [83] LALR(1) ? Turbo Pascal mixed external all Yes GNU GPL
Whale [84] LR(?), some conjunctive stuff, see Whale Calf ? C++ mixed external all No proprietary
Wisent [85] LALR(1) ? C++, Java mixed external Java Virtual Machine No GNU GPL
Yacc (AT&T) [86] LALR(1) YACC C mixed external POSIX No CPL
Yacc++ [87] LR(1), LALR(1) YACC C++, C# mixed generated or external all No proprietary
Yapps [88] LL(1) ? Python mixed generated all No MIT
yecc [89] LALR(1) ? Erlang separate generated all No Erlang
Visual BNF [90] LR(1), LALR(1) ? C# separate generated .NET Framework Yes proprietary
Visual Parse++ [91] LALR(???) ? C, C++, C#, Java separate generated Microsoft Windows Yes proprietary
YooParse [92] 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 [93] Packrat C, OCaml, Java mixed all GNU GPL
CL-peg [94] Packrat Common Lisp mixed all MIT
Drat! [95] Packrat D mixed all GNU GPL
Frisby [96] Packrat Haskell mixed all BSD
grammar::peg [97] Packrat Tcl mixed all BSD
IronMeta [98] Packrat C# mixed Microsoft Windows BSD
Katahdin [99] Packrat (modified), mutating interpreter C# mixed all Public Domain
Laja [100] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL
LPeg [101] Parsing Machine Lua mixed all MIT
Mouse [102] Recursive Descent Java separate Java Virtual Machine Apache License 2.0
Narwhal [103] Packrat C mixed POSIX, Microsoft Windows BSD
Nemerle.Peg [104] Recursive Descent + Pratt Nemerle separate all BSD
neotoma [105] Packrat Erlang separate all MIT
NPEG [106] Recursive Descent C# mixed all MIT
OMeta [107] Packrat (modified) JavaScript, Squeak mixed all MIT
Packrat [108] Packrat Scheme mixed all MIT
Pappy [109] Packrat Haskell mixed all Proprietary
parboiled [110] Recursive Descent Java, Scala mixed Java Virtual Machine Apache License 2.0
parsepp [111] ? C++ mixed all Public Domain
Parsnip [112] Packrat C++ mixed Microsoft Windows GNU GPL
peg [113] Recursive Descent C mixed all MIT
PEG.js [114] Packrat JavaScript mixed all MIT
peg-parser [115] PEG parser interpreter Dylan separate all
pegc [116] ? C mixed all Public Domain
PetitParser [117] Packrat Smalltalk, Javascript mixed all MIT
PEGTL [118] Recursive Descent C++0x mixed POSIX MIT
PGE Parser Grammar Engine Recursive Descent Parrot bytecode mixed Parrot virtual machine Artistic 2.0
PyPy rlib [119] Packrat Python mixed all MIT
pyPEG [120] PEG parser interpreter, Packrat Python mixed all GNU GPL
Rats! [121] Packrat Java mixed Java Virtual Machine GNU LGPL
Spirit2 [122] Recursive Descent C++ mixed all Boost
Treetop [123] Recursive Descent Ruby mixed all
Yard [124] Recursive Descent C++ mixed all MIT or Public Domain
Waxeye [125] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT

General Context-free, Conjuctive or Boolean Languages

Name Website Parsing Algorithm [Input Grammar Notation] Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [126] Earley ? C mixed external all No GNU GPL
APaGeD [127] GLR, LALR(1), LL(k) ? D mixed generated all No Artistic
Bison [128] LALR, GLR YACC C, C++, Java mixed external all No GNU GPL
DMS Software Reengineering Toolkit [129] GLR ? Parlanse mixed generated Microsoft Windows No proprietary
DParser [130] Scannerless GLR ? C mixed No POSIX No BSD
Dypgen [131] runtime-extensible GLR ? OCaml mixed generated all No CeCILL-B
Elkhound [132] GLR ? C++, OCaml mixed external all No BSD
eu.h8me.Parsing [133] GLR ? N/A (state machine is runtime generated) separate external .NET Framework No BSD
GDK [134] LALR(1), GLR ? C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT
Happy [135] LALR, GLR ? Haskell mixed external all No BSD
Jison [136] LALR(1), LR(0), SLR(1) YACC Javascript mixed generated all No MIT
Laja [137] Scannerless, two phase Laja Java separate No all No GNU GPL
Scannerless Boolean Parser [138] ? Scannerless GLR (Boolean grammars) Haskell, Java separate No Java Virtual Machine No BSD
SmaCC [139] GLR(1), LALR(1), LR(1) ? Smalltalk mixed internal all Yes MIT
SPARK [140] Earley ? Python mixed external all No MIT
Tom [141] GLR ? C generated none all No proprietary
UltraGram [142] LALR, LR, GLR ? C++, C#, Java, Visual Basic .NET separate generated Microsoft Windows Yes proprietary
Wormhole [143] Pruning, LR, GLR, Scannerless GLR ? C, Python mixed No Microsoft Windows No MIT
Whale Calf [144] General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) ? C++ separate external all No proprietary

See also