|
|
Line 229: |
Line 229: |
|
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || [[C (programming language)|C]] || mixed || [[POSIX]], [[Microsoft Windows]] || [[BSD licenses|BSD]] |
|
| [[Narwhal (parser generator)|Narwhal]] || [http://sourceforge.net/projects/narwhal/] || Packrat || [[C (programming language)|C]] || mixed || [[POSIX]], [[Microsoft Windows]] || [[BSD licenses|BSD]] |
|
|- |
|
|- |
|
| [[Nemerle.Peg]] || [http://nemerle.googlecode.com/svn/nemerle/trunk/snippets/peg-parser] || Recursive Descent || [[Nemerle]] || separate || all || [[BSD licenses|BSD]] |
|
| [[Nemerle.Peg]] || [http://nemerle.googlecode.com/svn/nemerle/trunk/snippets/peg-parser] || Recursive Descent + Pratt || [[Nemerle]] || separate || all || [[BSD licenses|BSD]] |
|
|- |
|
|- |
|
| neotoma || [http://github.com/seancribbs/neotoma] || Packrat || [[Erlang (programming language)|Erlang]] || separate || all || [[MIT license|MIT]] |
|
| neotoma || [http://github.com/seancribbs/neotoma] || Packrat || [[Erlang (programming language)|Erlang]] || separate || all || [[MIT license|MIT]] |
This is a list of notable lexer generators and parser generators for various language classes.
Regular languages
Deterministic Context-free Languages
Name |
Website |
Parsing Algorithm |
[Input Grammar Notation] |
Output Languages |
Grammar / Code |
Lexer |
Development Platform |
IDE |
License
|
ANTLR |
[17] |
LL(*) |
? |
C, C++, C#, Java, Python, Ruby |
mixed |
generated |
Java Virtual Machine |
Yes |
BSD
|
APG |
[18] |
Recursive descent , Backtracking |
? |
C, C++, JavaScript |
separate |
none |
all |
No |
GNU GPL
|
Beaver |
[19] |
LALR(1) |
? |
Java |
mixed |
external |
Java Virtual Machine |
No |
BSD
|
Bison++ |
[20] |
LALR(1) |
? |
C++ |
mixed |
external |
POSIX |
No |
GNU GPL
|
Bisonc++ |
[21] |
LALR(1) |
? |
C++ |
mixed |
external |
POSIX |
No |
GNU GPL
|
BtYacc |
[22] |
Backtracking Bottom-up |
? |
C++ |
mixed |
external |
all |
No |
public domain
|
byacc |
[23] |
LALR(1) |
YACC |
C |
mixed |
external |
all |
No |
public domain
|
BYACC/J |
[24] |
LALR(1) |
? |
C, Java |
mixed |
external |
all |
No |
public domain
|
CL-Yacc |
[25] |
LALR(1) |
? |
Common Lisp |
mixed |
external |
all |
No |
MIT
|
Coco/R |
[26] |
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
|
CookCC |
[27] |
LALR(1) |
? |
Java |
mixed |
generated |
Java Virtual Machine |
No |
BSD
|
CppCC |
[28] |
LL(k) |
? |
C++ |
mixed |
generated |
POSIX |
No |
GNU GPL
|
CSP |
[29] |
LR(1) |
? |
C++ |
separate |
generated |
POSIX |
No |
Apache License 2.0
|
CSTools |
[30] |
LALR(1) |
? |
C# |
mixed |
generated |
.NET Framework |
No |
proprietary
|
CUP |
[31] |
LALR(1) |
? |
Java |
mixed |
external |
Java Virtual Machine |
No |
GNU GPL
|
Dragon |
[32] |
LR(1), LALR(1) |
? |
C++, Java |
separate |
generated |
all |
No |
GNU GPL
|
eli |
[33] |
LALR(1) |
? |
C |
mixed |
generated |
POSIX |
No |
GNU GPL, GNU LGPL
|
Essence |
[34] |
LR(???) |
? |
Scheme 48 |
mixed |
external |
all |
No |
BSD
|
eyapp |
[35] |
LALR(1) |
? |
Perl |
mixed |
external or generated |
all |
no |
Perl
|
Frown |
[36] |
LALR(k) |
? |
Haskell 98 |
mixed |
external |
all |
No |
GNU GPL
|
geyacc |
[37] |
LALR(1) |
? |
Eiffel |
mixed |
external |
all |
No |
MIT
|
GOLD |
[38] |
LALR(1) |
BNF |
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 |
[39] |
LALR(1) |
YACC |
C# |
separate |
external |
Microsoft Windows |
Yes |
BSD
|
Grammatica |
[40] |
LL(k) |
? |
C#, Java |
separate |
generated |
Java Virtual Machine |
No |
GNU LGPL
|
HiLexed |
[41] |
LL(*) |
EBNF or Java |
Java |
separate |
internal |
Java Virtual Machine |
No |
GNU LGPL
|
Hyacc |
[42] |
LR(1), LALR(1), LR(0) |
YACC |
C |
mixed |
external |
all |
No |
GNU GPL
|
jacc |
[43] |
LALR(1) |
? |
Java |
mixed |
external |
Java Virtual Machine |
No |
BSD
|
JavaCC |
[44] |
LL(k) |
? |
Java |
mixed |
generated |
Java Virtual Machine |
Yes |
BSD
|
jay |
[45] |
LALR(1) |
? |
C#, Java |
mixed |
none |
Java Virtual Machine |
No |
BSD
|
JFLAP |
[46] |
LL(1) |
? |
Java |
? |
? |
Java Virtual Machine |
Yes |
?
|
JetPAG |
[47] |
LL(k) |
? |
C++ |
mixed |
generated |
all |
No |
GNU GPL
|
JS/CC |
[48] |
LALR(1) |
? |
JavaScript, JScript, ECMAScript |
mixed |
internal |
all |
Yes |
Artistic
|
KDevelop-PG-Qt |
[49] |
LL(1), Backtracking, Shunting yard |
? |
C++ |
mixed |
generated or external |
all, KDE |
No |
GNU LGPL
|
Kelbt |
[50] |
Backtracking LALR(1) |
? |
C++ |
mixed |
generated |
POSIX |
No |
GNU GPL
|
kmyacc |
[51] |
LALR(1) |
? |
C, Java, Perl, JavaScript |
mixed |
external |
all |
No |
GNU GPL
|
Lapg |
[52] |
LALR(1) |
? |
C, C++, C#, Java, JavaScript |
mixed |
generated |
Java Virtual Machine |
No |
GNU GPL
|
Lemon |
[53] |
LALR(1) |
? |
C |
mixed |
external |
all |
No |
public domain
|
Lime |
[54] |
LALR(1) |
? |
PHP |
mixed |
external |
all |
No |
GNU GPL
|
LISA |
[55] |
LR(???), LL(???), LALR(???), SLR(???) |
? |
Java |
mixed |
generated |
Java Virtual Machine |
Yes |
public domain
|
LPG |
[56] |
Backtracking LALR(k) |
? |
Java |
mixed |
generated |
Java Virtual Machine |
No |
EPL
|
LLgen |
[57] |
LL(1) |
? |
C |
mixed |
external |
POSIX |
No |
BSD
|
LLnextgen |
[58] |
LL(1) |
? |
C |
mixed |
external |
POSIX |
No |
GNU GPL
|
LRSTAR |
[59] |
LALR(1) matrix tables |
TBNF |
C, C++ |
separate |
lexer generator included |
Windows 32-bit |
No |
BSD
|
Menhir |
[60] |
LR(1) |
? |
OCaml |
mixed |
generated |
all |
No |
QPL
|
Mini Parser Generator |
[61] |
? |
? |
Python |
mixed |
generated |
all |
No |
GNU LGPL
|
ML-Yacc |
[62] |
LALR(1) |
? |
ML |
mixed |
external |
all |
No |
?
|
Monkey |
[63] |
LR(1) |
? |
Java |
separate |
generated |
Java Virtual Machine |
No |
GNU GPL
|
More Than Parsing |
[64] |
LL(1) |
? |
Java |
separate |
generated |
Java Virtual Machine |
No |
GNU GPL
|
Msta |
[65] |
LALR(k), LR(k) |
YACC, EBNF |
C, C++ |
mixed |
external or generated |
POSIX, Cygwin |
No |
GNU GPL
|
ocamlyacc |
[66] |
LALR(1) |
? |
OCaml |
mixed |
external |
all |
No |
QPL
|
olex |
[67] |
LL(1) |
? |
C++ |
mixed |
generated |
all |
No |
GNU GPL
|
Parsec |
[68] |
LL, Backtracking |
? |
Haskell |
mixed |
none |
all |
No |
BSD
|
Parse::Yapp |
[69] |
LALR(1) |
? |
Perl |
mixed |
external |
all |
No |
GNU GPL
|
Parser Objects |
? |
LL(k) |
? |
Java |
mixed |
? |
Java Virtual Machine |
No |
zlib
|
PCCTS |
[70] |
LL |
? |
C, C++ |
? |
? |
all |
No |
?
|
PLY |
[71] |
LALR(1) |
? |
Python |
mixed |
generated |
all |
No |
MIT License
|
PRECC |
[72] |
LL(k) |
? |
C |
separate |
generated |
MS-DOS, POSIX |
No |
GNU GPL
|
QLALR |
[73] |
LALR(1) |
? |
C++ |
mixed |
external |
all |
No |
GNU GPL
|
SableCC |
[74] |
LALR(1) |
? |
C, C++, C#, Java, OCaml, Python |
separate |
generated |
all |
No |
GNU LGPL
|
SLK |
[75] |
LL(k) |
? |
C, C++, C#, Java |
separate |
external |
all |
No |
proprietary
|
Spirit |
[76] |
Recursive Descent |
? |
C++ |
mixed |
internal |
all |
No |
Boost
|
Styx |
[77] |
LALR(1) |
? |
C, C++ |
separate |
generated |
all |
No |
GNU LGPL
|
Sweet Parser |
[78] |
LALR(1) |
? |
C++ |
separate |
generated |
Microsoft Windows |
No |
zlib
|
Tap |
[79] |
LL(1) |
? |
C++ |
mixed |
generated |
all |
No |
GNU GPL
|
TextTransformer |
[80] |
LL(k) |
? |
C++ |
mixed |
generated |
Microsoft Windows |
Yes |
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
|
Whale |
[84] |
LR(?), some conjunctive stuff, see Whale Calf |
? |
C++ |
mixed |
external |
all |
No |
proprietary
|
Wisent |
[85] |
LALR(1) |
? |
C++, Java |
mixed |
external |
Java Virtual Machine |
No |
GNU GPL
|
Yacc (AT&T) |
[86] |
LALR(1) |
YACC |
C |
mixed |
external |
POSIX |
No |
CPL
|
Yacc++ |
[87] |
LR(1), LALR(1) |
YACC |
C++, C# |
mixed |
generated or external |
all |
No |
proprietary
|
Yapps |
[88] |
LL(1) |
? |
Python |
mixed |
generated |
all |
No |
MIT
|
yecc |
[89] |
LALR(1) |
? |
Erlang |
separate |
generated |
all |
No |
Erlang
|
Visual BNF |
[90] |
LR(1), LALR(1) |
? |
C# |
separate |
generated |
.NET Framework |
Yes |
proprietary
|
Visual Parse++ |
[91] |
LALR(???) |
? |
C, C++, C#, Java |
separate |
generated |
Microsoft Windows |
Yes |
proprietary
|
YooParse |
[92] |
LR(1), LALR(1) |
? |
C++ |
mixed |
external |
all |
No |
MIT
|
Product |
Website |
Parsing Algorithm |
[Input Grammar Notation] |
Output Languages |
Grammar / Code |
Lexer |
Development Platform |
IDE |
License
|
Parsing Expression Grammars/Deterministic Boolean 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
|
Frisby |
[96] |
Packrat |
Haskell |
mixed |
all |
BSD
|
grammar::peg |
[97] |
Packrat |
Tcl |
mixed |
all |
BSD
|
IronMeta |
[98] |
Packrat |
C# |
mixed |
Microsoft Windows |
BSD
|
Katahdin |
[99] |
Packrat (modified), mutating interpreter |
C# |
mixed |
all |
Public Domain
|
Laja |
[100] |
2-phase scannerless top-down backtracking + runtime support |
Java |
separate |
all |
GNU GPL
|
LPeg |
[101] |
Parsing Machine |
Lua |
mixed |
all |
MIT
|
Mouse |
[102] |
Recursive Descent |
Java |
separate |
Java Virtual Machine |
Apache License 2.0
|
Narwhal |
[103] |
Packrat |
C |
mixed |
POSIX, Microsoft Windows |
BSD
|
Nemerle.Peg |
[104] |
Recursive Descent + Pratt |
Nemerle |
separate |
all |
BSD
|
neotoma |
[105] |
Packrat |
Erlang |
separate |
all |
MIT
|
NPEG |
[106] |
Recursive Descent |
C# |
mixed |
all |
MIT
|
OMeta |
[107] |
Packrat (modified) |
JavaScript, Squeak |
mixed |
all |
MIT
|
Packrat |
[108] |
Packrat |
Scheme |
mixed |
all |
MIT
|
Pappy |
[109] |
Packrat |
Haskell |
mixed |
all |
Proprietary
|
parboiled |
[110] |
Recursive Descent |
Java, Scala |
mixed |
Java Virtual Machine |
Apache License 2.0
|
parsepp |
[111] |
? |
C++ |
mixed |
all |
Public Domain
|
Parsnip |
[112] |
Packrat |
C++ |
mixed |
Microsoft Windows |
GNU GPL
|
peg |
[113] |
Recursive Descent |
C |
mixed |
all |
MIT
|
PEG.js |
[114] |
Packrat |
JavaScript |
mixed |
all |
MIT
|
peg-parser |
[115] |
PEG parser interpreter |
Dylan |
separate |
all |
|
pegc |
[116] |
? |
C |
mixed |
all |
Public Domain
|
PetitParser |
[117] |
Packrat |
Smalltalk, Javascript |
mixed |
all |
MIT
|
PEGTL |
[118] |
Recursive Descent |
C++0x |
mixed |
POSIX |
MIT
|
PGE |
Parser Grammar Engine |
Recursive Descent |
Parrot bytecode |
mixed |
Parrot virtual machine |
Artistic 2.0
|
PyPy rlib |
[119] |
Packrat |
Python |
mixed |
all |
MIT
|
pyPEG |
[120] |
PEG parser interpreter, Packrat |
Python |
mixed |
all |
GNU GPL
|
Rats! |
[121] |
Packrat |
Java |
mixed |
Java Virtual Machine |
GNU LGPL
|
Spirit2 |
[122] |
Recursive Descent
|
C++ |
mixed |
all |
Boost
|
Treetop |
[123] |
Recursive Descent |
Ruby |
mixed |
all |
|
Yard |
[124] |
Recursive Descent |
C++ |
mixed |
all |
MIT or Public Domain
|
Waxeye |
[125] |
Packrat |
C, Java, JavaScript, Python, Ruby, Scheme |
separate |
all |
MIT
|
General Context-free, Conjuctive or Boolean Languages
Name |
Website |
Parsing Algorithm |
[Input Grammar Notation] |
Output Languages |
Grammar / Code |
Lexer |
Development Platform |
IDE |
License
|
ACCENT |
[126] |
Earley |
? |
C |
mixed |
external |
all |
No |
GNU GPL
|
APaGeD |
[127] |
GLR, LALR(1), LL(k) |
? |
D |
mixed |
generated |
all |
No |
Artistic
|
Bison |
[128] |
LALR, GLR |
YACC |
C, C++, Java |
mixed |
external |
all |
No |
GNU GPL
|
DMS Software Reengineering Toolkit |
[129] |
GLR |
? |
Parlanse |
mixed |
generated |
Microsoft Windows |
No |
proprietary
|
DParser |
[130] |
Scannerless GLR |
? |
C |
mixed |
No |
POSIX |
No |
BSD
|
Dypgen |
[131] |
runtime-extensible GLR |
? |
OCaml |
mixed |
generated |
all |
No |
CeCILL-B
|
Elkhound |
[132] |
GLR |
? |
C++, OCaml |
mixed |
external |
all |
No |
BSD
|
eu.h8me.Parsing |
[133] |
GLR |
? |
N/A (state machine is runtime generated) |
separate |
external |
.NET Framework |
No |
BSD
|
GDK |
[134] |
LALR(1), GLR |
? |
C, Lex, Haskell, HTML, Java, Object Pascal, Yacc |
mixed |
generated |
POSIX |
No |
MIT
|
Happy |
[135] |
LALR, GLR |
? |
Haskell |
mixed |
external |
all |
No |
BSD
|
Jison |
[136] |
LALR(1), LR(0), SLR(1) |
YACC |
Javascript |
mixed |
generated |
all |
No |
MIT
|
Laja |
[137] |
Scannerless, two phase |
Laja |
Java |
separate |
No |
all |
No |
GNU GPL
|
Scannerless Boolean Parser |
[138] |
? |
Scannerless GLR (Boolean grammars) |
Haskell, Java |
separate |
No |
Java Virtual Machine |
No |
BSD
|
SmaCC |
[139] |
GLR(1), LALR(1), LR(1) |
? |
Smalltalk |
mixed |
internal |
all |
Yes |
MIT
|
SPARK |
[140] |
Earley |
? |
Python |
mixed |
external |
all |
No |
MIT
|
Tom |
[141] |
GLR |
? |
C |
generated |
none |
all |
No |
proprietary
|
UltraGram |
[142] |
LALR, LR, GLR |
? |
C++, C#, Java, Visual Basic .NET |
separate |
generated |
Microsoft Windows |
Yes |
proprietary
|
Wormhole |
[143] |
Pruning, LR, GLR, Scannerless GLR |
? |
C, Python |
mixed |
No |
Microsoft Windows |
No |
MIT
|
Whale Calf |
[144] |
General Tabular, SLL(k), Linear Normal Form (Conjunctive grammars), LR, Binary Normal Form (Boolean grammars) |
? |
C++ |
separate |
external |
all |
No |
proprietary
|
See also
External links