From Wikipedia, the free encyclopedia
This is a list of notable lexer generators and parser generators for various language classes.
Regular languages
Name
Website
Lexer algorithm
Output languages
Grammar, code
Development platform
License
DFASTAR
[1]
DFA matrix tables , DFA direct code
C++
separate
Windows
BSD
Dolphin
[2]
DFA
C++
separate
all
Proprietary
flex
[3]
DFA table driven
C , C++
mixed
all
BSD
Alex
[4]
DFA
Haskell
mixed
all
BSD
JFlex
[5]
DFA
Java
mixed
Java Virtual Machine
GNU GPL
C# Flex
[6]
DFA
C#
mixed
.NET CLR
GNU GPL
JLex
[7]
DFA
Java
mixed
Java Virtual Machine
BSD -like [8]
C# Lex
[9]
DFA
C#
mixed
.NET CLR
?
CookCC
[10]
DFA
Java
mixed
Java Virtual Machine
BSD
gelex
[11]
DFA
Eiffel
mixed
Eiffel
MIT
gplex
[12]
DFA
C#
mixed
.NET CLR
BSD -like
lex
[13]
DFA
C
mixed
POSIX
Proprietary , CDDL
Quex
[14]
DFA direct code
C , C++
mixed
all
GNU LGPL
Ragel
[15]
DFA
C , C++ , D , Go , Java , Objective-C , Ruby
mixed
all
GNU GPL
re2c
[16]
DFA direct code
C
mixed
all
MIT
Russ Cox's regular expression implementations
[17]
DFA , NFA
Bytecode , x86 assembly language , interpreted
separate
all
MIT
lexertl
[18]
DFA
C++
all
GNU LGPL
Deterministic context-free languages
Name
Website
Parsing algorithm
Input grammar notation
Output languages
Grammar, code
Lexer
Development platform
IDE
License
ANTLR
[19]
LL(*)
EBNF
ActionScript , Ada95 , C , C++ , C# , Java , JavaScript , Objective-C , Perl , Python , Ruby
mixed
generated
Java Virtual Machine
Yes
BSD
APG
[20]
Recursive descent , Backtracking
ABNF
C , C++ , JavaScript , Java
separate
none
all
No
GNU GPL
AXE
[21]
Recursive descent
AXE/C++
C++11
mixed
none
any platform with standard C++11 compiler
No
Boost
Beaver
[22]
LALR(1)
EBNF
Java
mixed
external
Java Virtual Machine
No
BSD
Bison++
[23]
LALR(1)
?
C++
mixed
external
POSIX
No
GNU GPL
Bisonc++
[24]
LALR(1)
?
C++
mixed
external
POSIX
No
GNU GPL
BtYacc
[25]
Backtracking Bottom-up
?
C++
mixed
external
all
No
Public domain
byacc
[26]
LALR(1)
YACC
C
mixed
external
all
No
Public domain
BYACC/J
[27]
LALR(1)
?
C , Java
mixed
external
all
No
Public domain
CL-Yacc
[28]
LALR(1)
?
Common Lisp
mixed
external
all
No
MIT
Coco/R
[29]
LL(1)
?
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
[30]
LALR(1)
Java annotations
Java
mixed
generated
Java Virtual Machine
No
BSD
CppCC
[31]
LL(k)
?
C++
mixed
generated
POSIX
No
GNU GPL
CSP
[32]
LR(1)
?
C++
separate
generated
POSIX
No
Apache License 2.0
CUP
[33]
LALR(1)
?
Java
mixed
external
Java Virtual Machine
No
GNU GPL
Dragon
[34]
LR(1) , LALR(1)
?
C++ , Java
separate
generated
all
No
GNU GPL
eli
[35]
LALR(1)
?
C
mixed
generated
POSIX
No
GNU GPL , GNU LGPL
Essence
[36]
LR(???)
?
Scheme 48
mixed
external
all
No
BSD
eyapp
[37]
LALR(1)
?
Perl
mixed
external or generated
all
No
Perl
Frown
[38]
LALR(k)
?
Haskell 98
mixed
external
all
No
GNU GPL
geyacc
[39]
LALR(1)
?
Eiffel
mixed
external
all
No
MIT
GOLD
[40]
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
Modified Zlib
GPPG
[41]
LALR(1)
YACC
C#
separate
external
Microsoft Windows
Yes
BSD
Grammatica
[42]
LL(k)
BNF dialect
C# , Java
separate
generated
Java Virtual Machine
No
GNU LGPL
HiLexed
[43]
LL(*)
EBNF or Java
Java
separate
internal
Java Virtual Machine
No
GNU LGPL
Hime Parser Generator
[44]
LR(1), LALR(1), LR(0), LR(*)
BNF dialect
C#
separate
generated
.NET Framework
No
GNU LGPL
Hyacc
[45]
LR(1), LALR(1), LR(0)
YACC
C
mixed
external
all
No
GNU GPL
jacc
[46]
LALR(1)
?
Java
mixed
external
Java Virtual Machine
No
BSD
JavaCC
[47]
LL(k)
EBNF
Java , C++ (beta)
mixed
generated
Java Virtual Machine
Yes
BSD
jay
[48]
LALR(1)
YACC
C# , Java
mixed
none
Java Virtual Machine
No
BSD
JFLAP
[49]
LL(1) , LALR(1)
?
Java
?
?
Java Virtual Machine
Yes
?
JetPAG
[50]
LL(k)
?
C++
mixed
generated
all
No
GNU GPL
JS/CC
[51]
LALR(1)
EBNF
JavaScript , JScript , ECMAScript
mixed
internal
all
Yes
Artistic
KDevelop-PG-Qt
[52]
LL(1) , Backtracking , Shunting yard
?
C++
mixed
generated or external
all, KDE
No
GNU LGPL
Kelbt
[53]
Backtracking LALR(1)
?
C++
mixed
generated
POSIX
No
GNU GPL
kmyacc
[54]
LALR(1)
?
C , Java , Perl , JavaScript
mixed
external
all
No
GNU GPL
Lapg
[55]
LALR(1)
?
C , C++ , C# , Java , JavaScript
mixed
generated
Java Virtual Machine
No
GNU GPL
Lemon
[56]
LALR(1)
?
C
mixed
external
all
No
Public domain
LEPL
[57]
Recursive descent
Python
Python (no generation, library)
separate
none
all
No
MPL /GNU LGPL
Lime
[58]
LALR(1)
?
PHP
mixed
external
all
No
GNU GPL
LISA
[59]
LR(?) , LL(?) , LALR(?) , SLR(?)
?
Java
mixed
generated
Java Virtual Machine
Yes
Public domain
LPG
[60]
Backtracking LALR(k)
?
Java
mixed
generated
Java Virtual Machine
No
EPL
LLgen
[61]
LL(1)
?
C
mixed
external
POSIX
No
BSD
LLnextgen
[62]
LL(1)
?
C
mixed
external
all
No
GNU GPL
LRSTAR
[63]
LALR(1) , LALR(k)
TBNF
C++ , Visual C++
separate
Includes DFASTAR
Microsoft Windows
Microsoft Visual Studio
BSD
Menhir
[64]
LR(1)
?
OCaml
mixed
generated
all
No
QPL
Mini Parser Generator
[65]
?
?
Python
mixed
generated
all
No
GNU LGPL
ML-Yacc
[66]
LALR(1)
?
ML
mixed
external
all
No
?
Monkey
[67]
LR(1)
?
Java
separate
generated
Java Virtual Machine
No
GNU GPL
More Than Parsing
[68]
LL(1)
?
Java
separate
generated
Java Virtual Machine
No
GNU GPL
Msta
[69]
LALR(k) , LR(k)
YACC , EBNF
C , C++
mixed
external or generated
POSIX , Cygwin
No
GNU GPL
ocamlyacc
[70]
LALR(1)
?
OCaml
mixed
external
all
No
QPL
olex
[71]
LL(1)
?
C++
mixed
generated
all
No
GNU GPL
Parsec
[72]
LL , Backtracking
?
Haskell
mixed
none
all
No
BSD
Parse::Yapp
[73]
LALR(1)
?
Perl
mixed
external
all
No
GNU GPL
Parser Objects
?
LL(k)
?
Java
mixed
?
Java Virtual Machine
No
zlib
PCCTS
[74]
LL
?
C , C++
?
?
all
No
?
PLY
[75]
LALR(1)
?
Python
mixed
generated
all
No
MIT License
PlyPlus
[76]
LALR(1)
EBNF
Python
separate
generated
all
No
MIT License
PRECC
[77]
LL(k)
?
C
separate
generated
DOS , POSIX
No
GNU GPL
QLALR
[78]
LALR(1)
?
C++
mixed
external
all
No
GNU GPL
RPATK
[79]
Recursive descent , Backtracking
BNF
C (no generation, library)
separate
none
all
No
GNU GPL
SableCC
[80]
LALR(1)
?
C , C++ , C# , Java , OCaml , Python
separate
generated
all
No
GNU LGPL
Simple Parser
[81]
Recursive descent
Python
Python
separate
generated
all
No
GNU LGPL
SLK
[82]
LL(k)
?
C , C++ , C# , Java
separate
external
all
No
Proprietary
Spirit
[83]
Recursive descent
?
C++
mixed
internal
all
No
Boost
Styx
[84]
LALR(1)
?
C , C++
separate
generated
all
No
GNU LGPL
Sweet Parser
[85]
LALR(1)
?
C++
separate
generated
Microsoft Windows
No
zlib
Tap
[86]
LL(1)
?
C++
mixed
generated
all
No
GNU GPL
TextTransformer
[87]
LL(k)
?
C++
mixed
generated
Microsoft Windows
Yes
Proprietary
TinyPG
[88]
LL(1)
?
C# , Visual Basic
?
?
Microsoft Windows
Yes
CPOL 1.0
Toy Parser Generator
[89]
Recursive descent
?
Python
mixed
generated
all
No
GNU LGPL
TP Yacc
[90]
LALR(1)
?
Turbo Pascal
mixed
external
all
Yes
GNU GPL
UniCC
[91]
LALR(1)
EBNF
C , target-language independent
mixed
generated
POSIX
No
Artistic 2.0
Whale
[92]
LR(?) , some conjunctive stuff, see Whale Calf
?
C++
mixed
external
all
No
Proprietary
Wisent
[93]
LALR(1)
?
C++ , Java
mixed
external
Java Virtual Machine
No
GNU GPL
Yacc (AT&T) /Sun
[94] /[95]
LALR(1)
YACC
C
mixed
external
POSIX
No
CPL & CDDL
Yacc++
[96]
LR(1) , LALR(1)
YACC
C++ , C#
mixed
generated or external
all
No
Proprietary
Yapps
[97]
LL(1)
?
Python
mixed
generated
all
No
MIT
yecc
[98]
LALR(1)
?
Erlang
separate
generated
all
No
Erlang
VisualLangLab
[99]
LL(*)
visual tree (JTree )
All JVM Languages , though Scala is particularly well supported because of its pattern matching capabilities
mixed
generated
Scala
Yes
GNU GPL
Visual BNF
[100]
LR(1) , LALR(1)
?
C#
separate
generated
.NET Framework
Yes
Proprietary
Visual Parse++
[101]
LALR(???)
?
C , C++ , C# , Java
separate
generated
Microsoft Windows
Yes
Proprietary
YooParse
[102]
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
[103]
Packrat
C , OCaml , Java
mixed
all
GNU GPL
CL-peg
[104]
Packrat
Common Lisp
mixed
all
MIT
Drat!
[105]
Packrat
D
mixed
all
GNU GPL
Frisby
[106]
Packrat
Haskell
mixed
all
BSD
grammar::peg
[107]
Packrat
Tcl
mixed
all
BSD
IronMeta
[108]
Packrat
C#
mixed
Microsoft Windows
BSD
Katahdin
[109]
Packrat (modified), mutating interpreter
C#
mixed
all
Public domain
Laja
[110]
2-phase scannerless top-down backtracking + runtime support
Java
separate
all
GNU GPL
LPeg
[111]
Parsing Machine
Lua
mixed
all
MIT
Mouse
[112]
Recursive descent
Java
separate
Java Virtual Machine
Apache License 2.0
Narwhal
[113]
Packrat
C
mixed
POSIX , Microsoft Windows
BSD
Nemerle.Peg
[114]
Recursive descent + Pratt
Nemerle
separate
all
BSD
neotoma
[115]
Packrat
Erlang
separate
all
MIT
NPEG
[116]
Recursive descent
C#
mixed
all
MIT
OMeta
[117]
Packrat (modified)
JavaScript , Squeak , Python
mixed
all
MIT
Packrat
[118]
Packrat
Scheme
mixed
all
MIT
Pappy
[119]
Packrat
Haskell
mixed
all
Proprietary
parboiled
[120]
Recursive descent
Java , Scala
mixed
Java Virtual Machine
Apache License 2.0
parsepp
[121]
?
C++
mixed
all
Public domain
Parsnip
[122]
Packrat
C++
mixed
Microsoft Windows
GNU GPL
peg
[123]
Recursive descent
C
mixed
all
MIT
PEG.js
[124]
Packrat
JavaScript
mixed
all
MIT
peg-parser
[125]
PEG parser interpreter
Dylan
separate
all
Pegasus
[126]
Recursive descent / Packrat (selectively)
C#
mixed
Microsoft Windows
MIT
pegc
[127]
?
C
mixed
all
Public domain
PetitParser
[128]
Packrat
Smalltalk , JavaScript
mixed
all
MIT
PEGTL
[129]
Recursive descent
C++0x
mixed
POSIX
MIT
PGE
Parser Grammar Engine
Hybrid recursive descent / operator precedence[ 1]
Parrot bytecode
mixed
Parrot virtual machine
Artistic 2.0
PyPy rlib
[130]
Packrat
Python
mixed
all
MIT
pyPEG
[131]
PEG parser interpreter, Packrat
Python
mixed
all
GNU GPL
Rats!
[132]
Packrat
Java
mixed
Java Virtual Machine
GNU LGPL
Spirit2
[133]
Recursive descent
C++
mixed
all
Boost
Treetop
[134]
Recursive descent
Ruby
mixed
all
MIT
Yard
[135]
Recursive descent
C++
mixed
all
MIT or Public domain
Waxeye
[136]
Packrat
C , Java , JavaScript , Python , Ruby , Scheme
separate
all
MIT
PHP PEG
[137]
? (PEG Parser?)
PHP
mixed
all
BSD
General context-free, conjunctive or boolean languages
Name
Website
Parsing algorithm
Input grammar notation
Output languages
Grammar, code
Lexer
Development platform
IDE
License
ACCENT
[138]
Earley
?
C
mixed
external
all
No
GNU GPL
APaGeD
[139]
GLR , LALR(1) , LL(k)
?
D
mixed
generated
all
No
Artistic
Bison
[140]
LALR(1) , LR(1) , IELR(1) , GLR
YACC
C , C++ , Java
mixed
external
all
No
GNU GPL
DMS Software Reengineering Toolkit
[141]
GLR
?
Parlanse
mixed
generated
Microsoft Windows
No
Proprietary
DParser
[142]
Scannerless GLR
?
C
mixed
scannerless
POSIX
No
BSD
Dypgen
[143]
runtime-extensible GLR
?
OCaml
mixed
generated
all
No
CeCILL-B
Elkhound
[144]
GLR
?
C++ , OCaml
mixed
external
all
No
BSD
eu.h8me.Parsing
[145]
GLR
?
N/A (state machine is runtime generated)
separate
external
.NET Framework
No
BSD
GDK
[146]
LALR(1) , GLR
?
C , Lex , Haskell , HTML , Java , Object Pascal , Yacc
mixed
generated
POSIX
No
MIT
Happy
[147]
LALR , GLR
?
Haskell
mixed
external
all
No
BSD
Hime Parser Generator
[148]
GLR
?
C#
separate
generated
.NET Framework
No
GNU LGPL
Jison
[149]
LALR(1) , LR(0) , SLR(1)
YACC
JavaScript
mixed
generated
all
No
MIT
Laja
[150]
Scannerless, two phase
Laja
Java
separate
scannerless
all
No
GNU GPL
Scannerless Boolean Parser
[151]
Scannerless GLR (Boolean grammars )
?
Haskell , Java
separate
scannerless
Java Virtual Machine
No
BSD
SDF /SGLR
[152]
Scannerless GLR
SDF
C , Java
separate
scannerless
all
Yes
BSD
SmaCC
[153]
GLR(1) , LALR(1) , LR(1)
?
Smalltalk
mixed
internal
all
Yes
MIT
SPARK
[154]
Earley
?
Python
mixed
external
all
No
MIT
Tom
[155]
GLR
?
C
generated
none
all
No
"No licensing or copyright restrictions"
UltraGram
[156]
LALR , LR , GLR
?
C++ , C# , Java , Visual Basic .NET
separate
generated
Microsoft Windows
Yes
Proprietary
Wormhole
[157]
Pruning , LR , GLR , Scannerless GLR
?
C , Python
mixed
scannerless
Microsoft Windows
No
MIT
Whale Calf
[158]
General tabular, SLL(k) , Linear normal form (Conjunctive grammars ), LR , Binary normal form (Boolean grammars )
?
C++
separate
external
all
No
Proprietary
See also
Notes
^ "Parrot: Grammar Engine" . The Parrot Foundation. 2011. "PGE rules provide the full power of recursive descent parsing and operator precedence parsing."
External links