Jump to content

Comparison of parser generators: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Hyperyl (talk | contribs)
Regular languages: remove superflous column
Hyperyl (talk | contribs)
Line 5: Line 5:
! Name !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! Development Platform !! [[Software license|License]]
! Name !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! Development Platform !! [[Software license|License]]
|-
|-
| [[Dolphin (parser generator)|Dolphin]] || [http://users.utu.fi/aleokh/dolphin/] || [[Deterministic finite state machine]] || [[C++]] || Separated || All|| [[GNU General Public License|GNU GPL]]
| [[Dolphin (parser generator)|Dolphin]] || [http://users.utu.fi/aleokh/dolphin/] || [[Deterministic finite state machine|DFA]] || [[C++]] || Separated || All|| [[Proprietary software|Proprietary
|-
|-
| [[Ragel]] || [http://www.complang.org/ragel/] || [[Deterministic finite state machine]] || [[C (programming language)|C]], [[C++]], [[D (programming language)|D]], [[Java (programming language)|Java]], [[Objective-C]], [[Ruby (programming language)|Ruby]] || Mixed || All || [[GNU General Public License|GNU GPL]]
| Russ Cox's [[regular expression]] implementations || [http://swtch.com/~rsc/regexp/] || [[Deterministic finite state machine|DFA]], [[Nondeterministic finite state machine|NFA]] || [[Bytecode]], [[x86 assembly language]], interpreted || Separated || All|| [[MIT License|MIT]]
|-
| [[Ragel]] || [http://www.complang.org/ragel/] || [[Deterministic finite state machine|DFA]] || [[C (programming language)|C]], [[C++]], [[D (programming language)|D]], [[Java (programming language)|Java]], [[Objective-C]], [[Ruby (programming language)|Ruby]] || Mixed || All || [[GNU General Public License|GNU GPL]]
|}
|}



Revision as of 16:15, 24 December 2008

This is a list of notable parser generators.

Regular languages

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Dolphin [1] DFA C++ Separated All [[Proprietary software|Proprietary
Russ Cox's regular expression implementations [2] DFA, NFA Bytecode, x86 assembly language, interpreted Separated All MIT
Ragel [3] DFA C, C++, D, Java, Objective-C, Ruby Mixed All GNU GPL

Context-free languages

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [4] Earley C Mixed External All no GNU GPL
ANTLR [5] LL(*) C#, Java, Python Mixed Generated Java Virtual Machine yes BSD
AnaGram [6] LALR(1) C, C++ Mixed Generated Microsoft Windows ? Proprietary
APaGeD [7] GLR, LALR(1), LL(k) D Mixed Generated All no Artistic
APG [8] Recursive Descent C, C++ Separate None All no GNU GPL
Beaver [9] LALR Java Mixed External Java Virtual Machine no BSD
Bison [10] LALR, GLR C (programming language), C++ Mixed External All no GNU GPL
Bison++ [11] LALR(1) C++ Mixed External POSIX no GNU GPL
Bisonc++ [12] LALR(1) C++ Mixed External POSIX no GNU GPL
BtYacc [13] LALR C++ Mixed External All no Public domain
BYACC [14] LALR C Mixed External All no Public domain
BYACC/J [15] LALR C, Java Mixed External All no Public domain
CL-Yacc [16] LALR(1) Common Lisp Mixed External All no MIT
Coco/R [17] 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
CppCC [18] LL(k) C++ Mixed Generated POSIX no GNU GPL
CSP [19] LR(1) C++ Separate Generated POSIX no Apache License 2.0
CSTools [20] LALR C# Mixed Generated .NET Framework no Proprietary
CUP [21] LALR Java Mixed External Java Virtual Machine no GNU GPL
DMS Software Reengineering Toolkit [22] GLR Parlanse Mixed Generated Microsoft Windows no Proprietary
DParser [23] Scannerless GLR C Mixed Generated POSIX no BSD
Dragon [24] LR(1), LALR C++, Java Separate Generated All no GNU GPL
Elkhound [25] GLR C++, OCaml Mixed External All no BSD
eli [26] LALR C Mixed Generated POSIX no GNU GPL, GNU LGPL
Essence [27] LR Scheme 48 Mixed External All no BSD
eyapp [28] LALR(1) Perl Mixed External All no Perl
Frown [29] LALR(k) Haskell 98 Mixed External All no GNU GPL
GDK [30] LALR(1), GLR C, Lex, Haskell, HTML, Java, Object Pascal, Yacc Mixed Generated POSIX No MIT
GOLD [31] LALR 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 [32] LALR C# Separate External Microsoft Windows yes Freeware
Grammatica [33] LL(k) C#, Java Separate Generated Java Virtual Machine no GNU LGPL
Happy [34] LALR, GLR Haskell Mixed External All no BSD
HiLexed [35] LL(k) Java Separate Internal Java Virtual Machine no GNU LGPL
Hyacc [36] LR(1) C Mixed External All no GNU GPL
jacc [37] LALR Java Mixed External Java Virtual Machine no BSD
JavaCC [38] LL(k) Java Mixed Generated Java Virtual Machine yes BSD
jay [39] LALR C#, Java Mixed None Java Virtual Machine no BSD
JetPAG [40] LL(k) C++ Mixed Generated All no GNU GPL
JS/CC [41] LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic
Kelbt [42] Backtracking LALR(1) C++ Mixed Generated POSIX no GNU GPL
kmyacc [43] LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL
Lapg [44] LALR C, C++, C#, Java, JavaScript Mixed Generated Java Virtual Machine no GNU GPL
LEMON [45] LALR C Mixed External All no Public domain
Lime [46] LALR(1) PHP Mixed External All no GNU GPL
LISA [47] LR, LL, LALR, SLR Java Mixed Generated Java Virtual Machine yes Public Domain
LPG [48] Backtracking LALR(k) Java Mixed Generated Java Virtual Machine no EPL
LLgen [49] LL(1) C Mixed External POSIX no BSD
LLnextgen [50] LL(1) C Mixed External POSIX no GNU GPL
LRGen [51] LR(1) C++ Separate Generated Microsoft Windows no Proprietary
Menhir [52] LR(1) OCaml Mixed Generated All no QPL
Mini Parser Generator [53] ? Python Mixed Generated All no GNU LGPL
ML-Yacc [54] LALR(1) ML Mixed External All no ?
Monkey [55] LR(1) Java Separate Generated Java Virtual Machine no GNU GPL
More Than Parsing [56] LL(1) Java Separate Generated Java Virtual Machine no GNU GPL
MyL Programming Language [57] ? C#, Java, JScript, Object Pascal,SQL Mixed Generated Microsoft Windows no Public domain
ocamlyacc [58] LALR(1) OCaml Mixed External All no QPL
olex [59] LL(1) C++ Mixed Generated All no GNU GPL
Parsec (parser) [60] GLR Haskell Mixed None All no BSD
Parse::Yapp [61] LALR(1) Perl Mixed External All no GNU GPL
Parser Objects ? LL(k) Java Mixed ? Java Virtual Machine no zlib
PLY [62] LALR(1) Python Mixed Generated All no GNU GPL
PRECC [63] LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL
QLALR [64] LALR(1) C++ Mixed External All no GNU GPL
SableCC [65] LALR C, C++, C#, Java, OCaml, Python (programming language) Separate Generated All no GNU LGPL
SmaCC [66] LALR(1), LR(1) Smalltalk Mixed Internal All yes MIT
SLK [67] LL(k) C, C++, C#, Java Separate External All no Proprietary
SPARK [68] Earley Python Mixed External All no MIT
Spirit [69] LL(k) C++ Mixed Internal All no Boost
Styx [70] ? C Mixed Generated ? All GNU LGPL
Tap [71] LL(1) C++ Mixed Generated All no GNU GPL
TextTransformer [72] LL(k) C++ Mixed Generated Microsoft Windows yes Proprietary
Tom [73] GLR C Generated None All no Proprietary
TinyPG [74] LL(1) C#, Visual Basic ? ? Microsoft Windows yes CPOL 1.0
Toy Parser Generator [75] Recursive Descent Python Mixed Generated All no GNU LGPL
TP Yacc [76] LALR(1) Turbo Pascal Mixed External All yes GNU GPL
UltraGram [77] LALR, LR, GLR C++, C#, Java, Visual Basic .NET Separate Generated Microsoft Windows yes Proprietary
Yacc (AT&T) ? LALR C Mixed External POSIX no Proprietary
Yacc++ [78] LR(k), LALR(k) C++, C# Mixed Generated or External All no Proprietary
Yapps [79] LL(1) Python Mixed Generated All no MIT
yecc [80] LALR(1) Erlang Separate Generated All no Erlang
Visual BNF [81] LR(1), LALR(1) C# Separate Generated .NET Framework yes Proprietary
Visual Parse++ [82] LALR C, C++, C#, Java Separate Generated Microsoft Windows yes Proprietary
YooParse [83] LR C++ Mixed External All no MIT
Whale [84] LR C++ Mixed External All no Proprietary
Wisent [85] LALR(1) C++, Java Mixed External Java Virtual Machine no GNU GPL
Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License

Parsing Expression Grammars

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Aurochs [86] Packrat C, OCaml, Java Mixed All GNU GPL
CL-peg [87] Packrat Common Lisp Mixed All MIT
Drat! [88] Packrat D Mixed All GNU GPL
F# PegParser [89] Packrat F# Mixed .NET Framework Proprietary
Frisby [90] Packrat Haskell Mixed All BSD
grammar::peg [91] Packrat Tcl Mixed All BSD
LPeg [92] Parsing Machine Lua Mixed All MIT
Narwhal [93] Packrat C Mixed POSIX, Microsoft Windows BSD
OMeta [94] ? JavaScript, Squeak Mixed All MIT
NPEG [95] Recursive Descent C# Mixed All MIT
Packrat [96] Packrat Scheme Mixed All MIT
Pappy [97] Packrat Haskell Mixed All Proprietary
parsepp [98] ? C++ Mixed All Public Domain
Parsnip [99] Packrat C++ Mixed Microsoft Windows GNU GPL
peg [100] Recursive Descent C, C++ Mixed All MIT
pegc [101] ? C Mixed All Public Domain
PEGTL [102] Recursive Descent C++0x Mixed POSIX MIT
PGE ? Recursive Descent Parrot bytecode Mixed Parrot virtual machine ?
PyPy rlib [103] Packrat Python Mixed All MIT
Rats! [104] Packrat Java Mixed Java Virtual Machine GNU LGPL
Treetop [105] Recusive Descent Ruby Mixed All ?
Yard [106] Recursive Descent C++ Mixed All MIT or Public Domain

Miscellaneous language classes

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform License
Whale Calf [107] General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) C++ Separate External All Proprietary
Scannerless Boolean Parser [108] Scannerless GLR (Boolean grammars) Haskell, Java Separate None Java Virtual Machine BSD

See also