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)
add other language classes
Line 1: Line 1:
This is a list of notable [[parser generators]].
This is a list of notable [[parser generators]].


==Context-free languages==
== Regular languages ==
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[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 || no || [[GNU General Public License|GNU GPL]]
|-
| [[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 || no || [[GNU General Public License|GNU GPL]]
|}

== Context-free languages ==
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
! Name !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]]
|-
|-
| [[ACCENT]] || [http://accent.compilertools.net/] || [[Earley parser|Earley]] || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]]
| [[ACCENT]] || [http://accent.compilertools.net/] || [[Earley parser|Earley]] || [[C (programming language)|C]] || Mixed || External || All || no || [[GNU General Public License|GNU GPL]]
Line 132: Line 141:
|-
|-
| [[SableCC]] || [http://sablecc.org/] || [[LALR parser|LALR]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Objective Caml|OCaml]], [[Python (programming language)]] || Separate || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]]
| [[SableCC]] || [http://sablecc.org/] || [[LALR parser|LALR]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Objective Caml|OCaml]], [[Python (programming language)]] || Separate || Generated || All || no || [[GNU Lesser General Public License|GNU LGPL]]
|-
| [[Scannerless Boolean Parser]] || [http://research.cs.berkeley.edu/project/sbp/] || [[Scannerless parsing|Scannerless GLR]] ([[Boolean grammar|Boolean Grammars]]) || [[Java (programming language)|Java]], [[Haskell (programming language)|Haskell]] || Separate || Generated || All || no || [[BSD licenses|BSD]]
|-
|-
| [[SmaCC]] || [http://refactory.com/Software/SmaCC/] || [[LALR parser|LALR(1)]], [[Canonical LR parser|LR(1)]] || [[Smalltalk]] || Mixed || Internal || All || yes || [[MIT license|MIT]]
| [[SmaCC]] || [http://refactory.com/Software/SmaCC/] || [[LALR parser|LALR(1)]], [[Canonical LR parser|LR(1)]] || [[Smalltalk]] || Mixed || Internal || All || yes || [[MIT license|MIT]]
Line 172: Line 179:
| [[Visual Parse++]] || [http://sand-stone.com/] || [[LALR parser|LALR]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]] || Separate || Generated || [[Microsoft Windows]] || yes || [[Proprietary software|Proprietary]]
| [[Visual Parse++]] || [http://sand-stone.com/] || [[LALR parser|LALR]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]] || Separate || Generated || [[Microsoft Windows]] || yes || [[Proprietary software|Proprietary]]
|-
|-
| [[YooParse]] || [http://yooparse.sourceforge.net/] || [[LR parser|LR]] || [[C++]] || Mixed || External ([[YooLex]]) || All || no || [[MIT license|MIT]]
| [[YooParse]] || [http://yooparse.sourceforge.net/] || [[LR parser|LR]] || [[C++]] || Mixed || External || All || no || [[MIT license|MIT]]
|-
|-
| [[Wisent]] || [http://sourceforge.net/projects/wisent/] || [[LALR(1)]] || [[C++]], [[Java (programming language)|Java]] || Mixed || External || [[Java Virtual Machine]] || All || [[GNU General Public License|GNU GPL]]
| [[Whale (parser generator)|Whale]] || [http://users.utu.fi/aleokh/whale/] || [[LR parser|LR]] || [[C++]] || Mixed || External || All || no || [[Proprietary software|Proprietary]]
|-
| [[Wisent]] || [http://sourceforge.net/projects/wisent/] || [[LALR parser|LALR(1)]] || [[C++]], [[Java (programming language)|Java]] || Mixed || External || [[Java Virtual Machine]] || no || [[GNU General Public License|GNU GPL]]
|-class="sortbottom"
|-class="sortbottom"
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]]
! Product !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Integrated Development Environment|IDE]] !! [[Software license|License]]
Line 181: Line 190:
==Parsing Expression Grammars==
==Parsing Expression Grammars==
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
! Product !! [[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]]
|-
|-
| [[Aurochs (parser generator)|Aurochs]] || [http://aurochs.fr] || Packrat || [[C (programming language)|C]], [[Objective Caml|OCaml]], [[Java (programming language)|Java]] || Mixed || All || [[GNU General Public License|GNU GPL]]
| [[Aurochs (parser generator)|Aurochs]] || [http://aurochs.fr] || Packrat || [[C (programming language)|C]], [[Objective Caml|OCaml]], [[Java (programming language)|Java]] || Mixed || All || [[GNU General Public License|GNU GPL]]
Line 226: Line 235:
|-
|-
| [[Yard]] || [http://code.google.com/p/yardparser/] || Recursive Descent || [[C++]] || Mixed || All || [[MIT license|MIT]] or [[Public Domain]]
| [[Yard]] || [http://code.google.com/p/yardparser/] || Recursive Descent || [[C++]] || Mixed || All || [[MIT license|MIT]] or [[Public Domain]]
|}

== Miscellaneous language classes ==
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
! Name !! [[Website]] !! [[Parsing|Parsing Algorithm]] !! [[Programming language|Output Languages]] !! Grammar / Code !! [[Lexical analyzer|Lexer]] !! Development Platform !! [[Software license|License]]
|-
| [[Whale Calf]] || [http://users.utu.fi/aleokh/whalecalf/] || [[Parsing table|General Tabular]], [[LL parser|SLL(k)]], Linear Normal Form ([[Conjunctive grammar]]s), [[LR parser|LR]], Binary Normal Form ([[Boolean grammar]]s) || [[C++]] || Separate || External || All || [[Proprietary software|Proprietary]]
|-
| [[Scannerless Boolean Parser]] || [http://research.cs.berkeley.edu/project/sbp/] || [[Scannerless parsing|Scannerless GLR]] ([[Boolean grammar]]s) || [[Haskell (programming language)|Haskell]], [[Java (programming language)|Java]] || Separate || None || [[Java Virtual Machine]] || [[BSD licenses|BSD]]
|}
|}



Revision as of 16:06, 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] Deterministic finite state machine C++ Separated All no GNU GPL
Ragel [2] Deterministic finite state machine C, C++, D, Java, Objective-C, Ruby Mixed All no GNU GPL

Context-free languages

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

See also