Comparison of parser generators

From Wikipedia, the free encyclopedia
  (Redirected from List of parser generators)
Jump to: navigation, search

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

Regular languages[edit]

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
Dolphin [6] DFA C++ separate all Proprietary
flex [7] DFA table driven C, C++ mixed all BSD
gelex [8] DFA Eiffel mixed Eiffel MIT
golex [9] DFA Go mixed Go BSD-style
gplex [10] DFA C# mixed .NET CLR BSD-like
JFlex [11] DFA Java mixed Java Virtual Machine GNU GPL
JLex [12] DFA Java mixed Java Virtual Machine BSD-like [13]
lex [14] DFA C mixed POSIX Proprietary, CDDL
lexertl [15] DFA C++ all GNU LGPL
Quex [16] DFA direct code C, C++ mixed all GNU LGPL
Ragel [17] DFA C, C++, D, Go, Java, Objective-C, Ruby mixed all GNU GPL
re2c [18] DFA direct code C mixed all Public domain
Russ Cox's regular expression implementations [19] DFA, NFA Bytecode, x86 assembly language, interpreted separate all MIT

Deterministic context-free languages[edit]

Name Website Parsing algorithm Input grammar notation Output languages Grammar, code Lexer Development platform IDE License
ANTLR4 [20] LL(*) EBNF C#, Java, Python 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)  ? C++ mixed external POSIX No GNU GPL
Bisonc++ [26] LALR(1)  ? C++ mixed external POSIX No GNU GPL
BtYacc [27] Backtracking Bottom-up  ? C++ mixed external all No Public domain
byacc [28] LALR(1) YACC C mixed external all No Public domain
BYACC/J [29] LALR(1)  ? C, Java mixed external all No Public domain
CL-Yacc [30] LALR(1) Lisp Common Lisp mixed external all No MIT
Coco/R [31] LL(1)  ? 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 [32] LALR(1) Java annotations Java mixed generated Java Virtual Machine No BSD
CppCC [33] LL(k)  ? C++ mixed generated POSIX No GNU GPL
CSP [34] LR(1)  ? C++ separate generated POSIX No Apache License 2.0
CUP [35] LALR(1)  ? Java mixed external Java Virtual Machine No GNU GPL
Dragon [36] LR(1), LALR(1)  ? C++, Java separate generated all No GNU GPL
eli [37] LALR(1)  ? C mixed generated POSIX No GNU GPL, GNU LGPL
Essence [38] LR(???)  ? Scheme 48 mixed external all No BSD
eyapp [39] LALR(1)  ? Perl mixed external or generated all No Perl
Frown [40] LALR(k)  ? Haskell 98 mixed external all No GNU GPL
geyacc [41] LALR(1)  ? Eiffel mixed external all No MIT
GOLD [42] 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 [43] LALR(1) YACC C# separate external Microsoft Windows Yes BSD
Grammatica [44] LL(k) BNF dialect C#, Java separate generated Java Virtual Machine No GNU LGPL
HiLexed [45] LL(*) EBNF or Java Java separate internal Java Virtual Machine No GNU LGPL
Hime Parser Generator [46] LR(1), LALR(1), LR(0) BNF dialect C# separate generated .NET Framework No GNU LGPL
Hyacc [47] LR(1), LALR(1), LR(0) YACC C mixed external all No GNU GPL
Irony [48] LALR(1) C# N/A (state machine is runtime generated) separate internal .NET Framework Yes MIT
iyacc [49] LALR(1) YACC Icon mixed external all No GNU GPL
jacc [50] LALR(1)  ? Java mixed external Java Virtual Machine No BSD
JavaCC [51] LL(k) EBNF Java, C++, JavaScript (via GWT compiler)[1] mixed generated Java Virtual Machine Yes BSD
jay [52] LALR(1) YACC C#, Java mixed none Java Virtual Machine No BSD
JFLAP [53] LL(1), LALR(1)  ? Java  ?  ? Java Virtual Machine Yes  ?
JetPAG [54] LL(k)  ? C++ mixed generated all No GNU GPL
JS/CC [55] LALR(1) EBNF JavaScript, JScript, ECMAScript mixed internal all Yes Artistic
KDevelop-PG-Qt [56] LL(1), Backtracking, Shunting yard  ? C++ mixed generated or external all, KDE No GNU LGPL
Kelbt [57] Backtracking LALR(1)  ? C++ mixed generated POSIX No GNU GPL
kmyacc [58] LALR(1)  ? C, Java, Perl, JavaScript mixed external all No GNU GPL
Lapg [59] LALR(1)  ? C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine No GNU GPL
Lemon [60] LALR(1)  ? C mixed external all No Public domain
LEPL [61] Recursive descent Python Python (no generation, library) separate none all No MPL/GNU LGPL
Lime [62] LALR(1)  ? PHP mixed external all No GNU GPL
LISA [63] LR(?), LL(?), LALR(?), SLR(?)  ? Java mixed generated Java Virtual Machine Yes Public domain
LLgen [64] LL(1)  ? C mixed external POSIX No BSD
LLnextgen [65] LL(1)  ? C mixed external all No GNU GPL
LLLPG [66] LL(k) + syntactic and semantic predicates ANTLR-like C# mixed generated (?) .NET Framework, Mono Visual Studio GNU LGPL
LPG [67] Backtracking LALR(k)  ? Java mixed generated Java Virtual Machine No EPL
Menhir [68] LR(1)  ? OCaml mixed generated all No QPL
ML-Yacc [69] LALR(1)  ? ML mixed external all No  ?
Monkey [70] LR(1)  ? Java separate generated Java Virtual Machine No GNU GPL
More Than Parsing [71] LL(1)  ? Java separate generated Java Virtual Machine No GNU GPL
Msta [72] LALR(k), LR(k) YACC, EBNF C, C++ mixed external or generated POSIX, Cygwin No GNU GPL
NLT [73] GLR C#/BNF-like C# mixed mixed .NET Framework No MIT
ocamlyacc [74] LALR(1)  ? OCaml mixed external all No QPL
olex [75] LL(1)  ? C++ mixed generated all No GNU GPL
Parsec [76] LL, Backtracking  ? Haskell mixed none all No BSD
Parse::Yapp [77] LALR(1)  ? Perl mixed external all No GNU GPL
Parser Objects  ? LL(k)  ? Java mixed  ? Java Virtual Machine No zlib
PCCTS [78] LL  ? C, C++  ?  ? all No  ?
PLY [79] LALR(1) BNF Python mixed generated all No MIT License
PlyPlus [80] LALR(1) EBNF Python separate generated all No MIT License
PRECC [81] LL(k)  ? C separate generated DOS, POSIX No GNU GPL
QLALR [82] LALR(1)  ? C++ mixed external all No GNU GPL
RPATK [83] Recursive descent, Backtracking BNF C (no generation, library) separate none all No GNU GPL
SableCC [84] LALR(1)  ? C, C++, C#, Java, OCaml, Python separate generated all No GNU LGPL
Simple Parser [85] Recursive descent Python Python separate generated all No GNU LGPL
SLK [86] LL(k) LR(k) EBNF C, C++, C#, Java separate external all No Proprietary
Spirit [87] Recursive descent  ? C++ mixed internal all No Boost
Sprache [88] LL, Backtracking C# interpreted mixed internal .NET Framework No MIT
Styx [89] LALR(1)  ? C, C++ separate generated all No GNU LGPL
Sweet Parser [90] LALR(1)  ? C++ separate generated Microsoft Windows No zlib
Tap [91] LL(1)  ? C++ mixed generated all No GNU GPL
TextTransformer [92] LL(k)  ? C++ mixed generated Microsoft Windows Yes Proprietary
TinyPG [93] LL(1)  ? C#, Visual Basic  ?  ? Microsoft Windows Yes CPOL 1.0
Toy Parser Generator [94] Recursive descent  ? Python mixed generated all No GNU LGPL
TP Yacc [95] LALR(1)  ? Turbo Pascal mixed external all Yes GNU GPL
UniCC [96] LALR(1) EBNF C, target-language independent mixed generated POSIX No Artistic 2.0
Whale [97] LR(?), some conjunctive stuff, see Whale Calf  ? C++ mixed external all No Proprietary
Wisent [98] LALR(1)  ? C++, Java mixed external Java Virtual Machine No GNU GPL
Yacc (AT&T)/Sun [99]/[100] LALR(1) YACC C mixed external POSIX No CPL & CDDL
Yacc++ [101] LR(1), LALR(1) YACC C++, C# mixed generated or external all No Proprietary
Yapps [102] LL(1)  ? Python mixed generated all No MIT
yecc [103] LALR(1)  ? Erlang separate generated all No Erlang
Visual BNF [104] LR(1), LALR(1)  ? C# separate generated .NET Framework Yes Proprietary
YooParse [105] LR(1), LALR(1)  ? C++ mixed external all No MIT
Parse [106] 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[edit]

Name Website Parsing algorithm Output languages Grammar, code Development platform License
Arpeggio [107] PEG parser interpreter, Packrat Python mixed all MIT
AustenX [108] Packrat (modified) Java separate all BSD
Aurochs [109] Packrat C, OCaml, Java mixed all GNU GPL
CL-peg [110] Packrat Common Lisp mixed all MIT
Drat! [111] Packrat D mixed all GNU GPL
Frisby [112] Packrat Haskell mixed all BSD
grammar::peg [113] Packrat Tcl mixed all BSD
Grako [114] Packrat + Cut + Left Recursion Python / C++ (beta) separate all BSD
IronMeta [115] Packrat C# mixed Microsoft Windows BSD
Katahdin [116] Packrat (modified), mutating interpreter C# mixed all Public domain
Laja [117] 2-phase scannerless top-down backtracking + runtime support Java separate all GNU GPL
lars::parser [118] Packrat (modified to support left-recursion and resolve grammar ambiguity) C++ identical all GNU GPL, commercial license available on request
LPeg [119] Parsing Machine Lua mixed all MIT
Mouse [120] Recursive descent Java separate Java Virtual Machine Apache License 2.0
Narwhal [121] Packrat C mixed POSIX, Microsoft Windows BSD
Nemerle.Peg [122] Recursive descent + Pratt Nemerle separate all BSD
neotoma [123] Packrat Erlang separate all MIT
NPEG [124] Recursive descent C# mixed all MIT
OMeta [125] Packrat (modified) JavaScript, Squeak, Python mixed all MIT
PackCC [126] Packrat (modified) C mixed all MIT
Packrat [127] Packrat Scheme mixed all MIT
Pappy [128] Packrat Haskell mixed all Proprietary
parboiled [129] Recursive descent Java, Scala mixed Java Virtual Machine Apache License 2.0
parsepp [130]  ? C++ mixed all Public domain
Parsnip [131] Packrat C++ mixed Microsoft Windows GNU GPL
peg [132] Recursive descent C mixed all MIT
PEG.js [133] Packrat JavaScript mixed all MIT
peg-parser [134] PEG parser interpreter Dylan separate all
Pegasus [135] Recursive descent / Packrat (selectively) C# mixed Microsoft Windows MIT
pegc [136]  ? C mixed all Public domain
PetitParser [137] Packrat Smalltalk, Java, Dart mixed all MIT
PEGTL [138] Recursive descent C++11 mixed POSIX MIT
PGE Parser Grammar Engine Hybrid recursive descent / operator precedence[2] Parrot bytecode mixed Parrot virtual machine Artistic 2.0
PyPy rlib [139] Packrat Python mixed all MIT
pyPEG [140] PEG parser interpreter, Packrat Python mixed all GNU GPL
Rats! [141] Packrat Java mixed Java Virtual Machine GNU LGPL
Spirit2 [142] Recursive descent C++ mixed all Boost
Treetop [143] Recursive descent Ruby mixed all MIT
Yard [144] Recursive descent C++ mixed all MIT or Public domain
Waxeye [145] Packrat C, Java, JavaScript, Python, Ruby, Scheme separate all MIT
PHP PEG [146]  ? (PEG Parser?) PHP mixed all BSD

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

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

See also[edit]

References[edit]

  1. ^ "Building parsers for the web with JavaCC & GWT (Part one)". Chris Ainsley. Retrieved 2014-05-04. 
  2. ^ "Parrot: Grammar Engine". The Parrot Foundation. 2011.  "PGE rules provide the full power of recursive descent parsing and operator precedence parsing."

External links[edit]