Comparison of parser generators

From Infogalactic: the planetary knowledge core
(Redirected from List of parser generators)
Jump to: navigation, search

Lua error in package.lua at line 80: module 'strict' not found.

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

Regular languages

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Name Website Lexer algorithm Output languages Grammar, code Development platform License
Alex [1] DFA Haskell mixed all BSD
AustenX [2] DFA Java separate all BSD
C# Flex [3] DFA C# mixed .NET CLR GNU GPL
C# Lex [4] DFA C# mixed .NET CLR  ?
CookCC [5] DFA Java mixed Java Virtual Machine BSD
DFAlex [6] DFA no code generation required Java Java Apache License 2.0
Dolphin [7] DFA C++ separate all Proprietary
flex [8] DFA table driven C, C++ mixed all BSD
gelex [9] DFA Eiffel mixed Eiffel MIT
golex [10] DFA Go mixed Go BSD-style
gplex [11] DFA C# mixed .NET CLR BSD-like
JFlex [12] DFA Java mixed Java Virtual Machine GNU GPL
JLex [13] DFA Java mixed Java Virtual Machine BSD-like [14]
lex [15] DFA C mixed POSIX Proprietary, CDDL
lexertl [16] DFA C++ all GNU LGPL
Quex [17] DFA direct code C, C++ mixed all GNU LGPL
Ragel [18] DFA C, C++, D, Go, Java, Objective-C, Ruby mixed all GNU GPL
re2c [19] DFA direct code C mixed all Public domain

Deterministic context-free languages

Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License
ANTLR4 [20] LL(*) EBNF C#, Java, Python, JavaScript mixed generated Java Virtual Machine Yes BSD
ANTLR3 [21] LL(*) EBNF ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby mixed generated Java Virtual Machine Yes BSD
APG [22] Recursive descent, Backtracking ABNF C, C++, JavaScript, Java separate none all No GNU GPL
AXE [23] Recursive descent AXE/C++ C++11 mixed none any platform with standard C++11 compiler No Boost
Beaver [24] LALR(1) EBNF Java mixed external Java Virtual Machine No BSD
Bison [25] LALR(1), LR(1), IELR(1), GLR  ? C, C++ mixed external all No GNU GPL
Bison++ [26] LALR(1)  ? C++ mixed external POSIX No GNU GPL
Bisonc++ [27] LALR(1)  ? C++ mixed external POSIX No GNU GPL
BtYacc [28] Backtracking Bottom-up  ? C++ mixed external all No Public domain
byacc [29] LALR(1) YACC C mixed external all No Public domain
BYACC/J [30] LALR(1)  ? C, Java mixed external all No Public domain
CL-Yacc [31] LALR(1) Lisp Common Lisp mixed external all No MIT
Coco/R [32] LL(1) EBNF 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 [33] LALR(1) Java annotations Java mixed generated Java Virtual Machine No BSD
CppCC [34] LL(k)  ? C++ mixed generated POSIX No GNU GPL
CSP [35] LR(1)  ? C++ separate generated POSIX No Apache License 2.0
CUP [36] LALR(1)  ? Java mixed external Java Virtual Machine No GNU GPL
Dragon [37] LR(1), LALR(1)  ? C++, Java separate generated all No GNU GPL
eli [38] LALR(1)  ? C mixed generated POSIX No GNU GPL, GNU LGPL
Essence [39] LR(???)  ? Scheme 48 mixed external all No BSD
Eto.Parse [40] LL(k) BNF, EBNF or C# N/A (state machine is runtime generated) separate internal .NET Framework No MIT
eyapp [41] LALR(1)  ? Perl mixed external or generated all No Perl
Frown [42] LALR(k)  ? Haskell 98 mixed external all No GNU GPL
geyacc [43] LALR(1)  ? Eiffel mixed external all No MIT
GOLD [44] 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 [45] LALR(1) YACC C# separate external Microsoft Windows Yes BSD
Grammatica [46] LL(k) BNF dialect C#, Java separate generated Java Virtual Machine No GNU LGPL
HiLexed [47] LL(*) EBNF or Java Java separate internal Java Virtual Machine No GNU LGPL
Hime Parser Generator [48] LR(1), LALR(1), LR(0) BNF dialect C#, Java separate generated .NET Framework, Java Virtual Machine No GNU LGPL
Hyacc [49] LR(1), LALR(1), LR(0) YACC C mixed external all No GNU GPL
Irony [50] LALR(1) C# N/A (state machine is runtime generated) separate internal .NET Framework Yes MIT
iyacc [51] LALR(1) YACC Icon mixed external all No GNU GPL
jacc [52] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
JavaCC [53] LL(k) EBNF Java, C++, JavaScript (via GWT compiler)[1] mixed generated Java Virtual Machine Yes BSD
jay [54] LALR(1) YACC C#, Java mixed none Java Virtual Machine No BSD
JFLAP [55] LL(1), LALR(1)  ? Java  ?  ? Java Virtual Machine Yes  ?
JetPAG [56] LL(k)  ? C++ mixed generated all No GNU GPL
JS/CC [57] LALR(1) EBNF JavaScript, JScript, ECMAScript mixed internal all Yes Artistic
KDevelop-PG-Qt [58] LL(1), Backtracking, Shunting yard  ? C++ mixed generated or external all, KDE No GNU LGPL
Kelbt [59] Backtracking LALR(1)  ? C++ mixed generated POSIX No GNU GPL
kmyacc [60] LALR(1)  ? C, Java, Perl, JavaScript mixed external all No GNU GPL
Lapg [61] LALR(1)  ? C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine No GNU GPL
Lemon [62] LALR(1)  ? C mixed external all No Public domain
LEPL [63] Recursive descent Python Python (no generation, library) separate none all No MPL/GNU LGPL
Lime [64] LALR(1)  ? PHP mixed external all No GNU GPL
LISA [65] LR(?), LL(?), LALR(?), SLR(?)  ? Java mixed generated Java Virtual Machine Yes Public domain
LLgen [66] LL(1)  ? C mixed external POSIX No BSD
LLnextgen [67] LL(1)  ? C mixed external all No GNU GPL
LLLPG [68] LL(k) + syntactic and semantic predicates ANTLR-like C# mixed generated (?) .NET Framework, Mono Visual Studio GNU LGPL
LPG [69] Backtracking LALR(k)  ? Java mixed generated Java Virtual Machine No EPL
Menhir [70] LR(1)  ? OCaml mixed generated all No QPL
ML-Yacc [71] LALR(1)  ? ML mixed external all No  ?
Monkey [72] LR(1)  ? Java separate generated Java Virtual Machine No GNU GPL
Msta [73] LALR(k), LR(k) YACC, EBNF C, C++ mixed external or generated POSIX, Cygwin No GNU GPL
MTP (More Than Parsing) [74] LL(1)  ? Java separate generated Java Virtual Machine No GNU GPL
MyParser [75] LL(*) Markdown C++11 separate internal any platform with standard C++11 compiler No MIT License
NLT [76] GLR C#/BNF-like C# mixed mixed .NET Framework No MIT
ocamlyacc [77] LALR(1)  ? OCaml mixed external all No QPL
olex [78] LL(1)  ? C++ mixed generated all No GNU GPL
Parsec https://wiki.haskell.org/Parsec] LL, Backtracking  ? Haskell mixed none all No BSD
Parse::Yapp [79] LALR(1)  ? Perl mixed external all No GNU GPL
Parser Objects [80] LL(k)  ? Java mixed  ? Java Virtual Machine No zlib
PCCTS [81] LL  ? C, C++  ?  ? all No  ?
PLY [82] LALR(1) BNF Python mixed generated all No MIT License
PlyPlus [83] LALR(1) EBNF Python separate generated all No MIT License
PRECC [84] LL(k)  ? C separate generated DOS, POSIX No GNU GPL
QLALR [85] LALR(1)  ? C++ mixed external all No GNU GPL
RPATK [86] Recursive descent, Backtracking BNF C (no generation, library) separate none all No GNU GPL
SableCC [87] LALR(1)  ? C, C++, C#, Java, OCaml, Python separate generated all No GNU LGPL
SLK [88] LL(k) LR(k) LALR(k) EBNF C, C++, C#, Java, JavaScript separate external all No Proprietary
SP (Simple Parser) [89] Recursive descent Python Python separate generated all No GNU LGPL
Spirit [90] Recursive descent  ? C++ mixed internal all No Boost
Sprache [91] LL, Backtracking C# interpreted mixed internal .NET Framework No MIT
Styx [92] LALR(1)  ? C, C++ separate generated all No GNU LGPL
Sweet Parser [93] LALR(1)  ? C++ separate generated Microsoft Windows No zlib
Tap [94] LL(1)  ? C++ mixed generated all No GNU GPL
TextTransformer [95] LL(k)  ? C++ mixed generated Microsoft Windows Yes Proprietary
TinyPG [96] LL(1)  ? C#, Visual Basic  ?  ? Microsoft Windows Yes CPOL 1.0
Toy Parser Generator [97] Recursive descent  ? Python mixed generated all No GNU LGPL
TP Yacc [98] LALR(1)  ? Turbo Pascal mixed external all Yes GNU GPL
UniCC [99] LALR(1) EBNF C, target-language independent mixed generated POSIX No Artistic 2.0
Whale [100] LR(?), some conjunctive stuff, see Whale Calf  ? C++ mixed external all No Proprietary
wisent [101] LALR(1)  ? C++, Java mixed external all No GNU GPL
Yacc AT&T/Sun [102]/[103] LALR(1) YACC C mixed external POSIX No CPL & CDDL
Yacc++ [104] LR(1), LALR(1) YACC C++, C# mixed generated or external all No Proprietary
Yapps [105] LL(1)  ? Python mixed generated all No MIT
yecc [106] LALR(1)  ? Erlang separate generated all No Erlang
Visual BNF [107] LR(1), LALR(1)  ? C# separate generated .NET Framework Yes Proprietary
YooParse [108] LR(1), LALR(1)  ? C++ mixed external all No MIT
Parse [109] LR(1) BNF in C++ types  ?  ? none C++11 compliant compiler 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
Arpeggio [110] PEG parser interpreter, Packrat Python (no generation, interpreted) mixed all MIT
AustenX [111] Packrat (modified) Java separate all BSD
Aurochs [112] Packrat C, OCaml, Java mixed all GNU GPL
CL-peg [113] Packrat Common Lisp mixed all MIT
Drat! [114] Packrat D mixed all GNU GPL
Frisby [115] Packrat Haskell mixed all BSD
grammar::peg [116] Packrat Tcl mixed all BSD
Grako [117] Packrat + Cut + Left Recursion Python / C++ (beta) separate all BSD
IronMeta [118] Packrat C# mixed Microsoft Windows BSD
Katahdin [119] Packrat (modified), mutating interpreter C# mixed all Public domain
Laja [120] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL
lars::parser [121] Packrat (modified to support left-recursion and resolve grammar ambiguity) C++ identical all GNU GPL, commercial license available on request
LPeg [122] Parsing Machine Lua mixed all MIT
Mouse [123] Recursive descent Java separate Java Virtual Machine Apache License 2.0
Narwhal [124] Packrat C mixed POSIX, Microsoft Windows BSD
Nemerle.Peg [125] Recursive descent + Pratt Nemerle separate all BSD
neotoma [126] Packrat Erlang separate all MIT
NPEG [127] Recursive descent C# mixed all MIT
OMeta [128] Packrat (modified, partial memoization) JavaScript, Squeak, Python mixed all MIT
PackCC [129] Packrat (modified) C mixed all MIT
Packrat [130] Packrat Scheme mixed all MIT
Pappy [131] Packrat Haskell mixed all Proprietary
parboiled [132] Recursive descent Java, Scala mixed Java Virtual Machine Apache License 2.0
Lambda PEG [133] Recursive descent Java mixed Java Virtual Machine Apache License 2.0
parsepp [134] Recursive descent C++ mixed all Public domain
Parsnip [135] Packrat C++ mixed Microsoft Windows GNU GPL
peg [136] Recursive descent C mixed all MIT
PEG.js [137] Packrat (partial memoization) JavaScript mixed all MIT
peg-parser [138] PEG parser interpreter Dylan separate all
Pegasus [139] Recursive descent / Packrat (selectively) C# mixed Microsoft Windows MIT
pegc [140] Recursive descent C mixed all Public domain
PetitParser [141] Packrat Smalltalk, Java, Dart mixed all MIT
PEGTL [142] Recursive descent C++11 mixed all MIT
PGE Parser Grammar Engine Hybrid recursive descent / operator precedence[2] Parrot bytecode mixed Parrot virtual machine Artistic 2.0
PyPy rlib [143] Packrat Python mixed all MIT
pyPEG [144] PEG parser interpreter, Packrat Python mixed all GNU GPL
Rats! [145] Packrat Java mixed Java Virtual Machine GNU LGPL
Spirit2 [146] Recursive descent C++ mixed all Boost
textX [147] PEG parser interpreter, Packrat Python (no generation, interpreted) separate all MIT
Treetop [148] Recursive descent Ruby mixed all MIT
Yard [149] Recursive descent C++ mixed all MIT or Public domain
Waxeye [150] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT
PHP PEG [151]  ? (PEG Parser?) PHP mixed all BSD

General context-free, conjunctive or boolean languages

Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License
ACCENT [152] Earley YACC variant C mixed external all No GNU GPL
APaGeD [153] GLR, LALR(1), LL(k)  ? D mixed generated all No Artistic
Bison [154] LALR(1), LR(1), IELR(1), GLR YACC C, C++, Java, XML mixed (except XML) external all No GNU GPL
DMS Software Reengineering Toolkit [155] GLR  ? Parlanse mixed generated Microsoft Windows No Proprietary
DParser [156] Scannerless GLR  ? C mixed scannerless POSIX No BSD
Dypgen [157] runtime-extensible GLR  ? OCaml mixed generated all No CeCILL-B
E3 [158] Earley  ? OCaml mixed external, or scannerless all No  ?
Elkhound [159] GLR  ? C++, OCaml mixed external all No BSD
eu.h8me.Parsing [160] GLR  ? N/A (state machine is runtime generated) separate external .NET Framework No BSD
GDK [161] LALR(1), GLR  ? C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT
Happy [162] LALR, GLR  ? Haskell mixed external all No BSD
Hime Parser Generator [163] GLR  ? C#, Java separate generated .NET Framework, Java Virtual Machine No GNU LGPL
IronText Library [164] LALR(1), GLR C# C# mixed generated or external .NET Framework No Apache License 2.0
Jison [165] LALR(1), LR(0), SLR(1) YACC JavaScript, C#, PHP mixed generated all No MIT
Laja [166] Scannerless, two phase Laja Java separate scannerless all No GNU GPL
ModelCC [167] Earley Annotated class model Java generated generated all No BSD
P1 [168] Combinators BNF-like OCaml mixed external, or scannerless all No  ?
P3 [169] Earley/combinators BNF-like OCaml mixed external, or scannerless all No  ?
P4 [170] Earley/combinators, infinitary CFGs BNF-like OCaml mixed external, or scannerless all No  ?
Scannerless Boolean Parser [171] Scannerless GLR (Boolean grammars)  ? Haskell, Java separate scannerless Java Virtual Machine No BSD
SDF/SGLR [172] Scannerless GLR SDF C, Java separate scannerless all Yes BSD
SmaCC [173] GLR(1), LALR(1), LR(1)  ? Smalltalk mixed internal all Yes MIT
SPARK [174] Earley  ? Python mixed external all No MIT
Tom [175] GLR  ? C generated none all No "No licensing or copyright restrictions"
UltraGram [176] LALR, LR, GLR  ? C++, C#, Java, Visual Basic .NET separate generated Microsoft Windows Yes Proprietary
Wormhole [177] Pruning, LR, GLR, Scannerless GLR  ? C, Python mixed scannerless Microsoft Windows No MIT
Whale Calf [178] General tabular, SLL(k), Linear normal form (Conjunctive grammars), LR, Binary normal form (Boolean grammars)  ? C++ separate external all No Proprietary

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found. "PGE rules provide the full power of recursive descent parsing and operator precedence parsing."

External links