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
Alex
[1]
DFA
Haskell
mixed
all
BSD
AustenX
[2]
DFA
Java
separate
all
BSD
C# Flex
[3]
DFA
C#
mixed
.NET CLR
GNU GPL
C# Lex
[4]
DFA
C#
mixed
.NET CLR
?
CookCC
[5]
DFA
Java
mixed
Java Virtual Machine
BSD
DFAlex
[6]
DFA
no code generation required
Java
Java
Apache License 2.0
Dolphin
[7]
DFA
C++
separate
all
Proprietary
flex
[8]
DFA table driven
C , C++
mixed
all
BSD
gelex
[9]
DFA
Eiffel
mixed
Eiffel
MIT
golex
[10]
DFA
Go
mixed
Go
BSD -style
gplex
[11]
DFA
C#
mixed
.NET CLR
BSD -like
JFlex
[12]
DFA
Java
mixed
Java Virtual Machine
GNU GPL
JLex
[13]
DFA
Java
mixed
Java Virtual Machine
BSD -like [14]
lex
[15]
DFA
C
mixed
POSIX
Proprietary , CDDL
lexertl
[16]
DFA
C++
all
GNU LGPL
Quex
[17]
DFA direct code
C , C++
mixed
all
GNU LGPL
Ragel
[18]
DFA
C , C++ , D , Go , Java , Objective-C , Ruby
mixed
all
GNU GPL
re2c
[19]
DFA direct code
C
mixed
all
Public domain
Deterministic context-free languages
Name
Website
Parsing algorithm
Input grammar notation
Output languages
Grammar, code
Lexer
Development platform
IDE
License
ANTLR4
[20]
LL(*)
EBNF
C# , Java , Python , JavaScript
mixed
generated
Java Virtual Machine
Yes
BSD
ANTLR3
[21]
LL(*)
EBNF
ActionScript , Ada95 , C , C++ , C# , Java , JavaScript , Objective-C , Perl , Python , Ruby
mixed
generated
Java Virtual Machine
Yes
BSD
APG
[22]
Recursive descent , Backtracking
ABNF
C , C++ , JavaScript , Java
separate
none
all
No
GNU GPL
AXE
[23]
Recursive descent
AXE/C++
C++11
mixed
none
any platform with standard C++11 compiler
No
Boost
Beaver
[24]
LALR(1)
EBNF
Java
mixed
external
Java Virtual Machine
No
BSD
Bison++
[25]
LALR(1)
?
C++
mixed
external
POSIX
No
GNU GPL
Bisonc++
[26]
LALR(1)
?
C++
mixed
external
POSIX
No
GNU GPL
BtYacc
[27]
Backtracking Bottom-up
?
C++
mixed
external
all
No
Public domain
byacc
[28]
LALR(1)
YACC
C
mixed
external
all
No
Public domain
BYACC/J
[29]
LALR(1)
?
C , Java
mixed
external
all
No
Public domain
CL-Yacc
[30]
LALR(1)
Lisp
Common Lisp
mixed
external
all
No
MIT
Coco/R
[31]
LL(1)
EBNF
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
[32]
LALR(1)
Java annotations
Java
mixed
generated
Java Virtual Machine
No
BSD
CppCC
[33]
LL(k)
?
C++
mixed
generated
POSIX
No
GNU GPL
CSP
[34]
LR(1)
?
C++
separate
generated
POSIX
No
Apache License 2.0
CUP
[35]
LALR(1)
?
Java
mixed
external
Java Virtual Machine
No
GNU GPL
Dragon
[36]
LR(1) , LALR(1)
?
C++ , Java
separate
generated
all
No
GNU GPL
eli
[37]
LALR(1)
?
C
mixed
generated
POSIX
No
GNU GPL , GNU LGPL
Essence
[38]
LR(???)
?
Scheme 48
mixed
external
all
No
BSD
Eto.Parse
[39]
LL(k)
BNF, EBNF or C#
N/A (state machine is runtime generated)
separate
internal
.NET Framework
No
MIT
eyapp
[40]
LALR(1)
?
Perl
mixed
external or generated
all
No
Perl
Frown
[41]
LALR(k)
?
Haskell 98
mixed
external
all
No
GNU GPL
geyacc
[42]
LALR(1)
?
Eiffel
mixed
external
all
No
MIT
GOLD
[43]
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
[44]
LALR(1)
YACC
C#
separate
external
Microsoft Windows
Yes
BSD
Grammatica
[45]
LL(k)
BNF dialect
C# , Java
separate
generated
Java Virtual Machine
No
GNU LGPL
HiLexed
[46]
LL(*)
EBNF or Java
Java
separate
internal
Java Virtual Machine
No
GNU LGPL
Hime Parser Generator
[47]
LR(1), LALR(1), LR(0)
BNF dialect
C# , Java
separate
generated
.NET Framework , Java Virtual Machine
No
GNU LGPL
Hyacc
[48]
LR(1), LALR(1), LR(0)
YACC
C
mixed
external
all
No
GNU GPL
Irony
[49]
LALR(1)
C#
N/A (state machine is runtime generated)
separate
internal
.NET Framework
Yes
MIT
iyacc
[50]
LALR(1)
YACC
Icon
mixed
external
all
No
GNU GPL
jacc
[51]
LALR(1)
?
Java
mixed
external
Java Virtual Machine
No
BSD
JavaCC
[52]
LL(k)
EBNF
Java , C++ , JavaScript (via GWT compiler)[ 1]
mixed
generated
Java Virtual Machine
Yes
BSD
jay
[53]
LALR(1)
YACC
C# , Java
mixed
none
Java Virtual Machine
No
BSD
JFLAP
[54]
LL(1) , LALR(1)
?
Java
?
?
Java Virtual Machine
Yes
?
JetPAG
[55]
LL(k)
?
C++
mixed
generated
all
No
GNU GPL
JS/CC
[56]
LALR(1)
EBNF
JavaScript , JScript , ECMAScript
mixed
internal
all
Yes
Artistic
KDevelop-PG-Qt
[57]
LL(1) , Backtracking , Shunting yard
?
C++
mixed
generated or external
all, KDE
No
GNU LGPL
Kelbt
[58]
Backtracking LALR(1)
?
C++
mixed
generated
POSIX
No
GNU GPL
kmyacc
[59]
LALR(1)
?
C , Java , Perl , JavaScript
mixed
external
all
No
GNU GPL
Lapg
[60]
LALR(1)
?
C , C++ , C# , Java , JavaScript
mixed
generated
Java Virtual Machine
No
GNU GPL
Lemon
[61]
LALR(1)
?
C
mixed
external
all
No
Public domain
LEPL
[62]
Recursive descent
Python
Python (no generation, library)
separate
none
all
No
MPL /GNU LGPL
Lime
[63]
LALR(1)
?
PHP
mixed
external
all
No
GNU GPL
LISA
[64]
LR(?) , LL(?) , LALR(?) , SLR(?)
?
Java
mixed
generated
Java Virtual Machine
Yes
Public domain
LLgen
[65]
LL(1)
?
C
mixed
external
POSIX
No
BSD
LLnextgen
[66]
LL(1)
?
C
mixed
external
all
No
GNU GPL
LLLPG
[67]
LL(k) + syntactic and semantic predicates
ANTLR-like
C#
mixed
generated (?)
.NET Framework , Mono
Visual Studio
GNU LGPL
LPG
[68]
Backtracking LALR(k)
?
Java
mixed
generated
Java Virtual Machine
No
EPL
Menhir
[69]
LR(1)
?
OCaml
mixed
generated
all
No
QPL
ML-Yacc
[70]
LALR(1)
?
ML
mixed
external
all
No
?
Monkey
[71]
LR(1)
?
Java
separate
generated
Java Virtual Machine
No
GNU GPL
Msta
[72]
LALR(k) , LR(k)
YACC , EBNF
C , C++
mixed
external or generated
POSIX , Cygwin
No
GNU GPL
MTP (More Than Parsing)
[73]
LL(1)
?
Java
separate
generated
Java Virtual Machine
No
GNU GPL
MyParser
[74]
LL(*)
Markdown
C++11
separate
internal
any platform with standard C++11 compiler
No
MIT License
NLT
[75]
GLR
C# /BNF -like
C#
mixed
mixed
.NET Framework
No
MIT
ocamlyacc
[76]
LALR(1)
?
OCaml
mixed
external
all
No
QPL
olex
[77]
LL(1)
?
C++
mixed
generated
all
No
GNU GPL
Parsec
https://wiki.haskell.org/Parsec ]
LL , Backtracking
?
Haskell
mixed
none
all
No
BSD
Parse::Yapp
[78]
LALR(1)
?
Perl
mixed
external
all
No
GNU GPL
Parser Objects
[79]
LL(k)
?
Java
mixed
?
Java Virtual Machine
No
zlib
PCCTS
[80]
LL
?
C , C++
?
?
all
No
?
PLY
[81]
LALR(1)
BNF
Python
mixed
generated
all
No
MIT License
PlyPlus
[82]
LALR(1)
EBNF
Python
separate
generated
all
No
MIT License
PRECC
[83]
LL(k)
?
C
separate
generated
DOS , POSIX
No
GNU GPL
QLALR
[84]
LALR(1)
?
C++
mixed
external
all
No
GNU GPL
RPATK
[85]
Recursive descent , Backtracking
BNF
C (no generation, library)
separate
none
all
No
GNU GPL
SableCC
[86]
LALR(1)
?
C , C++ , C# , Java , OCaml , Python
separate
generated
all
No
GNU LGPL
SLK
[87]
LL(k) LR(k)
EBNF
C , C++ , C# , Java
separate
external
all
No
Proprietary
SP (Simple Parser)
[88]
Recursive descent
Python
Python
separate
generated
all
No
GNU LGPL
Spirit
[89]
Recursive descent
?
C++
mixed
internal
all
No
Boost
Sprache
[90]
LL , Backtracking
C#
interpreted
mixed
internal
.NET Framework
No
MIT
Styx
[91]
LALR(1)
?
C , C++
separate
generated
all
No
GNU LGPL
Sweet Parser
[92]
LALR(1)
?
C++
separate
generated
Microsoft Windows
No
zlib
Tap
[93]
LL(1)
?
C++
mixed
generated
all
No
GNU GPL
TextTransformer
[94]
LL(k)
?
C++
mixed
generated
Microsoft Windows
Yes
Proprietary
TinyPG
[95]
LL(1)
?
C# , Visual Basic
?
?
Microsoft Windows
Yes
CPOL 1.0
Toy Parser Generator
[96]
Recursive descent
?
Python
mixed
generated
all
No
GNU LGPL
TP Yacc
[97]
LALR(1)
?
Turbo Pascal
mixed
external
all
Yes
GNU GPL
UniCC
[98]
LALR(1)
EBNF
C , target-language independent
mixed
generated
POSIX
No
Artistic 2.0
Whale
[99]
LR(?) , some conjunctive stuff, see Whale Calf
?
C++
mixed
external
all
No
Proprietary
wisent
[100]
LALR(1)
?
C++ , Java
mixed
external
all
No
GNU GPL
Yacc (AT&T) /Sun
[101] /[102]
LALR(1)
YACC
C
mixed
external
POSIX
No
CPL & CDDL
Yacc++
[103]
LR(1) , LALR(1)
YACC
C++ , C#
mixed
generated or external
all
No
Proprietary
Yapps
[104]
LL(1)
?
Python
mixed
generated
all
No
MIT
yecc
[105]
LALR(1)
?
Erlang
separate
generated
all
No
Erlang
Visual BNF
[106]
LR(1) , LALR(1)
?
C#
separate
generated
.NET Framework
Yes
Proprietary
YooParse
[107]
LR(1) , LALR(1)
?
C++
mixed
external
all
No
MIT
Parse
[108]
LR(1)
BNF in C++ types
?
?
none
C++11 compliant compiler
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
Arpeggio
[109]
PEG parser interpreter, Packrat
Python (no generation, interpreted)
mixed
all
MIT
AustenX
[110]
Packrat (modified)
Java
separate
all
BSD
Aurochs
[111]
Packrat
C , OCaml , Java
mixed
all
GNU GPL
CL-peg
[112]
Packrat
Common Lisp
mixed
all
MIT
Drat!
[113]
Packrat
D
mixed
all
GNU GPL
Frisby
[114]
Packrat
Haskell
mixed
all
BSD
grammar::peg
[115]
Packrat
Tcl
mixed
all
BSD
Grako
[116]
Packrat + Cut + Left Recursion
Python / C++ (beta)
separate
all
BSD
IronMeta
[117]
Packrat
C#
mixed
Microsoft Windows
BSD
Katahdin
[118]
Packrat (modified), mutating interpreter
C#
mixed
all
Public domain
Laja
[119]
2-phase scannerless top-down backtracking + runtime support
Java
separate
all
GNU GPL
lars::parser
[120]
Packrat (modified to support left-recursion and resolve grammar ambiguity)
C++
identical
all
GNU GPL , commercial license available on request
LPeg
[121]
Parsing Machine
Lua
mixed
all
MIT
Mouse
[122]
Recursive descent
Java
separate
Java Virtual Machine
Apache License 2.0
Narwhal
[123]
Packrat
C
mixed
POSIX , Microsoft Windows
BSD
Nemerle.Peg
[124]
Recursive descent + Pratt
Nemerle
separate
all
BSD
neotoma
[125]
Packrat
Erlang
separate
all
MIT
NPEG
[126]
Recursive descent
C#
mixed
all
MIT
OMeta
[127]
Packrat (modified, partial memoization)
JavaScript , Squeak , Python
mixed
all
MIT
PackCC
[128]
Packrat (modified)
C
mixed
all
MIT
Packrat
[129]
Packrat
Scheme
mixed
all
MIT
Pappy
[130]
Packrat
Haskell
mixed
all
Proprietary
parboiled
[131]
Recursive descent
Java , Scala
mixed
Java Virtual Machine
Apache License 2.0
Lambda PEG
[132]
Recursive descent
Java
mixed
Java Virtual Machine
Apache License 2.0
parsepp
[133]
Recursive descent
C++
mixed
all
Public domain
Parsnip
[134]
Packrat
C++
mixed
Microsoft Windows
GNU GPL
peg
[135]
Recursive descent
C
mixed
all
MIT
PEG.js
[136]
Packrat (partial memoization)
JavaScript
mixed
all
MIT
peg-parser
[137]
PEG parser interpreter
Dylan
separate
all
Pegasus
[138]
Recursive descent / Packrat (selectively)
C#
mixed
Microsoft Windows
MIT
pegc
[139]
Recursive descent
C
mixed
all
Public domain
PetitParser
[140]
Packrat
Smalltalk , Java , Dart
mixed
all
MIT
PEGTL
[141]
Recursive descent
C++11
mixed
all
MIT
PGE
Parser Grammar Engine
Hybrid recursive descent / operator precedence[ 2]
Parrot bytecode
mixed
Parrot virtual machine
Artistic 2.0
PyPy rlib
[142]
Packrat
Python
mixed
all
MIT
pyPEG
[143]
PEG parser interpreter, Packrat
Python
mixed
all
GNU GPL
Rats!
[144]
Packrat
Java
mixed
Java Virtual Machine
GNU LGPL
Spirit2
[145]
Recursive descent
C++
mixed
all
Boost
textX
[146]
PEG parser interpreter, Packrat
Python (no generation, interpreted)
separate
all
MIT
Treetop
[147]
Recursive descent
Ruby
mixed
all
MIT
Yard
[148]
Recursive descent
C++
mixed
all
MIT or Public domain
Waxeye
[149]
Packrat
C , Java , JavaScript , Python , Ruby , Scheme
separate
all
MIT
PHP PEG
[150]
? (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
[151]
Earley
YACC variant
C
mixed
external
all
No
GNU GPL
APaGeD
[152]
GLR , LALR(1) , LL(k)
?
D
mixed
generated
all
No
Artistic
Bison
[153]
LALR(1) , LR(1) , IELR(1) , GLR
YACC
C , C++ , Java , XML
mixed (except XML)
external
all
No
GNU GPL
DMS Software Reengineering Toolkit
[154]
GLR
?
Parlanse
mixed
generated
Microsoft Windows
No
Proprietary
DParser
[155]
Scannerless GLR
?
C
mixed
scannerless
POSIX
No
BSD
Dypgen
[156]
runtime-extensible GLR
?
OCaml
mixed
generated
all
No
CeCILL-B
E3
[157]
Earley
?
OCaml
mixed
external, or scannerless
all
No
?
Elkhound
[158]
GLR
?
C++ , OCaml
mixed
external
all
No
BSD
eu.h8me.Parsing
[159]
GLR
?
N/A (state machine is runtime generated)
separate
external
.NET Framework
No
BSD
GDK
[160]
LALR(1) , GLR
?
C , Lex , Haskell , HTML , Java , Object Pascal , Yacc
mixed
generated
POSIX
No
MIT
Happy
[161]
LALR , GLR
?
Haskell
mixed
external
all
No
BSD
Hime Parser Generator
[162]
GLR
?
C# , Java
separate
generated
.NET Framework , Java Virtual Machine
No
GNU LGPL
IronText Library
[163]
LALR(1) , GLR
C#
C#
mixed
generated or external
.NET Framework
No
Apache License 2.0
Jison
[164]
LALR(1) , LR(0) , SLR(1)
YACC
JavaScript , C# , PHP
mixed
generated
all
No
MIT
Laja
[165]
Scannerless, two phase
Laja
Java
separate
scannerless
all
No
GNU GPL
ModelCC
[166]
Earley
Annotated class model
Java
generated
generated
all
No
BSD
P1
[167]
Combinators
BNF-like
OCaml
mixed
external, or scannerless
all
No
?
P3
[168]
Earley/combinators
BNF-like
OCaml
mixed
external, or scannerless
all
No
?
P4
[169]
Earley/combinators, infinitary CFGs
BNF-like
OCaml
mixed
external, or scannerless
all
No
?
Scannerless Boolean Parser
[170]
Scannerless GLR (Boolean grammars )
?
Haskell , Java
separate
scannerless
Java Virtual Machine
No
BSD
SDF /SGLR
[171]
Scannerless GLR
SDF
C , Java
separate
scannerless
all
Yes
BSD
SmaCC
[172]
GLR(1) , LALR(1) , LR(1)
?
Smalltalk
mixed
internal
all
Yes
MIT
SPARK
[173]
Earley
?
Python
mixed
external
all
No
MIT
Tom
[174]
GLR
?
C
generated
none
all
No
"No licensing or copyright restrictions"
UltraGram
[175]
LALR , LR , GLR
?
C++ , C# , Java , Visual Basic .NET
separate
generated
Microsoft Windows
Yes
Proprietary
Wormhole
[176]
Pruning , LR , GLR , Scannerless GLR
?
C , Python
mixed
scannerless
Microsoft Windows
No
MIT
Whale Calf
[177]
General tabular, SLL(k) , Linear normal form (Conjunctive grammars ), LR , Binary normal form (Boolean grammars )
?
C++
separate
external
all
No
Proprietary
See also
References
External links