Jump to content

Comparison of parser generators: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Hyperyl (talk | contribs)
Hyperyl (talk | contribs)
Line 101: Line 101:
|-
|-
| [[jay (parser generator)|jay]] || [http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html] || [[LALR parser|LALR]] || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]] || mixed || none || [[Java Virtual Machine]] || no || [[BSD licenses|BSD]]
| [[jay (parser generator)|jay]] || [http://www.cs.rit.edu/~ats/projects/lp/doc/jay/package-summary.html] || [[LALR parser|LALR]] || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]] || mixed || none || [[Java Virtual Machine]] || no || [[BSD licenses|BSD]]
|-
| [[JFLAP]] || [http://www.jflap.org/] || [[LL parser|LL(1)]] || [[Java (programming language)|Java]] || ? || ? || [[Java Virtual Machine]] || yes || ?
|-
|-
| [[JetPAG]] || [http://jetpag.sourceforge.net/] || [[LL parser|LL(k)]] || [[C++]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]
| [[JetPAG]] || [http://jetpag.sourceforge.net/] || [[LL parser|LL(k)]] || [[C++]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]
Line 142: Line 144:
| [[olex]] || [http://www.irule.be/bvh/c++/olex/] || [[LL parser|LL(1)]] || [[C++]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]
| [[olex]] || [http://www.irule.be/bvh/c++/olex/] || [[LL parser|LL(1)]] || [[C++]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]
|-
|-
| [[Parsec (parser)]]|| [http://legacy.cs.uu.nl/daan/parsec.html] || [[GLR parser|GLR]] || [[Haskell (programming language)|Haskell]] || mixed || none || all || no || [[BSD licence|BSD]]
| [[Parsec (parser)|Parsec]]|| [http://legacy.cs.uu.nl/daan/parsec.html] || [[GLR parser|GLR]] || [[Haskell (programming language)|Haskell]] || mixed || none || all || no || [[BSD licence|BSD]]
|-
|-
| [[Parse::Yapp]] || [http://freshmeat.net/projects/parse-yapp/] || [[LALR parser|LALR(1)]] || [[Perl]] || mixed || external || all || no || [[GNU General Public License|GNU GPL]]
| [[Parse::Yapp]] || [http://freshmeat.net/projects/parse-yapp/] || [[LALR parser|LALR(1)]] || [[Perl]] || mixed || external || all || no || [[GNU General Public License|GNU GPL]]
|-
|-
| [[Parser Objects]] || ? || [[LL parser|LL(k)]] || [[Java (programming language)|Java]] || mixed || ? || [[Java Virtual Machine]] || no || [[Zlib license|zlib]]
| [[Parser Objects]] || ? || [[LL parser|LL(k)]] || [[Java (programming language)|Java]] || mixed || ? || [[Java Virtual Machine]] || no || [[Zlib license|zlib]]
|-
| [[PCCTS]] || [[http://www.polhode.com/pccts.html]] || [[LL parser|LL]] || [[C (programming language)|C]], [[C++]] || ? || ? || all || no || ?
|-
|-
| [[Python Lex-Yacc|PLY]] || [http://www.dabeaz.com/ply/] || [[LALR parser|LALR(1)]] || [[Python (programming language)|Python]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]
| [[Python Lex-Yacc|PLY]] || [http://www.dabeaz.com/ply/] || [[LALR parser|LALR(1)]] || [[Python (programming language)|Python]] || mixed || generated || all || no || [[GNU General Public License|GNU GPL]]

Revision as of 11:24, 25 December 2008

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

Regular languages

Name Website Parsing Algorithm Output Languages Grammar / Code Development Platform License
Dolphin [1] DFA C++ separate all Proprietary
flex [2] DFA C mixed all GNU GPL
JFlex [3] ? Java ? Java Virtual Machine GNU GPL
JLex [4] ? Java ? Java Virtual Machine ?
lex ? DFA C mixed POSIX Proprietary
Quex [5] DFA C++ mixed all GNU LGPL
Ragel [6] DFA C, C++, D, Java, Objective-C, Ruby mixed all GNU GPL
re2c [7] DFA C mixed all MIT
Russ Cox's regular expression implementations [8] DFA, NFA Bytecode, x86 assembly language, interpreted separate all MIT

Context-free languages

Name Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [9] Earley C mixed external all no GNU GPL
ANTLR [10] LL(*) C#, Java, Python mixed generated Java Virtual Machine yes BSD
AnaGram [11] LALR(1) C, C++ mixed generated Microsoft Windows ? Proprietary
APaGeD [12] GLR, LALR(1), LL(k) D mixed generated all no Artistic
APG [13] Recursive Descent C, C++ separate none all no GNU GPL
Beaver [14] LALR Java mixed external Java Virtual Machine no BSD
Bison [15] LALR, GLR C, C++ mixed external all no GNU GPL
Bison++ [16] LALR(1) C++ mixed external POSIX no GNU GPL
Bisonc++ [17] LALR(1) C++ mixed external POSIX no GNU GPL
BtYacc [18] LALR C++ mixed external all no Public domain
byacc [19] LALR C mixed external all no Public domain
BYACC/J [20] LALR C, Java mixed external all no Public domain
CL-Yacc [21] LALR(1) Common Lisp mixed external all no MIT
Coco/R [22] 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 [23] LL(k) C++ mixed generated POSIX no GNU GPL
CSP [24] LR(1) C++ separate generated POSIX no Apache License 2.0
CSTools [25] LALR C# mixed generated .NET Framework no Proprietary
CUP [26] LALR Java mixed external Java Virtual Machine no GNU GPL
DMS Software Reengineering Toolkit [27] GLR Parlanse mixed generated Microsoft Windows no Proprietary
DParser [28] Scannerless GLR C mixed generated POSIX no BSD
Dragon [29] LR(1), LALR C++, Java separate generated all no GNU GPL
Elkhound [30] GLR C++, OCaml mixed external all no BSD
eli [31] LALR C mixed generated POSIX no GNU GPL, GNU LGPL
Essence [32] LR Scheme 48 mixed external all no BSD
eyapp [33] LALR(1) Perl mixed external all no Perl
Frown [34] LALR(k) Haskell 98 mixed external all no GNU GPL
GDK [35] LALR(1), GLR C, Lex, Haskell, HTML, Java, Object Pascal, Yacc mixed generated POSIX No MIT
GOLD [36] 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 [37] LALR C# separate external Microsoft Windows yes Freeware
Grammatica [38] LL(k) C#, Java separate generated Java Virtual Machine no GNU LGPL
Happy [39] LALR, GLR Haskell mixed external all no BSD
HiLexed [40] LL(k) Java separate internal Java Virtual Machine no GNU LGPL
Hyacc [41] LR(1) C mixed external all no GNU GPL
jacc [42] LALR Java mixed external Java Virtual Machine no BSD
JavaCC [43] LL(k) Java mixed generated Java Virtual Machine yes BSD
jay [44] LALR C#, Java mixed none Java Virtual Machine no BSD
JFLAP [45] LL(1) Java ? ? Java Virtual Machine yes ?
JetPAG [46] LL(k) C++ mixed generated all no GNU GPL
JS/CC [47] LALR(1) JavaScript, JScript, ECMAScript mixed internal all yes Artistic
Kelbt [48] Backtracking LALR(1) C++ mixed generated POSIX no GNU GPL
kmyacc [49] LALR(1) C, Java, Perl, JavaScript mixed external all no GNU GPL
Lapg [50] LALR C, C++, C#, Java, JavaScript mixed generated Java Virtual Machine no GNU GPL
Lemon [51] LALR C mixed external all no Public domain
Lime [52] LALR(1) PHP mixed external all no GNU GPL
LISA [53] LR, LL, LALR, SLR Java mixed generated Java Virtual Machine yes Public Domain
LPG [54] Backtracking LALR(k) Java mixed generated Java Virtual Machine no EPL
LLgen [55] LL(1) C mixed external POSIX no BSD
LLnextgen [56] LL(1) C mixed external POSIX no GNU GPL
LRGen [57] LR(1) C++ separate generated Microsoft Windows no Proprietary
Menhir [58] LR(1) OCaml mixed generated all no QPL
Mini Parser Generator [59] ? Python mixed generated all no GNU LGPL
ML-Yacc [60] LALR(1) ML mixed external all no ?
Monkey [61] LR(1) Java separate generated Java Virtual Machine no GNU GPL
More Than Parsing [62] LL(1) Java separate generated Java Virtual Machine no GNU GPL
MyL Programming Language [63] ? C#, Java, JScript, Object Pascal,SQL mixed generated Microsoft Windows no Public domain
ocamlyacc [64] LALR(1) OCaml mixed external all no QPL
olex [65] LL(1) C++ mixed generated all no GNU GPL
Parsec [66] GLR Haskell mixed none all no BSD
Parse::Yapp [67] LALR(1) Perl mixed external all no GNU GPL
Parser Objects ? LL(k) Java mixed ? Java Virtual Machine no zlib
PCCTS [[68]] LL C, C++ ? ? all no ?
PLY [69] LALR(1) Python mixed generated all no GNU GPL
PRECC [70] LL(k) C separate generated MS-DOS, POSIX no GNU GPL
QLALR [71] LALR(1) C++ mixed external all no GNU GPL
SableCC [72] LALR C, C++, C#, Java, OCaml, Python separate generated all no GNU LGPL
SmaCC [73] LALR(1), LR(1) Smalltalk mixed internal all yes MIT
SLK [74] LL(k) C, C++, C#, Java separate external all no Proprietary
SPARK [75] Earley Python mixed external all no MIT
Spirit [76] LL(k) C++ mixed internal all no Boost
Styx [77] ? C mixed generated ? all GNU LGPL
Tap [78] LL(1) C++ mixed generated all no GNU GPL
TextTransformer [79] LL(k) C++ mixed generated Microsoft Windows yes Proprietary
Tom [80] GLR C generated none all no 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
UltraGram [84] 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++ [85] LR(k), LALR(k) C++, C# mixed generated or external all no Proprietary
Yapps [86] LL(1) Python mixed generated all no MIT
yecc [87] LALR(1) Erlang separate generated all no Erlang
Visual BNF [88] LR(1), LALR(1) C# separate generated .NET Framework yes Proprietary
Visual Parse++ [89] LALR C, C++, C#, Java separate generated Microsoft Windows yes Proprietary
YooParse [90] LR C++ mixed external all no MIT
Whale [91] LR C++ mixed external all no Proprietary
Wisent [92] 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 [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
F# PegParser [96] Packrat F# mixed .NET Framework Proprietary
Frisby [97] Packrat Haskell mixed all BSD
grammar::peg [98] Packrat Tcl mixed all BSD
LPeg [99] Parsing Machine Lua mixed all MIT
Narwhal [100] Packrat C mixed POSIX, Microsoft Windows BSD
NPEG [101] Recursive Descent C# mixed all MIT
OMeta [102] ? JavaScript, Squeak mixed all MIT
Packrat [103] Packrat Scheme mixed all MIT
Pappy [104] Packrat Haskell mixed all Proprietary
parsepp [105] ? C++ mixed all Public Domain
Parsnip [106] Packrat C++ mixed Microsoft Windows GNU GPL
peg [107] Recursive Descent C, C++ mixed all MIT
pegc [108] ? C mixed all Public Domain
PEGTL [109] Recursive Descent C++0x mixed POSIX MIT
PGE ? Recursive Descent Parrot bytecode mixed Parrot virtual machine ?
PyPy rlib [110] Packrat Python mixed all MIT
Rats! [111] Packrat Java mixed Java Virtual Machine GNU LGPL
Treetop [112] Recusive Descent Ruby mixed all ?
Yard [113] 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 [114] General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) C++ separate external all Proprietary
Scannerless Boolean Parser [115] Scannerless GLR (Boolean grammars) Haskell, Java separate none Java Virtual Machine BSD

See also