Jump to content

Comparison of parser generators

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Hyperyl (talk | contribs) at 12:23, 24 October 2008 (remove Latest Release column). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

This is a list of notable parsing systems.

Chart Key

The following key describes the columns used in the comparison chart below.

Table Column Description
Parser Algorithm Each parsing system implements a special algorithm for analyzing a token stream and building a tree structure which corresponds to the syntax of the language as defined by a grammar. The different parsing algorithms are: LALR, LR(1), GLR, and LL.
Output Languages Most parser generators output source code in one or more specific programming languages. This source code is used in the construction of the compiler, interpreter or translator.
Grammar/Code If the grammar and source code are "mixed", the developer's source code is directly embedded into the grammar. This is the approach typically used by compiler-compilers. If "separated", the grammar and source-code are developed separately.
Lexer The lexer is used to read characters and identify tokens and pass them to the parser. Lexers can be generated by the parser development software, a separate lexer generator or hand coded.
Development Platform This is the required platform and/or operating system required to use the parser development software.
IDE Some products feature an integrated development environment.
License This column indicates the type end-user license offered by the author of the product.

Comparison Charts

Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License
ACCENT [1] Earley C Mixed External All no GNU GPL
ANTLR [2] LL(*) C#, Java, Python Mixed Generated JVM yes BSD
AnaGram [3] LALR(1) C, C++ Mixed Generated Win32 ? Proprietary
APaGeD [4] GLR, LALR(1), LL(k) D Mixed Generated All no Artistic
APG [5] Recursive Descent C, C++ Separate None All no GNU GPL
Aurochs [6] Packrat C, Ocaml, Java Mixed Generated All no GNU GPL
Beaver [7] LALR Java Mixed External JVM no BSD
Bison [8] LALR, GLR C, C++ Mixed External All no GNU GPL
Bison++ [9] LALR(1) C++ Mixed External POSIX No GNU GPL
Bisonc++ [10] LALR(1) C++ Mixed External POSIX No GNU GPL
BtYacc [11] LALR C++ Mixed External All no Public domain
BYACC [12] LALR C Mixed External All no Public domain
BYACC/J [13] LALR C, Java Mixed External (JFlex) All no Public domain
CL-peg [14] Packrat Common Lisp Mixed Generated All no MIT
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 JVM, .NET 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 V2.0
CSTools [19] LALR C# Mixed Generated .NET no ?
CUP [20] LALR Java Mixed External (JLex) JVM no GNU GPL
DMS Software Reengineering Toolkit [21] GLR Parlanse Mixed Generated Win32 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
Drat! [24] Packrat D Mixed Generated All no GNU GPL
Elkhound [25] GLR C++, OCaml Mixed External All no BSD
eli [26] LALR C, others Mixed Generated POSIX no GNU GPL, GNU LGPL
Essence [27] LR Scheme (Scheme 48) Mixed External All no BSD
eyapp [28] LALR(1) Perl Mixed External All no Perl
F# PegParser [29] Packrat F# Mixed Generated .NET no ?
Frisby [30] Packrat Haskell Mixed Generated All no BSD
Frown [31] LALR(k) Haskell 98 Mixed External All no GNU GPL
GDK [32] LALR(1), GLR C, Delphi, Lex, Haskell, HTML, Java, Yacc Mixed Generated POSIX No MIT
GOLD [33] LALR x86 assembly language, ANSI C, C#, D, Delphi, Java, Pascal, Python, Visual Basic 6, Visual Basic .NET, Visual C++ Separate Generated Win32 yes Freeware
grammar::peg [34] Packrat TCL Mixed Generated All no BSD
Grammatica [35] LL(k) C#, Java Separate Generated JVM no GNU LGPL
Happy [36] LALR, GLR Haskell Mixed External All no BSD
HiLexed [37] LL(k) Java Separate Internal JVM no GNU LGPL
Hyacc [38] LR(1) C Mixed External All no GNU GPL
jacc [39] LALR Java Mixed External JVM no BSD
JavaCC [40] LL(k) Java Mixed Generated JVM yes BSD
jay [41] LALR C#, Java Mixed None All no BSD
JetPAG [42] LL(k) C++ Mixed Generated All no GNU GPL
JS/CC [43] LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic
Kelbt [44] Backtracking LALR(1) C++ Mixed Generated POSIX no GNU GPL
kmyacc [45] LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL
Lapg [46] LALR Java, Javascript, C, C++, C# Mixed Generated JVM no GNU GPL
LEMON [47] LALR C Mixed External All no Public domain
Lime [48] LALR(1) PHP Mixed External All no GNU GPL
LISA [49] LR, LL, LALR, SLR Java Mixed Generated JVM yes Public Domain
LPeg [50] Parsing Machine Lua Mixed Generated All no MIT
LPG [51] Backtracking LALR Java Mixed Generated JVM no EPL
LLgen [52] LL(1) C Mixed External POSIX no BSD
LLnextgen [53] LL(1) C Mixed External POSIX no GNU GPL
LRGen [54] LR(1) C++ Separate Generated Win32 no Proprietary
Menhir [55] LR(1) OCaml Mixed Generated All no QPL
Mini Parser Generator [56] ? Python Mixed Generated All no GNU LGPL
ML-Yacc [57] LALR(1) ML Mixed External All no ?
Monkey [58] LR(1) Java Separate Generated JVM no GNU GPL
More Than Parsing [59] LL(1) Java Separate Generated JVM no GNU GPL
MyL Programming Language [60] ? C#, Delphi, Java, JScript, SQL Mixed Generated Win32 no Public domain
Narwhal [61] Packrat C Mixed Generated POSIX, Win32 no BSD
ocamlyacc [62] LALR(1) OCaml Mixed External (Ocamllex) All no QPL
olex [63] LL(1) C++ Mixed Generated All no GNU GPL
Packrat [64] Packrat Scheme Mixed Generated All no MIT
Pappy [65] Packrat Haskell Mixed Generated All no Proprietary
Parsec (parser) [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 ? JVM no zlib
Parsnip [68] Packrat C++ Mixed Generated Win32 no GNU GPL
peg [69] Recursive Descent (PEG) C, C++ Mixed Generated All no MIT
PEGTL [70] Recursive Descent (PEG) C++0x Mixed Internal POSIX no MIT
PGE ? Recursive Descent (PEG) Parrot bytecode Mixed Generated All no ?
PyPy rlib [71] Packrat Python Mixed Generated All no MIT
PLY [72] LALR(1) Python Mixed Generated All no GNU GPL
PRECC [73] LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL
Rats! [74] PEG Java Mixed Generated JVM no GNU LGPL
QLALR [75] LALR(1) C++ Mixed External All no GNU GPL
SableCC [76] LALR Java, C, C++, C#, OCaml, Python Separate Generated All no GNU LGPL
Scannerless Boolean Parser [77] Scannerless GLR (Boolean Grammars) Java, Haskell Separate Generated All no BSD
SmaCC [78] LALR(1), LR(1) Smalltalk Mixed Internal All yes MIT
SLK [79] LL(k) C, C++, C#, Java Separate External All no Proprietary
SPARK [80] Earley Python Mixed External All no MIT
Spirit [81] LL(k) C++ Mixed Internal All no Boost
Styx [82] ? C Mixed Generated ? All GNU LGPL
Tap [83] LL(1) C++ Mixed Generated All no GNU GPL
TextTransformer [84] LL(k) C++ Mixed Generated Win32 yes Proprietary
Tom [85] LR(k) (Tomita) C Generated None All no Proprietary
Toy Parser Generator [86] Recusive Descent Python Mixed Generated All no GNU LGPL
TP Yacc [87] LALR(1) Turbo Pascal Mixed External All yes GNU GPL
Treetop [88] Recusive Descent (PEG) Ruby Mixed Generated All no ?
Yacc (AT&T) ? LALR C, others Mixed External POSIX no ?
Yacc++ [89] LR(k)/LALR(k) C++, C# Mixed Generated or External All no Proprietary
Yapps [90] LL(1) Python Mixed Generated All no MIT
Yard [91] Recursive Descent (PEG) C++ Mixed Generated All no MIT or Public Domain
yecc [92] LALR(1) Erlang Separate Generated All no Erlang
Visual BNF [93] LR(1)/LALR(1) C# Separate Generated .NET yes Proprietary
Visual Parse++ [94] LALR C, C++, C#, Java Separate Generated Win32 yes Proprietary
YooParse [95] LR C++ Mixed External (YooLex) All no MIT
Wisent [96] LALR(1) C++, Java Mixed External JVM All GNU GPL
Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License

See also