From Wikipedia, the free encyclopedia
This is a list of notable parsing systems.
[edit] 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. |
[edit] 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++, C#, Java, Python |
Mixed |
Generated |
JVM |
yes |
BSD |
APaGeD |
[3] |
GLR, LALR(1), LL(k) |
D |
Mixed |
Generated |
All |
no |
Artistic |
APG |
[4] |
Recursive Descent |
C, C++ |
Separate |
None |
All |
no |
GNU GPL |
Aurochs |
[5] |
Packrat |
C, Ocaml, Java |
Mixed |
Generated |
All |
no |
GNU GPL |
Beaver |
[6] |
LALR |
Java |
Mixed |
External |
JVM |
no |
BSD |
Bison |
[7] |
LALR, GLR |
C, C++ |
Mixed |
External |
All |
no |
GNU GPL |
BtYACC |
[8] |
LALR |
C++ |
Mixed |
External |
All |
no |
Public domain |
BYACC |
[9] |
LALR |
C |
Mixed |
External |
All |
no |
Public domain |
BYACC/J |
[10] |
LALR |
C, Java |
Mixed |
External (JFlex) |
All |
no |
Public domain |
CL-peg |
[11] |
Packrat |
Common Lisp |
Mixed |
Generated |
All |
no |
MIT |
CL-Yacc |
[12] |
LALR(1) |
Common Lisp |
Mixed |
External |
All |
no |
MIT |
Coco/R |
[13] |
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 |
[14] |
LL(k) |
C++ |
Mixed |
Generated |
POSIX |
no |
GNU GPL |
CSTools |
[15] |
LALR |
C# |
Mixed |
Generated |
.NET |
no |
? |
CUP |
[16] |
LALR |
Java |
Mixed |
External (JLex) |
JVM |
no |
GNU GPL |
DMS Software Reengineering Toolkit |
[17] |
GLR |
Parlanse |
Mixed |
Generated |
Win32 |
no |
Proprietary |
DParser |
[18] |
Scannerless GLR |
C |
Mixed |
Generated |
POSIX |
no |
BSD |
Drat! |
[19] |
Packrat |
D |
Mixed |
Generated |
All |
no |
GNU GPL |
Elkhound |
[20] |
GLR |
C++, OCaml |
Mixed |
External |
All |
no |
BSD |
eli |
[21] |
LALR |
C, others |
Mixed |
Generated |
POSIX |
no |
GNU GPL, GNU LGPL |
Essence |
[22] |
LR |
Scheme (Scheme 48) |
Mixed |
External |
All |
no |
BSD |
eyapp |
[23] |
LALR(1) |
Perl |
Mixed |
External |
All |
no |
Perl |
F# PegParser |
[24] |
Packrat |
F# |
Mixed |
Generated |
.NET |
no |
? |
Frisby |
[25] |
Packrat |
Haskell |
Mixed |
Generated |
All |
no |
BSD |
GOLD |
[26] |
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 |
[27] |
Packrat |
TCL |
Mixed |
Generated |
All |
no |
BSD |
Grammatica |
[28] |
LL(k) |
C#, Java |
Separate |
Generated |
JVM |
no |
GNU LGPL |
Happy |
[29] |
LALR, GLR |
Haskell |
Mixed |
External |
All |
no |
BSD |
Hyacc |
[30] |
LR(1) |
C |
Mixed |
External |
All |
no |
GNU GPL |
jacc |
[31] |
LALR |
Java |
Mixed |
External |
JVM |
no |
BSD |
JavaCC |
[32] |
LL(k) |
Java |
Mixed |
Generated |
JVM |
yes |
BSD |
jay |
[33] |
LALR |
C#, Java |
Mixed |
None |
All |
no |
BSD |
JetPAG |
[34] |
LL(k) |
C++ |
Mixed |
Generated |
All |
no |
GNU GPL |
JS/CC |
[35] |
LALR(1) |
JavaScript, JScript, ECMAScript |
Mixed |
Internal |
All |
yes |
Artistic |
kmyacc |
[36] |
LALR(1) |
C, Java, Perl, JavaScript |
Mixed |
External |
All |
no |
GNU GPL |
Lapg |
[37] |
LALR |
Java, Javascript, C, C++, C# |
Mixed |
Generated |
JVM |
no |
EPL |
LEMON |
[38] |
LALR |
C |
Mixed |
External |
All |
no |
Public domain |
LISA |
[39] |
LR, LL, LALR, SLR |
Java |
Mixed |
Generated |
JVM |
yes |
Public Domain |
LPeg |
[40] |
Parsing Machine |
Lua |
Mixed |
Generated |
All |
no |
MIT |
LPG |
[41] |
LALR |
Java |
Mixed |
Generated |
JVM |
no |
EPL |
LRGen |
? |
LR(1) |
C++ |
Separate |
Generated |
Win32 |
no |
Proprietary |
Menhir |
[42] |
LR(1) |
OCaml |
Mixed |
Generated |
All |
no |
QPL |
ML-Yacc |
[43] |
LALR(1) |
ML |
Mixed |
External |
All |
no |
? |
More Than Parsing |
[44] |
LL(1) |
Java |
Separate |
Generated |
JVM |
no |
GNU GPL |
Narwhal |
[45] |
Packrat |
C |
Mixed |
Generated |
POSIX, Win32 |
no |
BSD |
ocamlyacc |
[46] |
LALR(1) |
OCaml |
Mixed |
External (Ocamllex) |
All |
no |
QPL |
Packrat |
[47] |
Packrat |
Scheme |
Mixed |
Generated |
All |
no |
MIT |
Pappy |
[48] |
Packrat |
Haskell |
Mixed |
Generated |
All |
no |
? |
Parsec (parser) |
[49] |
GLR |
Haskell |
Mixed |
None |
All |
no |
BSD |
Parsnip |
[50] |
Packrat |
C++ |
Mixed |
Generated |
Win32 |
no |
GNU GPL |
Parser Objects |
? |
LL(k) |
Java |
Mixed |
? |
JVM |
no |
zlib |
peg |
[51] |
Recursive Descent (PEG) |
C, C++ |
Mixed |
Generated |
All |
no |
MIT |
PEGTL |
[52] |
Recursive Descent (PEG) |
C++0x |
Mixed |
Internal |
POSIX |
no |
MIT |
PGE |
? |
Recursive Descent (PEG) |
Parrot bytecode |
Mixed |
Generated |
All |
no |
? |
PyPy rlib |
[53] |
Packrat |
Python |
Mixed |
Generated |
All |
no |
MIT |
PLY |
[54] |
LALR(1) |
Python |
Mixed |
Generated |
All |
no |
GNU GPL |
PRECC |
[55] |
LL(k) |
C |
Separate |
Generated |
MS-DOS, POSIX |
no |
GNU GPL |
Rats! |
[56] |
PEG |
Java |
Mixed |
Generated |
JVM |
no |
GNU LGPL |
QLALR |
[57] |
LALR(1) |
C++ |
Mixed |
External |
All |
no |
GNU GPL |
SableCC |
[58] |
LALR |
Java, C, C++, C#, OCaml, Python |
Separate |
Generated |
All |
no |
GNU LGPL |
Scannerless Boolean Parser |
[59] |
Scannerless GLR (Boolean Grammars) |
Java, Haskell |
Separate |
Generated |
All |
no |
BSD |
SmaCC |
[60] |
LALR(1)/LR(1) |
Smalltalk |
Mixed |
Internal |
All |
yes |
MIT |
SLK |
[61] |
LL(k) |
C, C++, C#, Java |
Separate |
External |
All |
no |
Proprietary |
SPARK |
[62] |
GLR |
Python |
Mixed |
External |
All |
no |
MIT |
Spirit |
[63] |
LL(k) |
C++ |
Mixed |
Internal |
All |
no |
Boost |
TextTransformer |
[64] |
LL(k) |
C++ |
Mixed |
Generated |
Win32 |
yes |
Proprietary |
TP Yacc |
[65] |
LALR(1) |
Turbo Pascal |
Mixed |
External |
All |
yes |
GNU GPL |
Treetop |
[66] |
Recusive Descent (PEG) |
Ruby |
Mixed |
Generated |
All |
no |
? |
Yacc (AT&T) |
? |
LALR |
C, others |
Mixed |
External |
POSIX |
no |
? |
Yacc++ |
[67] |
LR(k)/LALR(k) |
C++, C# |
Mixed |
Generated or External |
All |
no |
Proprietary or GNU GPL |
Yapps |
[68] |
LL(1) |
Python |
Mixed |
Generated |
All |
no |
MIT |
YARD |
[69] |
Recursive Descent (PEG) |
C++ |
Mixed |
Generated |
All |
no |
MIT or Public Domain |
yecc |
[70] |
LALR(1) |
Erlang |
Separate |
Generated |
All |
no |
Erlang |
Visual BNF |
[71] |
LR(1)/LALR(1) |
C# |
Separate |
Generated |
.NET |
yes |
Proprietary |
Visual Parse++ |
[72] |
LALR |
C, C++, C#, Java |
Separate |
Generated |
Win32 |
yes |
Proprietary |
YooParse |
[73] |
LR |
C++ |
Mixed |
External (YooLex) |
All |
no |
MIT |
Product |
Website |
Parsing Algorithm |
Output Languages |
Grammar / Code |
Lexer |
Development Platform |
IDE |
License |
[edit] See also
[edit] External links