Name | Parsing algorithm | Input grammar notation | Output languages | Grammar, code | Lexer | Development platform | IDE | License |
AGL | GLR | EBNF | Generated at runtime | | none | Any Kotlin target platform | | , Apache 2.0 |
ANTLR4 | ALL | EBNF | C#, Java, Python, JavaScript, C++, Swift, Go, PHP | | generated | | | , BSD |
ANTLR3 | LL | EBNF | ActionScript, Ada95, C, C++, C#, Java, JavaScript, Objective-C, Perl, Python, Ruby | | generated | | | , BSD |
APG | Recursive descent, backtracking | ABNF | C, C++, JavaScript, Java | | none | | | , GNU GPL |
AXE | Recursive descent | AXE/C++ | C++17, C++11 | | none | | | , Boost |
Beaver | LALR | EBNF | Java | | external | | | , BSD |
Belr | Recursive descent | ABNF | C++17, C++11 | | included | | | , GNU GPL, proprietary |
Bison | LALR, LR, IELR, GLR | Yacc | C, C++, Java | | external | | | , GNU GPL with exception |
Bison++ | LALR | ? | C++ | | external | | | , GNU GPL |
Bisonc++ | LALR | ? | C++ | | external | | | , GNU GPL |
Booze-tools | LALR or LR canonical or minimal | BNF with macros in place of EBNF | State machine can be runtime-generated or saved as JSON | , separable | included | | | , public domain |
BtYacc | Backtracking Bottom-up | ? | C++ | | external | | | , public domain |
byacc | LALR | Yacc | C | | external | | | , public domain |
BYACC/J | LALR | Yacc | C, Java | | external | | | , public domain |
CL-Yacc | LALR | Lisp | Common Lisp | | external | | | , MIT |
Coco/R | LL | EBNF | C, C++, C#, F#, Java, Ada, Object Pascal, Delphi, Modula-2, Oberon, Ruby, Swift, Unicon, Visual Basic.NET | | generated | | | , GNU GPL |
CookCC | LALR | Java annotations | Java | | generated | | | , Apache 2.0 |
CppCC | LL | ? | C++ | | generated | | | , GNU GPL |
CSP | LR | ? | C++ | | generated | | | , Apache 2.0 |
CUP | LALR | ? | Java | | external | | | , BSD-like |
Dragon | LR, LALR | ? | C++, Java | | generated | | | , GNU GPL |
eli | LALR | ? | C | | generated | | | , GNU GPL, GNU LGPL |
Essence | LR | ? | Scheme 48 | | external | | | , BSD |
Eto.Parse | LL | BNF, EBNF or C# | N/A | | internal | | | , MIT |
eyapp | LALR | ? | Perl | | external or generated | | | , Artistic |
Frown | LALR | ? | Haskell 98 | | external | | | , GNU GPL |
geyacc | LALR | ? | Eiffel | | external | | | , MIT |
GOLD | LALR | BNF | x86 assembly language, ANSI C, C#, D, Java, Pascal, Object Pascal, Python, Visual Basic 6, Visual Basic.NET, Visual C++ | | generated | | | , zlib modified |
GPPG | LALR | Yacc | C# | | external | | | , BSD |
Grammatica | LL | BNF dialect | C#, Java | | generated | | | , BSD |
HiLexed | LL | EBNF or Java | Java | | internal | | | , GNU LGPL |
Hime Parser Generator | LALR, GLR | BNF dialect | C#, Java, Rust | | generated | | | , GNU LGPL |
Hyacc | LR, LALR, LR | Yacc | C | | external | | | , GNU GPL |
Irony | LALR | C# | N/A | | internal | | | , MIT |
iyacc | LALR | Yacc | Icon | | external | | | , GNU LGPL |
jacc | LALR | ? | Java | | external | | | , BSD |
JavaCC | LL | EBNF | Java, C++, JavaScript | | generated | | | , BSD |
jay | LALR | Yacc | C#, Java | | none | | | , BSD |
JFLAP | LL, LALR | ? | Java | ? | ? | | | ? |
JetPAG | LL | ? | C++ | | generated | | | , GNU GPL |
JS/CC | LALR | EBNF | JavaScript, JScript, ECMAScript | | internal | | | , BSD |
KDevelop-PG-Qt | LL, backtracking, shunting-yard | ? | C++ | | generated or external | | | , GNU LGPL |
Kelbt | Backtracking LALR | ? | C++ | | generated | | | , GNU GPL |
kmyacc | LALR | ? | C, Java, Perl, JavaScript | | external | | | , GNU GPL |
Lapg | LALR | ? | C, C++, C#, Java, JavaScript | | generated | | | , GNU GPL |
Lark | LALR, Earley, CYK | EBNF | Python | | none | | | , MIT |
Lemon | LALR | ? | C | | external | | | , public domain |
LEPL | Recursive descent | Python | Python | | none | | | , MPL, GNU LGPL |
Lime | LALR | ? | PHP | | external | | | , GNU GPL |
LISA | LR, LL, LALR, SLR | ? | Java | | generated | | | , public domain |
LLgen | LL | ? | C | | external | | | , BSD |
LLnextgen | LL | ? | C | | external | | | , GNU GPL |
LLLPG | LL + syntactic and semantic predicates | ANTLR-like | C# | | generated | | | , GNU LGPL |
LPG | Backtracking LALR | ? | Java | | generated | | | , EPL |
LRX parser generator | LALR, LR | YACC, ANTLR, EBNF | C++ | separated | generated | Windows | | BSD |
Menhir | LR | ? | OCaml | | generated | | | , QPL |
ML-Yacc | LALR | ? | ML | | external | | | ? |
Monkey | LR | ? | Java | | generated | | | , GNU GPL |
Msta | LALR, LR | YACC, EBNF | C, C++ | | external or generated | | | , GNU GPL |
MTP | LL | ? | Java | | generated | | | , GNU GPL |
MyParser | LL | Markdown | C++11 | | internal | | | , MIT |
NLT | GLR | C#/BNF-like | C# | | mixed | | | , MIT |
ocamlyacc | LALR | ? | OCaml | | external | | | , QPL |
olex | LL | ? | C++ | | generated | | | , GNU GPL |
parglare | Scannerless LALR/SLR/GLR | BNF-like, Python | N/A | | none | | | , MIT |
Parsec | LL, backtracking | Haskell | Haskell | | none | | | , BSD |
Parse::Yapp | LALR | ? | Perl | | external | | | , GNU GPL |
Parser Objects | LL | ? | Java | | ? | | | , zlib |
PCCTS | LL | ? | C, C++ | ? | ? | | | ? |
PLY | LALR | BNF | Python | | generated | | | , MIT |
PlyPlus | LALR | EBNF | Python | | generated | | | , MIT |
PRECC | LL | ? | C | | generated | | | , GNU GPL |
QLALR | LALR | ? | C++ | | external | | | , GNU GPL |
RPATK | Recursive descent, backtracking | BNF | C | | none | | | , GNU GPL |
SableCC | LALR | ? | C, C++, C#, Java, OCaml, Python | | generated | | | , GNU LGPL |
SLK | LL LR LALR | EBNF | C, C++, C#, Java, JavaScript | | external | | | SLK |
SP | Recursive descent | Python | Python | | generated | | | , GNU LGPL |
Spirit | Recursive descent | ? | C++ | | internal | | | , Boost |
Sprache | LL, backtracking | C# | interpreted | | internal | | | , MIT |
Styx | LALR | ? | C, C++ | | generated | | | , GNU LGPL |
Sweet Parser | LALR | ? | C++ | | generated | | | , zlib |
Tap | LL | ? | C++ | | generated | | | , GNU GPL |
TextTransformer | LL | ? | C++ | | generated | | | |
TinyPG | LL | ? | C#, Visual Basic | ? | ? | | | , CPOL 1.0 |
Toy Parser Generator | Recursive descent | ? | Python | | generated | | | , GNU LGPL |
TP Yacc | LALR | ? | Turbo Pascal | | external | | | , GNU GPL |
Tunnel Grammar Studio | Recursive descent, backtracking | ABNF | C++ | | generated | | | |
UltraGram | LALR, LR, GLR | BNF | C++, Java, C#, Visual Basic.NET | | external | | | , public domain |
UniCC | LALR | EBNF | C, C++, Python, JavaScript, JSON, XML | | generated | | | , BSD |
UrchinCC | LL | ? | Java | ? | generated | | | ? |
Whale | LR, some conjunctive stuff, see Whale Calf | ? | C++ | | external | | | |
wisent | LALR | ? | C++, Java | | external | | | , GNU GPL |
Yacc AT&T/Sun | LALR | Yacc | C | | external | | | , CPL & CDDL |
Yacc++ | LR, LALR | Yacc | C++, C# | | generated or external | | | |
Yapps | LL | ? | Python | | generated | | | , MIT |
yecc | LALR | ? | Erlang | | generated | | | , Apache 2.0 |
Visual BNF | LR, LALR | ? | C# | | generated | | | |
YooParse | LR, LALR | ? | C++ | | external | | | , MIT |
| LR | BNF in C++ types | ? | ? | none | | | , MIT |
GGLL | LL | Graph | Java | | generated | | | , MIT |
Product | Parsing algorithm | Input grammar notation | Output languages | Grammar, code | Lexer | Development platform | IDE | License |
Name | Parsing algorithm | Output languages | Grammar, code | Development platform | License |
Arpeggio | PEG parser interpreter, Packrat | Python | | | , MIT |
AustenX | Packrat | Java | | | , BSD |
Aurochs | Packrat | C, OCaml, Java | | | , GNU GPL |
BNFlite | Recursive descent | C++ | | | , MIT |
Canopy | Packrat | Java, JavaScript, Python, Ruby | | | , GNU GPL |
CL-peg | Packrat | Common Lisp | | | , MIT |
Drat! | Packrat | D | | | , GNU GPL |
Frisby | Packrat | Haskell | | | , BSD |
grammar::peg | Packrat | Tcl | | | , BSD |
Grako | Packrat + Cut + Left Recursion | Python, C++ | | | , BSD |
IronMeta | Packrat | C# | | | , BSD |
Katahdin | Packrat, mutating interpreter | C# | | | , public domain |
Laja | 2-phase scannerless top-down backtracking + runtime support | Java | | | , GNU GPL |
lars::Parser | Packrat | C++ | Identical | | , BSD |
LPeg | Parsing machine | Lua | | | , MIT |
lug | Parsing machine | C++17 | | | , MIT |
Mouse | Recursive descent | Java | | | , Apache 2.0 |
Narwhal | Packrat | C | | | , BSD |
Nearley | Earley | JavaScript | | | , MIT |
Nemerle.Peg | Recursive descent + Pratt | Nemerle | | | , BSD |
neotoma | Packrat | Erlang | | | , MIT |
NPEG | Recursive descent | C# | | | , MIT |
OMeta | Packrat | JavaScript, Squeak, Python | | | , MIT |
PackCC | Packrat | C | | | , MIT |
Packrat | Packrat | Scheme | | | , MIT |
Pappy | Packrat | Haskell | | | , BSD |
parboiled | Recursive descent | Java, Scala | | | , Apache 2.0 |
Lambda PEG | Recursive descent | Java | | | , Apache 2.0 |
parsepp | Recursive descent | C++ | | | , public domain |
Parsnip | Packrat | C++ | | | , GNU GPL |
peg | Recursive descent | C | | | , MIT |
PEG.js | Packrat | JavaScript | | | , MIT |
peg-parser | PEG parser interpreter | Dylan | | | ? |
Pegasus | Recursive descent, Packrat | C# | | | , MIT |
pegc | Recursive descent | C | | | , public domain |
pest | Recursive descent | Rust | | | , MPL |
PetitParser | Packrat | Smalltalk, Java, Dart | | | , MIT |
PEGTL | Recursive descent | C++11 | | | , MIT |
Parser Grammar Engine | Hybrid recursive descent / operator precedence | Parrot bytecode | | | , Artistic 2.0 |
PyPy rlib | Packrat | Python | | | , MIT |
pyPEG | PEG parser interpreter, Packrat | Python | | | , GNU GPL |
Rats! | Packrat | Java | | | , GNU LGPL |
Spirit2 | Recursive descent | C++ | | | , Boost |
TatSu | PEG parser interpreter, Packrat | Python | ? | | |
textX | PEG parser interpreter, Packrat | Python | | | , MIT |
Treetop | Recursive descent | Ruby | | | , MIT |
Yard | Recursive descent | C++ | | | , MIT or public domain |
Waxeye | Parsing machine | C, Java, JavaScript, Python, Racket, Ruby | | | , MIT |
PHP PEG | PEG Parser? | PHP | | | , BSD |
Name | Parsing algorithm | Input grammar notation | Output languages | Grammar, code | Lexer | Development platform | IDE | License |
ACCENT | Earley | Yacc variant | C | | external | | | , GNU GPL |
APaGeD | GLR, LALR, LL | ? | D | | generated | | | , Artistic |
Bison | LALR, LR, IELR, GLR | Yacc | C, C++, Java, XML | , except XML | external | | | , GNU GPL |
DMS Software Reengineering Toolkit | GLR | ? | Parlanse | | generated | | | |
DParser | Scannerless GLR | ? | C | | scannerless | | | , BSD |
Dypgen | Runtime-extensible GLR | ? | OCaml | | generated | | | , CeCILL-B |
E3 | Earley | ? | OCaml | | external, or scannerless | | | ? |
Elkhound | GLR | ? | C++, OCaml | | external | | | , BSD |
eu.h8me.Parsing | GLR | ? | N/A | | external | | | , BSD |
GDK | LALR, GLR | ? | C, Lex, Haskell, HTML, Java, Object Pascal, Yacc | | generated | | | , MIT |
Happy | LALR, GLR | ? | Haskell | | external | | | , BSD |
Hime Parser Generator | GLR | ? | C#, Java, Rust | | generated | | | , GNU LGPL |
IronText Library | LALR, GLR | C# | C# | | generated or external | | | , Apache 2.0 |
Jison | LALR, LR, SLR | Yacc | JavaScript, C#, PHP | | generated | | | , MIT |
Syntax | LALR, LR, SLR CLR LL | JSON/Yacc | JavaScript, Python, PHP, Ruby, C#, Rust, Java | | generated | | | , MIT |
Laja | Scannerless, two phase | Laja | Java | | scannerless | | | , GNU GPL |
ModelCC | Earley | Annotated class model | Java | Generated | generated | | | , BSD |
parglare | Scannerless LR/GLR | BNF-like | Python interpreted, automata run-time generated | | scannerless | | | , MIT |
P1 | Combinators | BNF-like | OCaml | | external, or scannerless | | | ? |
P3 | Earley–combinators | BNF-like | OCaml | | external, or scannerless | | | ? |
P4 | Earley–combinators, infinitary CFGs | BNF-like | OCaml | | external, or scannerless | | | ? |
Scannerless Boolean Parser | Scannerless GLR | ? | Haskell, Java | | scannerless | | | , BSD |
SDF/SGLR | Scannerless GLR | SDF | C, Java | | scannerless | | | , BSD |
SmaCC | GLR, LALR, LR | ? | Smalltalk | | internal | | | , MIT |
SPARK | Earley | ? | Python | | external | | | , MIT |
Tom | GLR | ? | C | Generated | none | | | , "No licensing or copyright restrictions" |
UltraGram | LALR, LR, GLR | ? | C++, C#, Java, Visual Basic.NET | | generated | | | |
Wormhole | Pruning, LR, GLR, Scannerless GLR | ? | C, Python | | scannerless | | | , MIT |
Whale Calf | General tabular, SLL, Linear normal form, LR, Binary normal form | ? | C++ | | external | | | |
yaep | Earley | Yacc-like | C | | external | | | , GNU LGPL |
Zecc | Recursive pattern matching | Zecc/Zacc | Linkable library | | Scannerless | | | |