Comparison of parser generators: Difference between revisions

Content deleted Content added
Bender the Bot (talk | contribs)
m HTTP to HTTPS for SourceForge
 
(393 intermediate revisions by more than 100 users not shown)
Line 1:
{{short description|None}}
{{confusing|date=March 2014}}
{{More citations needed|date=July 2023}}
 
This is a list of notable [[lexer generator]]s and [[parser generator]]s for various language classes.
 
== Regular languages ==
[[Regular language]]s are a category of languages (sometimes termed [[Chomsky hierarchy|Chomsky Type 3]]) which can be matched by a state machine (more specifically, by a [[deterministic finite automaton]] or a [[nondeterministic finite automaton]]) constructed from a [[regular expression]]. In particular, a regular language can match constructs like "A follows B", "Either A or B", "A, followed by zero or more instances of B", but cannot match constructs which require consistency between non-adjacent elements, such as "some instances of A followed by the same number of instances of B", and also cannot express the concept of recursive "nesting" ("every A is eventually followed by a matching B"). A classic example of a problem which a regular grammar cannot handle is the question of whether a given string contains correctly nested parentheses. (This is typically handled by a Chomsky Type 2 grammar, also termed a [[context-free grammar]].)
{{see also|List of lexer generators}}
 
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
|-
! Name !!Lexer algorithm !! [[programmingProgramming language|Output languages]] !! Grammar, code !! Development platform !! [[softwareSoftware license|License]]
|-
| Alex || [[Deterministic finite automaton|DFA]] || [[Haskell]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|-
| AnnoFlex || [[Deterministic finite automaton|DFA]] || [[Java (programming language)|Java]] || {{D-A|Mixed}} || {{Some|[[Java virtual machine]]}} || {{Free}}, [[BSD licenses|BSD]]
|-
| Astir|| [[Deterministic finite automaton|DFA]] table driven, with branching || [[C++]] || {{D-P|Only grammar (actioned)}} || {{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| AlexAustenX || [[deterministicDeterministic finite automaton|DFA]] || [[HaskellJava (programming language)|HaskellJava]] || mixed{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|-
| AustenXC# Flex || [[deterministicDeterministic finite automaton|DFA]] || [[JavaC Sharp (programming language)|JavaC#]] || separate{{D-A|Mixed}} || all{{Some|[[Common Language Runtime|.NET CLR]]}} || {{Free}}, [[BSDGNU licensesGeneral Public License|BSDGNU GPL]]
|-
| C# FlexLex || [[deterministicDeterministic finite automaton|DFA]] || [[C Sharp (programming language)|C#]] || mixed{{D-A|Mixed}} || {{Some|[[Common Language Runtime|.NET CLR]]}} || [[GNU General Public License|GNU GPL]]?
|-
| C# LexCookCC || [[deterministicDeterministic finite automaton|DFA]] || [[C SharpJava (programming language)|C#Java]] || mixed{{D-A|Mixed}} || {{Some|[[CommonJava Language Runtime|.NETvirtual CLRmachine]]}} || ?{{Free}}, [[Apache License|Apache]] 2.0
|-
| CookCCDFA || [[deterministicDeterministic finite automaton|DFA]] compressed matrix || [[JavaC (programming language)|JavaC]], [[C++]] || mixed{{D-P|Separate}} || [[JavaWindows, VirtualVisual Machine]]Studio || [[BSD licenses|BSD]]
|-
| DFAlexDolphin || [[deterministicDeterministic finite automaton|DFA]] || no code generation required || [[Java (programming language)|JavaC++]] || [[Java (programming language){{D-P|Java]]Separate}} || [[Apache{{Yes|All}} License|Apache| License 2.0]]{{Proprietary}}
|-
| Dolphin[[Flex (lexical analyser generator)|Flex]] || [[deterministicDeterministic finite automaton|DFA]] table driven || [[C (programming language)|C]], [[C++]] || separate{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[proprietaryBSD softwarelicenses|ProprietaryBSD]]
|-
| [[flexgelex lexical analyzer|flex]] || [[deterministicDeterministic finite automaton|DFA table driven]] || [[CEiffel (programming language)|C]], [[C++Eiffel]] || mixed{{D-A|Mixed}} || all{{Some|[[Eiffel (programming language)|Eiffel]]}} || {{Free}}, [[BSDMIT licensesLicense|BSDMIT]]
|-
| gelexgolex || [[deterministicDeterministic finite automaton|DFA]] || [[EiffelGo (programming language)|EiffelGo]] || mixed{{D-A|Mixed}} || {{Some|[[EiffelGo (programming language)|EiffelGo]]}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]-style
|-
| golexgplex || [[deterministicDeterministic finite automaton|DFA]] || [[GoC Sharp (programming language)|GoC#]] || mixed{{D-A|Mixed}} || {{Some|[[GoCommon (programmingLanguage language)Runtime|Go.NET CLR]] }} || {{Free}}, [[BSD licenses|BSD]]-stylelike
|-
| gplexJFlex || [[deterministicDeterministic finite automaton|DFA]] || [[C SharpJava (programming language)|C#Java]] || mixed{{D-A|Mixed}} || {{Some|[[CommonJava Language Runtime|.NETvirtual CLRmachine]]}} || {{Free}}, [[BSD licenses|BSD]]-like
|-
| JFlexJLex || [[deterministicDeterministic finite automaton|DFA]] || [[Java (programming language)|Java]] || mixed{{D-A|Mixed}} || {{Some|[[Java Virtualvirtual Machinemachine]]}} || {{Free}}, [[GNUBSD General Public Licenselicenses|GNU GPLBSD]]-like
|-
| JLex[[lex (software)||lex]] || [[deterministicDeterministic finite automaton|DFA]] || [[JavaC (programming language)|JavaC]] || mixed{{D-A|Mixed}} || {{Some|[[Java Virtual MachinePOSIX]]}} || {{Partial}}, [[BSDProprietary licensessoftware|BSDproprietary]], [[Common Development and Distribution License|CDDL]]-like
|-
| [[lexlexertl programming tool|lex]]|| [[deterministicDeterministic finite automaton|DFA]] || [[C (programming language)|C++]] || mixed? || [[POSIX]]{{Yes|All}} || {{Free}}, [[proprietaryGNU softwareLesser General Public License|Proprietary]],GNU [[CDDLLGPL]]
|-
| lexertlQuex || [[deterministicDeterministic finite automaton|DFA]] direct code || [[C (programming language)|C]], [[C++]] || {{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[GNU Lesser General Public License|GNU LGPL]]
|-
| [[Ragel]] || [[Deterministic finite automaton|DFA]] || [[Go (programming language)|Go]], [[C (programming language)|C]], [[C++]], [[Java (programming language)|Java]], [[Assembly language|assembly]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[GNU General Public License|GNU GPL]], [[MIT License|MIT]]<ref>{{Cite web|url=http://www.colm.net/open-source/ragel/|title = Ragel State Machine Compiler}}</ref><ref>http://www.colm.net/open-source/ragel/ {{verify source |date=November 2020 |reason=This ref was deleted Special:Diff/987467678 by a bug in VisualEditor and later restored by a bot from the original cite located at Special:Permalink/987467450 cite #1 - verify the cite is accurate and delete this template. [[User:GreenC bot/Job 18]]}}</ref>
| [[Quex]] || [[deterministic finite automaton|DFA direct code]] || [[C (programming language)|C]], [[C++]] || mixed || all || [[GNU Lesser General Public License|GNU LGPL]]
|-
| [[Ragel]]RE/flex || [[deterministicDeterministic finite automaton|DFA]] ||direct [[Ccode, (programmingDFA language)|C]],table [[C++]]driven, [[D (programming language)|D]],and [[GoNondeterministic (programmingfinite language)automaton|GoNFA]], [[Javaregex (programminglibraries language)|Java]],| [[Objective-C++]], [[Ruby|| (programming language){{D-A|Ruby]]Mixed}} || mixed{{Yes|All}} || all ||{{Free}}, [[GNUBSD General Public Licenselicenses|GNU GPLBSD]]
|-
| [[re2c]] || [[deterministicDeterministic finite automaton|DFA]] direct code]] || [[C (programming language)|C]], [[C++]], [[Go (programming language)|Go]], [[Rust (programming language)|Rust]] mixed|| {{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[Publicpublic ___domain]]
|}
 
== Deterministic context-free languages ==
[[Context-free language]]s are a category of languages (sometimes termed [[Chomsky hierarchy|Chomsky Type 2]]) which can be matched by a sequence of replacement rules, each of which essentially maps each non-terminal element to a sequence of terminal elements and/or other nonterminal elements. Grammars of this type can match anything that can be matched by a [[regular grammar]], and furthermore, can handle the concept of recursive "nesting" ("every A is eventually followed by a matching B"), such as the question of whether a given string contains correctly nested parentheses. The rules of Context-free grammars are purely local, however, and therefore cannot handle questions that require non-local analysis such as "Does a declaration exist for every variable that is used in a function?". To do so technically would require a more sophisticated grammar, like a Chomsky Type 1 grammar, also termed a [[context-sensitive grammar]]. However, parser generators for context-free grammars often support the ability for user-written code to introduce limited amounts of context-sensitivity. (For example, upon encountering a variable declaration, user-written code could save the name and type of the variable into an external data structure, so that these could be checked against later variable references detected by the parser.)
 
The [[deterministic context-free language]]s are a proper subset of the context-free languages which can be efficiently parsed by [[deterministic pushdown automata]].<!-- More parsing algorithms and output formats supported. See https://gdk.sourceforge.net/gdkref.pdf -->
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
|-
! Name !! [[Parsing]] algorithm !! Input grammar notation !! [[programmingProgramming language|Output languages]] !! Grammar, code !! [[lexicalLexical analyzer|Lexer]] !! Development platform !! [[integratedIntegrated development environment|IDE]] !! [[softwareSoftware license|License]]
|-
| [[ANTLR|ANTLR4]]4 || [[Adaptive LL parser|ALL(*)]]<ref>{{Cite web | url = http://www.antlr.org/papers/allstar-techreport.pdf | title = Adaptive LL(*) Parsing: The Power of Dynamic Analysis | accessdate access-date= 2016-04-03 | publisher=Terence Parr}}</ref> || [[Extended Backus–Naur form|EBNF]] || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Python (programming language)|Python]], [[JavaScript]], [[C++]], [[Swift (programming language)|Swift]], [[Go (programming language)|Go]], mixed[[PHP]] || {{D-P|Separate}} || generated || {{Some|[[Java Virtualvirtual Machinemachine]]}} || {{Yes}} || {{Free}}, [[BSD licenses|BSD]]
|-
| [[ANTLR|ANTLR3]]3 || [[LL parser|LL]](*)]] || [[Extended Backus–Naur form|EBNF]] || [[ActionScript]], [[Ada (programming language)|Ada95]], [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[JavaScript]], [[Objective-C]], [[Perl]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]] || mixed{{D-A|Mixed}} || generated || {{Some|[[Java Virtualvirtual Machinemachine]]}} || {{Yes}} || {{Free}}, [[BSD licenses|BSD]]
|-
| APG{{cn|date=January 2025}}|| [[Recursive descent]], [[Backtrackingbacktracking]] || [[ABNF]] || [[CPython (programming language)|CPython]], [[C++JavaScript]], [[JavaScriptC (programming language)|C]], [[Java (programming language)|Java]] || separate{{D-P|Separate}} || none || all{{Yes|All}} || {{No}} || {{Free}}, [[GNUBSD General Public Licenselicenses|GNU GPLBSD]]
|-
| Beaver<ref>{{Cite journal |last1=Boyland |first1=John |last2=Spiewak |first2=Daniel |date=2010-09-17 |title=Tool Paper: ScalaBison Recursive Ascent-Descent Parser Generator |journal=Electronic Notes in Theoretical Computer Science |series=Proceedings of the Ninth Workshop on Language Descriptions Tools and Applications (LDTA 2009) |volume=253 |issue=7 |pages=65–74 |doi=10.1016/j.entcs.2010.08.032 |issn=1571-0661|doi-access=free }}</ref><ref>{{Cite web |title=Beaver - a LALR Parser Generator |url=https://beaver.sourceforge.net/ |access-date=2023-09-16 |website=beaver.sourceforge.net}}</ref>|| [[LALR parser|LALR]](1) || [[Extended Backus–Naur form|EBNF]]|| [[Java (programming language)|Java]]|| {{D-A|Mixed}} || external || {{Some|[[Java virtual machine]]}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
| AXE || [[Recursive descent]] || AXE/C++ || [[C++11]] || mixed || none || any platform with standard C++11 compiler || {{No}} || [[Boost Software License|Boost]]
|-
| Beaver[[GNU Bison|Bison]] || [[LALR parser|LALR]](1), [[Canonical LR parser|LR]](1), [[IELR parser|IELR]](1), [[GLR parser|GLR]] || [[EBNFYacc]] || [[C (programming language)|C]], [[C++]], [[D (programming language)|D]], [[Java (programming language)|Java]] || mixed{{D-A|Mixed}} || external || [[Java Virtual Machine]]{{Yes|All}} || {{No}} || {{Free}}, [[BSDGNU licensesGeneral Public License|BSDGNU GPL]] with exception
|-
| [[GNU bison|BisonBtYacc]] || [[LALR parser|LALR(1)Backtracking]], [[CanonicalBottom-up LR parserparsing|LR(1)]], [[IELR parser|IELR(1)]], [[GLR parser|GLRBottom-up]] || ? || [[C (programming language)|C]], [[C++]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNUpublic GPL___domain]]
|-
| Bison++<ref[[Berkeley group="note">Bison 1.19 fork</ref>Yacc|byacc]] || [[LALR parser|LALR]](1)]] || ?[[Yacc]] || [[C++ (programming language)|C]] || mixed{{D-A|Mixed}} || external || [[POSIX]]{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNUpublic GPL___domain]]
|-
| CL-Yacc<ref>{{Cite journal |last1=Newton |first1=Jim E. |last2=Demaille |first2=Akim |last3=Verna |first3=Didier |date=2016-05-09 |title=Type-Checking of Heterogeneous Sequences in Common Lisp |url=https://www.lrde.epita.fr/dload/papers/newton.16.rte.report.pdf |journal=Proceedings of the 9th European Lisp Symposium on European Lisp Symposium |series=ELS2016 |___location=Kraków, Poland |publisher=European Lisp Scientific Activities Association |pages=13–20 |isbn=978-2-9557474-0-7}}</ref><ref>{{Cite web |title=CL-Yacc — a LALR(1) parser generator for Common Lisp |url=https://www.irif.fr/~jch/software/cl-yacc/ |access-date=2023-09-16 |website=www.irif.fr}}</ref>|| [[LALR parser|LALR]](1) || [[Lisp (programming language)|Lisp]]|| [[Common Lisp]]|| {{D-A|Mixed}} || external || {{Yes|All}} || {{No}} || {{Free}}, [[MIT License|MIT]]
| Bisonc++ || [[LALR parser|LALR(1)]] || ? || [[C++]] || mixed || external || [[POSIX]] || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| [[Coco/R]] || [[LL parser|LL]](1) + semantic predicates || [[Extended Backus–Naur form|EBNF]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[F Sharp (programming language)|F#]], [[Java (programming language)|Java]], [[Ada (programming language)|Ada]], [[Object Pascal]], [[Delphi (software)|Delphi]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Ruby (programming language)|Ruby]], [[Swift (programming language)|Swift]], [[Unicon (programming language)|Unicon]], [[Visual Basic .NET]] || {{D-A|Mixed}} || generated || {{Some|[[Java virtual machine]], [[.NET]] framework, [[Microsoft Windows|Windows]], [[POSIX]] (depends on output language)}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
| [[BtYacc]] || [[Backtracking]] [[Bottom-up parsing|Bottom-up]] || ? || [[C++]] || mixed || external || all || {{No}} || [[Public ___domain]]
|-
| CppCC<ref>{{Cite journal |last1=Hosseinpour |first1=Sahereh |last2=Alavi Milani |first2=Mir Mohammad Reza |last3=Pehlivan |first3=Hüseyin |date=July 2018 |title=A Step-by-Step Solution Methodology for Mathematical Expressions |journal=Symmetry |language=en |volume=10 |issue=7 |pages=285 |doi=10.3390/sym10070285 |bibcode=2018Symm...10..285H |issn=2073-8994 |doi-access=free }}</ref><ref>{{Cite web |title=CppCC's Home Page |url=https://cppcc.sourceforge.net/ |access-date=2023-09-16 |website=cppcc.sourceforge.net}}</ref>|| [[LL parser|LL]](k) || ? || [[C++]]|| {{D-A|Mixed}} || generated || {{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
| [[Berkeley Yacc|byacc]] || [[LALR parser|LALR(1)]] || YACC || [[C (programming language)|C]] || mixed || external || all || {{No}} || [[Public ___domain]]
|-
| BYACCCUP<ref>{{Cite web |title=Java Cup |url=https:/J/pages.cs.wisc.edu/~fischer/cs536.s06/course.hold/html/NOTES/4a.JAVA-CUP.html |access-date=2023-09-16 |website=pages.cs.wisc.edu}}</ref><ref>{{Cite web |title=CUP |url=http://www2.cs.tum.edu/projects/cup/docs.php |access-date=2023-09-16 |website=www2.cs.tum.edu}}</ref>|| [[LALR parser|LALR]](1)]] || ? || [[C (programming language)|C]], [[Java (programming language)|Java]] || mixed{{D-A|Mixed}} || external || all{{Some|[[Java virtual machine]]}} || {{No}} || {{Free}}, [[PublicBSD ___domainlicenses|BSD]]-like
|-
<!-- Other programming languages may be supported. See https://eli-project.sourceforge.net/ -->
| CL-Yacc || [[LALR parser|LALR(1)]] || Lisp || [[Common Lisp]] || mixed || external || all || {{No}} || [[MIT License|MIT]]
| Eli<ref>{{Cite journal |last1=Thiemann |first1=Peter |last2=Neubauer |first2=Matthias |date=2004-12-31 |title=Parameterized LR Parsing |journal=Electronic Notes in Theoretical Computer Science |series=Proceedings of the Fourth Workshop on Language Descriptions, Tools, and Applications (LDTA 2004) |volume=110 |pages=115–132 |doi=10.1016/j.entcs.2004.06.007 |issn=1571-0661|doi-access=free }}</ref><ref>{{Cite journal |last1=Gray |first1=Robert W. |last2=Levi |first2=Steven P. |last3=Heuring |first3=Vincent P. |last4=Sloane |first4=Anthony M. |last5=Waite |first5=William M. |title=Eli: a complete, flexible compiler construction system |journal=Communications of the ACM |date=1992 |language=en |volume=35 |issue=2 |pages=121–130 |doi=10.1145/129630.129637 |s2cid=5121773 |issn=0001-0782|doi-access=free }}</ref> || [[LALR parser|LALR]](1) || ? || [[C (programming language)|C]] || {{D-A|Mixed}} || generated || {{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]], [[GNU Lesser General Public License|GNU LGPL]]
|-
| Essence<ref>{{Cite journal |last1=Owens |first1=Scott |last2=Flatt |first2=M. |last3=Shivers |first3=O. |last4=McMullan |first4=Benjamin |date=2004-10-01 |title=Lexer and Parser Generators in Scheme |url=https://www.khoury.northeastern.edu/home/shivers/papers/scmparse.pdf |journal=Scheme 2004: Proceedings of the Fifth Workshop on Scheme and Functional Programming}}</ref>|| [[LR parser|LR]](?) || ? || [[Scheme 48]]|| {{D-A|Mixed}} || external || {{Yes|All}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
| [[Coco/R]] || [[LL parser|LL(1)]] || [[EBNF]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[F Sharp (programming language)|F#]], [[Java (programming language)|Java]], [[Ada (programming language)|Ada]], [[Object Pascal/Delphi (programming language)|Object Pascal/Delphi]], [[Modula-2]], [[Oberon (programming language)|Oberon]], [[Ruby (programming language)|Ruby]], [[Unicon (programming language)|Unicon]], [[Visual Basic .NET]] || mixed || generated || [[Java Virtual Machine]], [[.NET Framework]] || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| eyapp<ref name=":0">{{Cite journal |last1=Areias |first1=Hugo |last2=Simões |first2=Alberto |last3=Henriques |first3=P. |last4=Cruz |first4=Daniela Carneiro da |date=2010-09-01 |title=Parser generation in Perl : an overview and available tools |url=https://core.ac.uk/download/pdf/55615107.pdf |journal=}}</ref>|| [[Canonical LR parser|LALR]](1) || ? || [[Perl]]|| {{D-A|Mixed}} || external or generated || {{Yes|All}} || {{No}} || {{Free}}, [[Artistic License|Artistic]]
| CookCC || [[Canonical LR parser|LALR(1)]] || Java annotations || [[Java (programming language)|Java]] || mixed || generated || [[Java Virtual Machine]] || {{No}} || [[BSD licenses|BSD]]
|-
| [[GOLD (parser)|GOLD]]<ref>{{Cite web |last=Volkman |first=Victor |date=2007-07-19 |title=Let Your Parser Go for the GOLD |url=https://www.developer.com/java/let-your-parser-go-for-the-gold/ |access-date=2023-11-04 |website=Developer.com |language=en-US}}</ref>|| [[LALR parser|LALR]](1) || BNF || [[x86 assembly language]], [[ANSI C]], [[C Sharp (programming language)|C#]], [[D (programming language)|D]], [[Java (programming language)|Java]], [[Pascal (programming language)|Pascal]], [[Object Pascal]], [[Python (programming language)|Python]], [[Visual Basic]] 6, [[Visual Basic .NET]], [[Visual C++]]|| {{D-P|Separate}} || generated || {{Some|[[Microsoft Windows|Windows]]}} || {{Yes}} || {{Free}}, [[zlib License|zlib]] modified
| CppCC || [[LL parser|LL(k)]] || ? || [[C++]] || mixed || generated || [[POSIX]] || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| Hime Parser Generator<ref>{{Cite web |title=Parsing in C#: All the Tools and Libraries You Can Use (Part 2) - DZone |url=https://dzone.com/articles/parsing-in-c-all-the-tools-and-libraries-you-can-u-1 |access-date=2023-11-04 |website=dzone.com |language=en}}</ref>|| [[LALR parser|LALR]](1), [[GLR parser|GLR]]|| BNF dialect || [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Rust (programming language)|Rust]]|| {{D-P|Separate}} || generated || {{Some|[[.NET]] framework, [[Java virtual machine]]}} || {{No}} || {{Free}}, [[GNU Lesser General Public License|GNU LGPL]]
| CSP || [[Canonical LR parser|LR(1)]] || ? || [[C++]] || separate || generated || [[POSIX]] || {{No}} || [[Apache License|Apache License 2.0]]
|-
| Hyacc<ref>{{Cite journal |last1=Ortin |first1=Francisco |last2=Quiroga |first2=Jose |last3=Rodriguez-Prieto |first3=Oscar |last4=Garcia |first4=Miguel |date=2022-03-03 |title=An empirical evaluation of Lex/Yacc and ANTLR parser generation tools |journal=PLOS ONE |language=en |volume=17 |issue=3 |pages=e0264326 |doi=10.1371/journal.pone.0264326 |issn=1932-6203 |pmc=8893623 |pmid=35239695 |bibcode=2022PLoSO..1764326O |doi-access=free }}</ref>|| [[Canonical LR parser|LR(1), LALR(1), LR]](0) || [[Yacc]]|| [[C (programming language)|C]]|| {{D-A|Mixed}} || external || {{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
| CUP || [[LALR parser|LALR(1)]] || ? || [[Java (programming language)|Java]] || mixed || external || [[Java Virtual Machine]] || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| [[JavaCC]]<ref>{{Cite web |last=Enseling |first=Oliver |date=2000-12-29 |title=Build your own languages with JavaCC |url=https://www.infoworld.com/article/2076269/build-your-own-languages-with-javacc.html |access-date=2023-11-04 |website=InfoWorld |language=en}}</ref><ref>{{Cite web |title=JavaCC |url=https://javacc.github.io/javacc/ |access-date=2023-11-04 |website=JavaCC |language=en-US}}</ref>|| [[LL parser|LL]](k) || [[Extended Backus–Naur form|EBNF]]|| [[Java (programming language)|Java]], [[C++]], [[JavaScript]] (via [[Google Web Toolkit|GWT]] compiler)<ref>{{Cite web |url=http://consoliii.blogspot.co.uk/2014/04/creating-gwt-compatible-parser-using.html |title=Building parsers for the web with JavaCC & GWT (Part one) |date=14 April 2014 |access-date=2014-05-04 |publisher=Chris Ainsley}}</ref>|| {{D-A|Mixed}} || generated || {{Some|[[Java virtual machine]]}} || {{Yes}} || {{Free}}, [[BSD licenses|BSD]]
| Dragon || [[Canonical LR parser|LR(1)]], [[LALR parser|LALR(1)]] || ? || [[C++]], [[Java (programming language)|Java]] || separate || generated || all || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| [[JFLAP]] || [[LL parser|LL]](1), [[LALR parser|LALR]](1) || ? || [[Java (programming language)|Java]] || ? || ? || {{Some|[[Java virtual machine]]}} || {{Yes}} || ?
<!-- Other programming languages possibly supported. See http://eli-project.sourceforge.net/ -->
| eli || [[LALR parser|LALR(1)]] || ? || [[C (programming language)|C]] || mixed || generated || [[POSIX]] || {{No}} || [[GNU General Public License|GNU GPL]], [[GNU Lesser General Public License|GNU LGPL]]
|-
| Essence[[JetPAG]] || [[LRLL parser|LR(???)LL]](k) || ? || [[Scheme 48C++]] || mixed{{D-A|Mixed}} || externalgenerated || all{{Yes|All}} || {{No}} || {{Free}}, [[BSDGNU licensesGeneral Public License|BSDGNU GPL]]
|-
| Eto.ParseJS/CC || [[LLLALR parser|LL(k)LALR]](1) || BNF,[[Extended EBNFBackus–Naur or C#form|EBNF]] || N/A[[JavaScript]], (state[[JScript]], machine is runtime generated)[[ECMAScript]] || separate{{D-A|Mixed}} || internal || [[.NET Framework]]{{Yes|All}} || {{NoYes}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]
|-
| eyappKDevelop-PG-Qt || [[CanonicalRecursive LRdescent parser|LALRLL]](1), [[backtracking]], [[Shunting-yard algorithm|shunting-yard]] || ? || [[PerlC++]] || mixed{{D-A|Mixed}} || externalgenerated or generatedexternal || all{{Yes|All, [[KDE]]}} || {{No}} || {{Free}}, [[PerlGNU Lesser General Public License|GNU LGPL]]
|-
| FrownKelbt || [[Backtracking]] [[LALR parser|LALR(k)]](1) || ? || [[Haskell (programming language)|Haskell 98C++]] || mixed{{D-A|Mixed}} || externalgenerated || all{{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| kmyacc || [[LALR parser|LALR]](1) || ? || [[C (programming language)|C]], [[Java (programming language)|Java]], [[Perl]], [[JavaScript]] || {{D-A|Mixed}} || external || {{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
<!-- More parsing algorithms and output formats supported. See http://gdk.sourceforge.net/gdkref.pdf -->
| geyacc || [[LALR parser|LALR(1)]] || ? || [[Eiffel (programming language)|Eiffel]] || mixed || external || all || {{No}} || [[MIT License|MIT]]
|-
| [[GOLD (parser)|GOLD]]Lapg || [[LALR parser|LALR]](1)]] || BNF? || [[x86C assembly(programming language)|C]], [[ANSI C++]], [[C Sharp (programming language)|C#]], [[D (programming language)|D]], [[Java (programming language)|Java]], [[Pascal (programming language)|PascalJavaScript]], [[Object Pascal]], [[Python (programming language)|Python]], [[Visual Basic]] 6, [[Visual Basic .NET]], [[Visual C++]]| {{D-A|| separateMixed}} || generated || {{Some|[[MicrosoftJava Windowsvirtual machine]]}} || {{YesNo}} || Modified{{Free}}, [[ZlibGNU General Public License|ZlibGNU GPL]]
|-
| GPPGLark || [[LALR parser|LALR]](1), [[Earley parser|Earley (SPPF)]] || YACC[[Extended Backus–Naur form|EBNF]] || [[C SharpPython (programming language)|C#Python]], [[JavaScript]] || separate{{D-A|Mixed}} || externalgenerated || [[Microsoft Windows]]{{Yes|All}} || {{Yes}} || {{Free}}, [[BSDMIT license|MIT]]
|-
| [[GrammaticaLemon (parser generator)|Lemon]] || [[LLLALR parser|LL(k)LALR]](1) || BNF dialect<ref>{{Cite web ||title=The [[CLemon SharpParser (programmingGenerator language)|Curl=https://sqlite.org/src/doc/trunk/doc/lemon.html#]],syntax |access-date=2023-11-30 |website=sqlite.org}}</ref>|| [[JavaC (programming language)|JavaC]] || separate{{D-A|Mixed}} || generatedexternal || [[Java Virtual Machine]]{{Yes|All}} || {{No}} || {{Free}}, [[GNU Lesser General Public License|GNUpublic LGPL___domain]]
|-
| Lezer<ref>{{Cite web |url=https://lezer.codemirror.net/ |title=The Lezer Parser System}}</ref><ref>{{Cite news |title=Building a ShopifyQL Code Editor |language=en |work=Shopify |url=https://shopify.engineering/building-a-shopifyql-code-editor |access-date=2023-12-06}}</ref><ref>{{Cite web |date=2022-03-11 |title=Sponsoring the Lezer parser system {{!}} Tines |url=https://www.tines.com/blog/sponsoring-the-lezer-parser-system/ |access-date=2023-12-06 |website=www.tines.com}}</ref>|| [[LR parser|LR]](1), [[GLR parser|GLR]] || EBNF dialect || [[JavaScript]] || {{D-P|Separate}} || generated || [[Node.js]], [[JavaScript]] || {{No}} || {{Free}}, [[MIT License|MIT]]
| HiLexed || [[LL parser|LL(*)]] || EBNF or Java || [[Java (programming language)|Java]] || separate || internal || [[Java Virtual Machine]] || {{No}} || [[GNU Lesser General Public Licence|GNU LGPL]]
|-
| Hime Parser GeneratorLime || [[Canonical LRLALR parser|LR(1), LALR]](1), LR(0)]]|| BNF dialect? || [[C Sharp (programming language)|C#PHP]], [[Java|| (programming language){{D-A|Java]]Mixed}} || separateexternal || generated {{Yes|| [[.NET Framework]], [[Java Virtual Machine]]All}} || {{No}} || {{Free}}, [[GNU Lesser General Public License|GNU LGPLGPL]]
|-
| HyaccLISA || [[Canonical LR parser|LR]](1?), LALR[[LL parser|LL]](1?), LR[[LALR parser|LALR]](0?), [[Simple LR parser|SLR]](?) || YACC? || [[CJava (programming language)|CJava]] || mixed{{D-A|Mixed}} || externalgenerated || all{{Some|[[Java virtual machine]]}} || {{NoYes}} || {{Free}}, [[GNU General Public License|GNUpublic GPL___domain]]
|-
| [[Irony (framework)|Irony]]LLgen || [[Canonical LRLL parser|LALRLL]](1)]] || C#? || N/A[[C (stateprogramming machine is runtime generatedlanguage)|C]] || separate{{D-A|Mixed}} || internalexternal || {{Some|[[.NET FrameworkPOSIX]]}} || {{YesNo}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]
|-
| iyaccLLnextgen || [[LALRLL parser|LALRLL]](1)]] || YACC? || [[IconC (programming language)|IconC]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| jaccLLLPG || [[LALRLL parser|LALRLL]](1k) + [[Syntactic predicate|syntactic]] and semantic predicates || ?ANTLR-like || [[JavaC Sharp (programming language)|JavaC#]] || mixed{{D-A|Mixed}} || externalgenerated (?) || {{Some|[[Java.NET]] Virtualframework, Machine[[Mono (software)|Mono]]}} || {{NoYes|[[Microsoft Visual Studio|Visual Studio]]}} || {{Free}}, [[BSDGNU licensesLesser General Public License|BSDGNU LGPL]]
|-
| LPG || [[JavaCCBacktracking]] || [[LLLALR parser|LLLALR]](k)]] || [[EBNF]]? || [[Java (programming language)|Java]], [[C++]], [[JavaScript]] (via [[Google Web Toolkit|GWT]]| compiler)<ref>{{Cite web| url = http://consoliii.blogspot.co.uk/2014/04/creatingD-gwt-compatible-parser-using.html A| title = Building parsers for the web with JavaCC & GWT (Part one) | accessdate = 2014-05-04 | publisher=Chris AinsleyMixed}}</ref> || mixedgenerated || generated {{Some|| [[Java Virtualvirtual Machinemachine]]}} || {{YesNo}} || {{Free}}, [[BSDEclipse Public licensesLicense|BSDEPL]]
|-
| jayLRSTAR<ref>{{Cite web |url=http://lrstar.cc/ |title=An LR(*) parser generator for C++}}</ref> || [[LALR parser|LALR]](1), [[LALR parser|LALR]](*) || YACC, ANTLR, EBNF || [[C Sharp (programming language)|C#++]], [[Java|| (programming language){{D-P|Java]]Separate}} || mixedgenerated || none{{Some|[[Microsoft Windows|Windows]]}} || {{Yes|[[JavaMicrosoft VirtualVisual MachineStudio|Visual Studio]]}} || {{NoFree}} ||, [[BSD licenses|BSD]]
|-
| [[JFLAP]]Menhir || [[LLCanonical LR parser|LL(1)LR]], [[LALR parser|LALR(1)]] || ? || [[Java (programming language)|JavaOCaml]] || ?{{D-A|Mixed}} || ?generated || [[Java{{Yes|All}} Virtual|| Machine]]{{No}} || {{YesFree}}, ||[[Q ?Public License|QPL]]
|-
| [[JetPAG]]ML-Yacc || [[LLLALR parser|LL(k)LALR]](1) || ? || [[C++ML (programming language)|ML]] || mixed{{D-A|Mixed}} || generatedexternal || all{{Yes|All}} || {{No}} || [[GNU General Public License|GNU GPL]]?
|-
| JS/CCMonkey || [[LALRCanonical LR parser|LALRLR]](1)]] || [[EBNF]]? || [[JavaScript]],Java [[JScript]],(programming [[ECMAScriptlanguage)|Java]] || mixed{{D-P|Separate}} || internalgenerated || all{{Some|[[Java virtual machine]]}} || {{YesNo}} || {{Free}}, [[ArtisticGNU General Public License|ArtisticGNU GPL]]
|-
| KDevelop-PG-QtMsta || [[recursive descentLALR parser|LLLALR]](1k), [[Canonical LR parser|LR]],(k) || [[BacktrackingYACC]], [[Shunting-yardExtended algorithmBackus–Naur form|Shunting yardEBNF]] || ?[[C (programming language)||C]], [[C++]] || mixed{{D-A|Mixed}} || generatedexternal or externalgenerated || all{{Some|[[POSIX]], [[KDECygwin]]}} || {{No}} || {{Free}}, [[GNU Library General Public License|GNU LGPLGPL]]
|-
| KelbtMTP (More Than Parsing) || [[LALRLL parser|Backtracking LALRLL]](1)]] || ? || [[C++Java (programming language)|Java]] || mixed{{D-P|Separate}} || generated || {{Some|[[POSIXJava virtual machine]]}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| kmyaccMyParser || [[LALRLL parser|LALRLL]](1*)]] || ? || [[C (programming language)|CMarkdown]], [[Java (programming language)|Java]],| [[Perl]], [[JavaScriptC++11]] || mixed{{D-P|Separate}} || externalinternal || all{{Some|Any with standard C++11 compiler}} || {{No}} || {{Free}}, [[GNU General PublicMIT License|GNU GPLMIT]]
|-
| LapgNLT || [[LALRGLR parser|LALR(1)GLR]] || ? || [[C Sharp (programming language)|C#]], /[[C++Backus–Naur form|BNF]],-like || [[C Sharp (programming language)|C#]], [[Java|| (programming language){{D-A|Java]], [[JavaScript]]Mixed}} || mixed || generated {{Some|| [[Java Virtual Machine.NET]] framework}} || {{No}} || {{Free}}, [[GNU General PublicMIT License|GNU GPLMIT]]
|-
| [[Lemonocamlyacc Parser Generator|Lemon]] || [[LALR parser|LALR]](1)]] || ? || [[C (programming language)|COCaml]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[Q Public ___domainLicense|QPL]]
|-
| LEPL || Recursive descentolex || [[PythonLL (programming language)parser|PythonLL]](1) || ? || [[Python (programming language)|PythonC++]] (no generation, library) || separate{{D-A|Mixed}} || nonegenerated || all{{Yes|All}} || {{No}} || [[Mozilla{{Free}}, Public License|MPL]]/[[GNU Lesser General Public License|GNU LGPLGPL]]
|-
| Lime[[Parsec (parser)|Parsec]]|| [[LALRLL parser|LALR(1)LL]], [[backtracking]] || ?[[Haskell]] || [[PHPHaskell]] || mixed{{D-A|Mixed}} || externalnone || all{{Yes|All}} || {{No}} || {{Free}}, [[GNUBSD General Public Licenselicenses|GNU GPLBSD]]
|-
| LISAyapp<ref ||name=":0" [[LR parser/>|LR(?)]], [[LL parser|LL(?)]], [[LALR parser|LALR(?)]], [[Simple LR parser|SLR(?1)]] || ? || [[Java (programming language)|JavaPerl]] || mixed{{D-A|Mixed}} || generatedexternal || [[Java Virtual Machine]]{{Yes|All}} || {{YesNo}} || {{Free}}, [[GNU General Public ___domainLicense|GNU GPL]]
|-
| LLgenParser Objects || [[LL parser|LL(1)]](k) || ? || [[CJava (programming language)|CJava]] || mixed{{D-A|Mixed}} || external? || {{Some|[[POSIXJava virtual machine]]}} || {{No}} || {{Free}}, [[BSDzlib License|zlib]]
|-
| LLnextgenPCCTS || [[LL parser|LL(1)]] || ? || [[C (programming language)|C]], [[C++]] || mixed? || external? || all{{Yes|All}} || {{No}} || [[GNU General Public License|GNU GPL]]?
|-
| LLLPG || [[LLPython parserLex-Yacc|LL(k)PLY]] +|| [[SyntacticLALR predicateparser|syntacticLALR]] and semantic predicates(1) || ANTLR-likeBNF || [[C SharpPython (programming language)|C#Python]] || mixed{{D-A|Mixed}} || generated (?) || [[.NET Framework]], [[Mono (software){{Yes|Mono]]All}} || [[Microsoft{{No}} Visual Studio|Visual| Studio]] ||{{Free}}, [[GNU Lesser General PublicMIT License|GNU LGPLMIT]]
|-
| LPGPlyPlus || [[LALR parser|Backtracking LALR(k)]](1) || ?EBNF || [[JavaPython (programming language)|JavaPython]] || mixed{{D-P|Separate}} || generated || [[Java Virtual Machine]]{{Yes|All}} || {{No}} || {{Free}}, [[Eclipse PublicMIT License|EPLMIT]]
|-
| MenhirPRECC || [[Canonical LRLL parser|LR(1)LL]](k) || ? || [[OCamlC (programming language)|C]] || mixed{{D-P|Separate}} || generated || all{{Some|[[DOS]], [[POSIX]]}} || {{No}} || {{Free}}, [[QGNU General Public License|QPLGNU GPL]]
|-
| ML-YaccQLALR || [[LALR parser|LALR]](1)]] || ? || [[ML (programming language)|MLC++]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || ?{{Free}}, [[GNU General Public License|GNU GPL]]
|-
|racc<ref>{{Cite web|title=Racc|url=https://i.loveruby.net/en/projects/racc/|access-date=2021-11-26|website=i.loveruby.net}}</ref>
| Monkey || [[Canonical LR parser|LR(1)]] || ? || [[Java (programming language)|Java]] || separate || generated || [[Java Virtual Machine]] || {{No}} || [[GNU General Public License|GNU GPL]]
|[[LALR parser|LALR]](1)
|[[Backus–Naur form|BNF]]-like, yacc-like<ref>{{Cite web|title=Racc Grammar File Reference|url=https://i.loveruby.net/en/projects/racc/doc/grammar.html|access-date=2021-11-26|website=i.loveruby.net}}</ref>
|[[Ruby (programming language)|Ruby]]
|{{D-A|Mixed}}
| ?
|{{D-A|Windows, Linux, macOS, FreeBSD, NetBSD}}
|{{No}}
|{{Free|[[LGPL]]}}
|-
| REX<ref>{{Cite web |url=https://www.bottlecaps.de/rex/ |title=The REX Parser Generator supports C, C++, Java, JavaScript, C#, Go, Haxe, Python, Scala, Typescript, XQuery, and XSLT}}</ref> || [[LL parser|LL]](1) [[sLL parser|sLL]](k) [[LR parser|LR]](k) [[LALR]](k) [[GLR parser|GLR]] [[Parsing expression grammar|PEG]] [[Deterministic finite automaton|DFA]] [[Context-dependent lexing]] || [[Extended Backus–Naur form|EBNF]] || [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[JavaScript]], [[Go (programming language)|Go]], [[Haxe]], [[Python (programming language)|Python]], [[Scala (programming language)|Scala]], [[TypeScript|Typescript]], [[XQuery]], [[XSLT]] || {{D-P|Separate}} || generated || {{Yes|All}} || {{No}} || {{Free}}, [[Apache License 2.0]]
| Msta || [[LALR parser|LALR(k)]], [[Canonical LR parser|LR(k)]] || [[YACC]], [[EBNF]] || [[C (programming language)|C]], [[C++]] || mixed || external or generated || [[POSIX]], [[Cygwin]] || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| MTP (More Than Parsing)[[SableCC]] || [[LLLALR parser|LLLALR]](1)]] || ? || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[OCaml]], [[Python (programming language)|Python]] || separate{{D-P|Separate}} || generated || {{Some|[[Java Virtualvirtual Machinemachine]]}} || {{No}} || {{Free}}, [[GNU Lesser General Public License|GNU GPLLGPL]]
|-
| SLK<ref>{{Cite web |url=http://www.slkpg.com/ |title=The SLK Parser Generator supports C, C++, Java, JavaScript, and C#, optional backtracking, free}}</ref> || [[LL parser|LL]](k) [[LR parser|LR]](k) [[LALR]](k) || [[Extended Backus–Naur form|EBNF]] || [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[JavaScript]] || {{D-P|Separate}} || external || {{Yes|All}} || {{No}} || SLK<ref>http://www.slkpg.com/license.txt {{Bare URL plain text|date=March 2022}}</ref>
| MyParser || [[LL parser|LL(*)]] || [[Markdown]] || [[C++11]] || separate || internal || any platform with standard C++11 compiler || {{No}} || [[MIT License]]
|-
| NLTSLY<ref>{{Cite web |url=https://sly.readthedocs.io/en/latest/sly.html |title=SLY (Sly [[GLRLex parser|GLR]]Yacc)}}</ref> || [[CLALR Sharp (programming language)parser|C#LALR]]/[[Backus–Naur(1) Form|| BNF]]-like || [[C SharpPython (programming language)|C#Python]] || mixed{{D-A|Mixed}} || mixedgenerated || [[.NET Framework]]{{Yes|All}} || {{No}} || {{Free}}, [[MITBSD License|MITBSD]]
|-
| ocamlyaccSP (Simple Parser) || [[LALRRecursive parser|LALR(1)descent]] || ?[[Python (programming language)|Python]] || [[OCamlPython (programming language)|Python]] || mixed{{D-P|Separate}} || externalgenerated || all{{Yes|All}} || {{No}} || {{Free}}, [[QGNU Lesser General Public License|QPLGNU LGPL]]
|-
| olex[[Spirit Parser Framework|Spirit]] || [[LLRecursive descent parser|LL(1)Recursive descent]] || ? || [[C++]] || mixed{{D-A|Mixed}} || generatedinternal || all{{Yes|All}} || {{No}} || {{Free}}, [[GNUBoost General PublicSoftware License|GNU GPLBoost]]
|-
| ParsecStyx || [[LLLALR parser|LL]], [[BacktrackingLALR]](1) || ? || [[HaskellC (programming language)|HaskellC]], [[C++]] || mixed{{D-P|Separate}} || nonegenerated || all{{Yes|All}} || {{No}} || {{Free}}, [[BSDGNU licenceLesser General Public License|BSDGNU LGPL]]
|-
| Parse::YappSweet Parser || [[LALR parser|LALR]](1)]] || ? || [[PerlC++]] || mixed{{D-P|Separate}} || externalgenerated || all{{Some|[[Microsoft Windows|Windows]]}} || {{No}} || {{Free}}, [[GNU General Publiczlib License|GNU GPLzlib]]
|-
| Parser ObjectsTap || [[LL parser|LL(k)]](1) || ? || [[Java (programming language)|JavaC++]] || mixed{{D-A|Mixed}} || ?generated || [[Java Virtual Machine]]{{Yes|All}} || {{No}} || {{Free}}, [[ZlibGNU licenseGeneral Public License|zlibGNU GPL]]
|-
| PCCTSTextTransformer || [[LL parser|LL]](k) || ? || [[C (programming language)|C]], [[C++]] || ?{{D-A|Mixed}} || ?generated || all{{Some|[[Microsoft Windows|Windows]]}} || {{NoYes}} || ?{{Proprietary}}
|-
| [[Python Lex-Yacc|PLY]]TinyPG || [[LALRLL parser|LALRLL]](1)]] || BNF? || [[PythonC Sharp (programming language)|PythonC#]], [[Visual Basic]] || mixed? || generated? || all{{Some|[[Microsoft Windows|Windows]]}} || {{NoYes}} || {{Partial}}, [[MITCode Project Open License|CPOL]] 1.0
|-
| PlyPlus[[Toy Parser Generator]] || [[LALRRecursive descent parser|LALR(1)Recursive descent]] || EBNF? || [[Python (programming language)|Python]] || separate{{D-A|Mixed}} || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[MITGNU Lesser General Public License|GNU LGPL]]
|-
| PRECCTP Yacc || [[LLLALR parser|LL(k)LALR]](1) || ? || [[CTurbo (programming language)|CPascal]] || separate{{D-A|Mixed}} || generatedexternal || [[DOS]], [[POSIX]]{{Yes|All}} || {{NoYes}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| [[Tree-sitter (parser generator)|Tree-Sitter]]<ref>{{Cite web |url=https://tree-sitter.github.io/ |title=Tree-Sitter - An incremental parsing system for programming tools}}</ref> || [[LR parser|LR]](1), [[GLR parser|GLR]] || [[JavaScript]] [[Domain-specific language|DSL]], [[JSON]] || [[C (programming language)|C]], bindings ([[Rust (programming language)|Rust]], [[WebAssembly]], [[JavaScript]], [[Python (programming language)|Python]], many other) || {{D-P|Separate}} || generated + external || {{Yes|All}} || {{D-A|[[Vim (text editor)#Neovim|Neovim]], [[Helix]], [[GNU Emacs]], [[Lapce]], [[Zed (text editor)|Zed]]}} || {{Free}}, [[MIT License|MIT]]
| QLALR || [[LALR parser|LALR(1)]] || ? || [[C++]] || mixed || external || all || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| Tunnel Grammar Studio || [[Tunnel Parsing]] || [[Augmented Backus–Naur form|ABNF]] || [[C++]] || {{D-P|Separate}} || generated || {{Some|[[Microsoft Windows|Windows]]}} || {{Yes}} || {{Proprietary}}
| RPATK || [[Recursive descent]], [[Backtracking]] || BNF || [[C (programming language)|C]] (no generation, library) || separate || none || all || {{No}} || [[GNU General Public License|GNU GPL]]
|-
| [[SableCC]]UltraGram || [[LALR parser|LALR]](1)]] || ? ||, [[CLR (programming language)parser|CLR]](1), [[C++GLR parser|GLR]], || [[CBackus–Naur Sharp (programming language)form|C#BNF]], [[Java|| (programmingC++, language)|Java]], [[OCaml]]C#, [[PythonVisual (programmingBasic language)|Python]].NET || separate{{D-P|Separate}} || generatedexternal || all{{Some|[[Microsoft Windows|Windows]]}} || {{NoYes}} || {{Free}}, [[GNU Lesser General Public License|GNUpublic LGPL___domain]]
|-
| SLKUniCC || [[LLLALR parser|LL(k)LALR]] [[LR parser|LR(k1)]] [[LALR(k)]] || [[Extended Backus–Naur form|EBNF]] || [[C (programming language)|C]], [[C++]], [[C SharpPython (programming language)|C#Python]], [[JavaJavaScript]], (programming language)|Java[[JSON]], [[JavaScriptXML]] || separate{{D-A|Mixed}} || externalgenerated || all{{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[proprietaryBSD softwarelicenses|ProprietaryBSD]]
|-
| SP (Simple Parser) || [[Recursive descentUrchinCC]] || [[PythonLL (programming language)parser|PythonLL]](1) || [[Python? (programming language)|Python]]| Java || separate? || generated || all{{Some|[[Java virtual machine]]}} || {{No}} || [[GNU Lesser General Public License|GNU LGPL]]?
|-
<!-- Other programming languages may be supported. -->
| [[Spirit Parser Framework|Spirit]] || [[recursive descent parser|Recursive descent]] || ? || [[C++]] || mixed || internal || all || {{No}} || [[Boost C++ Libraries|Boost]]
| [[Yacc]] [[AT&T Corporation|AT&T]]/[[Sun Microsystems|Sun]] || [[LALR parser|LALR]](1) || [[Yacc]] || [[C (programming language)|C]] || {{D-A|Mixed}} || external || {{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[Common Public License|CPL]] & [[Common Development and Distribution License|CDDL]]
|-
| SpracheYacc++ || [[LLLR parser|LLLR]](1), [[BacktrackingLALR parser|LALR]](1) || C#[[Yacc]] || interpreted[[C++]], ||[[C mixedSharp (programming language)|C#]] || internal{{D-A|Mixed}} || [[.NETgenerated Framework]]or external || {{NoYes|All}} || [[MIT{{No}} licence|MIT]]| {{Proprietary}}
|-
| StyxYapps || [[LALRLL parser|LALRLL]](1)]] || ? || [[CPython (programming language)|C]], [[C++Python]] || separate{{D-A|Mixed}} || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU Lesser General PublicMIT License|GNU LGPLMIT]]
|-
| Sweet Parseryecc || [[LALR parser|LALR]](1)]] || ? || [[C++Erlang (programming language)|Erlang]] || separate{{D-P|Separate}} || generated || Microsoft Windows{{Yes|All}} || {{No}} || {{Free}}, [[ZlibApache licenseLicense|zlibApache]] 2.0
|-
| Tap[[Visual BNF]] || [[LLCanonical LR parser|LLLR]](1), [[LALR parser|LALR]](1) || ? || [[C++ Sharp (programming language)|C#]] || mixed{{D-P|Separate}} || generated || all{{Some|[[.NET]] framework}} || {{NoYes}} || [[GNU General Public License|GNU GPL]]{{Proprietary}}
|-
| TextTransformerYooParse || [[LLCanonical LR parser|LLLR]](k1), [[LALR parser|LALR]](1) || ? || [[C++]] || mixed{{D-A|Mixed}} || generatedexternal || [[Microsoft Windows]]{{Yes|All}} || {{YesNo}} || {{Free}}, [[proprietaryMIT softwareLicense|ProprietaryMIT]]
|-
| Parse<ref>{{Cite web |url=https://github.com/MathiasVP/Parse/ |title=Parse - Compile time (LR) type safe parser generator for C++|website=[[GitHub]]|date=30 December 2021}}</ref> || [[Canonical LR parser|LR]](1) || BNF in [[C++]] types || ? || ? || none || {{Some|C++11 standard compiler}} || {{No}} || {{Free}}, [[MIT License|MIT]]
| TinyPG || [[LL(1)]] || ? || [[C Sharp (programming language)|C#]], [[Visual Basic]] || ? || ? || [[Microsoft Windows]] || {{Yes}} ||CPOL 1.0
|-
| [[Toy Parser Generator]]GGLL || [[recursive descentLL parser|Recursive descentLL]](1) || ?Graph || [[PythonJava (programmingsoftware languageplatform)|PythonJava]] || mixed{{D-A|Mixed}} || generated || all{{Some|[[Microsoft Windows|Windows]]}} || {{NoYes}} || {{Free}}, [[GNU Lesser General PublicMIT License|GNU LGPLMIT]]
|-
| TP Yacc || [[LALR parser|LALR(1)]] || ? || [[Turbo Pascal]] || mixed || external || all || {{Yes}} || [[GNU General Public License|GNU GPL]]
|-
| UniCC || [[LALR parser|LALR(1)]] || [[EBNF]] || [[C programming language|C]], target-language independent || mixed || generated || [[POSIX]] || {{No}} || [[Artistic License 2.0|Artistic 2.0]]
|-
| Whale || [[LR parser|LR(?)]], some conjunctive stuff, see Whale Calf || ? || [[C++]] || mixed || external || all || {{No}} || [[proprietary software|Proprietary]]
|-
| wisent || [[LALR parser|LALR(1)]] || ? || [[C++]], [[Java (programming language)|Java]] || mixed || external || all || {{No}} || [[GNU General Public License|GNU GPL]]
|-
<!-- Other programming languages are maybe also supported. -->
| [[Yacc]] [[AT&T Corporation|AT&T]]/[[Sun Microsystems|Sun]] || [[LALR parser|LALR(1)]] || YACC || [[C (programming language)|C]] || mixed || external || [[POSIX]] || {{No}} || [[Common Public License|CPL]] & [[CDDL]]
|-
| Yacc++ || [[LR parser|LR(1)]], [[LALR parser|LALR(1)]] || YACC || [[C++]], [[C Sharp (programming language)|C#]] || mixed || generated or external || all || {{No}} || [[proprietary software|Proprietary]]
|-
| Yapps || [[LL parser|LL(1)]] || ? || [[Python (programming language)|Python]] || mixed || generated || all || {{No}} || [[MIT License|MIT]]
|-
| yecc || [[LALR parser|LALR(1)]] || ? || [[Erlang (programming language)|Erlang]] || separate || generated || all || {{No}} || [[Erlang (programming language)|Erlang]]
|-
| [[Visual BNF]] || [[Canonical LR parser|LR(1)]], [[LALR parser|LALR(1)]] || ? || [[C Sharp (programming language)|C#]] || separate || generated || [[.NET Framework]] || {{Yes}} || [[proprietary software|Proprietary]]
|-
| YooParse || [[Canonical LR parser|LR(1)]], [[LALR parser|LALR(1)]] || ? || [[C++]] || mixed || external || all || {{No}} || [[MIT License|MIT]]
|-
| Parse || [[Canonical LR parser|LR(1)]] || BNF in [[C++]] types || ? || ? || none || C++11 compliant compiler || {{No}} || [[MIT License|MIT]]
|-
|[https://github.com/tassotirap/GGLL.UI GGLL]
|[[LL parser|LL(1)]]
|Graph
|[[Java (software platform)|Java]]
|mixed
|generated
|[[Microsoft Windows|Windows]]
|Yes
|[[MIT License|MIT]]
|- class="sortbottom"
! Product !! [[Parsing]] algorithm !! Input grammar notation !! [[programmingProgramming language|Output languages]] !! Grammar, code !! [[lexicalLexical analyzer|Lexer]] !! Development platform !! [[integratedIntegrated development environment|IDE]] !! [[softwareSoftware license|License]]
|}
 
==Parsing expression grammars, deterministic Boolean grammars==
|}
 
This table compares parser generators with [[parsing expression grammar]]s, deterministic [[Boolean grammar]]s.
 
==Parsing expression grammars, deterministic boolean grammars==
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
|-
! Name !! [[Parsing]] algorithm !! [[programmingProgramming language|Output languages]] !! Grammar, code !! Development platform !! [[softwareSoftware license|License]]
|-
| ArpeggioAustenX || PEG[[Packrat parser interpreter, |Packrat]] (modified) || [[PythonJava (programming language)|PythonJava]] (no generation, interpreted) || mixed{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]
|-
| AustenXAurochs || [[Packrat parser|Packrat]] || [[C (modified)programming language)||C]], [[OCaml]], [[Java (programming language)|Java]] || separate{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[BSDGNU licensesGeneral Public License|BSDGNU GPL]]
|-
| AurochsBNFlite || PackratRecursive descent || [[C (programming language)|C++]], [[OCaml]],|| [[Java (programming language){{D-A|Java]]Mixed}} || mixed{{Yes|All}} || all ||{{Free}}, [[GNU General PublicMIT License|GNU GPLMIT]]
|-
| Canopy || [[Packrat parser|Packrat]] || [[Java (programming language)|Java]], [[JavaScript]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]] || {{D-P|Separate}} || {{Yes|All}} || {{Free}}, [[GNU General Public License|GNU GPL]]
| CL-peg || Packrat || [[Common Lisp]] || mixed || all || [[MIT License|MIT]]
|-
| Drat!CL-peg || [[Packrat parser|Packrat]] || [[DCommon (programming language)|DLisp]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[GNU General PublicMIT License|GNU GPLMIT]]
|-
| FrisbyDrat! || [[Packrat parser|Packrat]] || [[HaskellD (programming language)|HaskellD]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[BSDGNU licensesGeneral Public License|BSDGNU GPL]]
|-
| Frisby || [[tcllibPackrat parser|grammar::pegPackrat]] || Packrat || [[TclHaskell]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|-
| Grako [[tcllib|| Packrat + Cut + Left Recursiongrammar::peg]] || [[Python (programmingPackrat language)parser|PythonPackrat]] /|| [[C++Tcl]] (beta)|| separate{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|-
| IronMetaGrako || [[Packrat parser|Packrat]] + Cut + Left Recursion || [[C SharpPython (programming language)|Python]], [[C#++]] (beta) || mixed{{D-P|Separate}} || [[Microsoft Windows]]{{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|-
| KatahdinIronMeta || [[Packrat parser|Packrat (modified), mutating interpreter]] || [[C Sharp (programming language)|C#]] || mixed{{D-A|Mixed}} || all{{Some|[[Microsoft Windows|Windows]]}} || {{Free}}, [[PublicBSD ___domainlicenses|BSD]]
|-
| Laja || 2-phase scannerless top-down [[backtracking]] + runtime support || [[Java (programming language)|Java]] || separate{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| lars::parserParser || [[Packrat parser|Packrat]] (modified to supportsupporting left-recursion and resolve grammar ambiguity) || [[C++]] || identicalIdentical || all{{Yes|All}} || {{Free}}, [[GNUBSD GPLlicenses|BSD]], commercial license available on request
|-
| LPeg || Parsing Machinemachine || [[Lua (programming language)|Lua]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| Mouselug || Parsing Recursive descentmachine || [[Java (programming language)|JavaC++17]] || separate{{D-A|Mixed}} || [[Java Virtual Machine]]{{Yes|All}} || {{Free}}, [[ApacheMIT License|Apache License 2.0MIT]]
|-
| NarwhalMouse || PackratRecursive descent (modified, limited memoization and left-recursion) || [[CJava (programming language)|CJava]] || mixed{{D-P|Separate}} || {{Some|[[POSIX]],Java [[Microsoftvirtual Windowsmachine]]}} || {{Free}}, [[BSDApache licensesLicense|BSDApache]] 2.0
|-
| Nemerle.PegNarwhal ||Recursive descent[[Packrat + Prattparser|Packrat]] || [[NemerleC (programming language)|C]] || separate{{D-A|Mixed}} || all{{Some|[[POSIX]], [[Microsoft Windows|Windows]]}} || {{Free}}, [[BSD licenses|BSD]]
|-
| neotomaNearley || [[Earley Packratparser|Earley]] || [[Erlang (programming language)|ErlangJavaScript]] || separate{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| NPEGNemerle.Peg || Recursive descent + Pratt || [[C Sharp (programming language)|C#Nemerle]] || mixed{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]
|-
| OMetaneotoma || [[Packrat (modified, partial memoization) parser|| [[JavaScriptPackrat]], [[Squeak]],|| [[PythonErlang (programming language)|PythonErlang]] || mixed{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| PackCCnez<ref>{{Citation |title=Nez: practical open grammar language |date=2015-11-26 |arxiv=1511.08307 Packrat|last1=Kuramitsu (modified)|first1=Kimio }}</ref> || Parsing machine || [[Java (programming language)|Java]], [[C (programming language)|C]] || mixed{{D-P|Separate}} || all{{Some|[[Java virtual machine]]}} || {{Free}}, [[MITBSD License|MITBSD]]
|-
| PackratNPEG || Recursive Packratdescent || [[SchemeC Sharp (programming language)|SchemeC#]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| [[PappyOMeta]] || [[Packrat parser|Packrat]] (modified, partial memoization) || [[HaskellJavaScript]], [[Squeak]], [[Python (programming language)|HaskellPython]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[proprietaryMIT softwareLicense|ProprietaryMIT]]
|-
| PackCC || [[ParboiledPackrat (Java)parser|parboiledPackrat]] ||(modified, Recursiveleft-recursion descentsupport) || [[JavaC (programming language)|JavaC]], [[Scala|| (programming language){{D-A|Scala]]Mixed}} || mixed{{Yes|All}} || [[Java Virtual Machine]] ||{{Free}}, [[ApacheMIT License|Apache License 2.0MIT]]
|-
| Lambda[[Packrat PEGparser|Packrat]] || [[Packrat Recursive descentparser|Packrat]] || [[JavaScheme (programming language)|JavaScheme]] || mixed{{D-A|Mixed}} || [[Java Virtual Machine]]{{Yes|All}} || {{Free}}, [[ApacheMIT License|Apache License 2.0MIT]]
|-
| parsepp[[Pappy]] || [[Packrat Recursive descentparser|Packrat]] || [[C++Haskell]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[PublicBSD ___domainlicenses|BSD]]
|-
| [[Parboiled (Java)|parboiled]] || Recursive descent || [[Java (programming language)|Java]], [[Scala (programming language)|Scala]] || {{D-A|Mixed}} || {{Some|[[Java virtual machine]]}} || {{Free}}, [[Apache License|Apache]] 2.0
| Parsnip || Packrat || [[C++]] || mixed || [[Microsoft Windows]] || [[GNU General Public License|GNU GPL]]
|-
| pegLambda PEG || Recursive descent || [[CJava (programming language)|CJava]] || mixed{{D-A|Mixed}} || all{{Some|[[Java virtual machine]]}} || {{Free}}, [[MITApache License|MITApache]] 2.0
|-
| PEG.jsparsepp || PackratRecursive (partial memoization)descent || [[JavaScriptC++]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MITpublic License|MIT___domain]]
|-
| Parsnip || [[Packrat parser|Packrat]] || [[C++]] || {{D-A|Mixed}} || {{Some|[[Microsoft Windows|Windows]]}} || {{Free}}, [[GNU General Public License|GNU GPL]]
| peg-parser || PEG parser interpreter || [[Dylan (programming language)|Dylan]] || separate || all ||
|-
| PegasusPatterns || Parsing Recursive descent / Packrat (selectively)machine || [[C SharpSwift (programming language)|C#Swift]] || mixedIdentical || [[Microsoft Windows]]{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| pegcpeg || Recursive descent || [[C (programming language)|C]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[PublicMIT ___domainLicense|MIT]]
|-
| PetitParserPEG.js || [[Packrat parser|| [[SmalltalkPackrat]], [[Java (programmingpartial languagememoization) ||Java]], [[Dart (programming language)|DartJavaScript]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| PEGTLPeggy<ref>Maintained fork of PEG.js</ref> || Recursive[[Packrat parser|Packrat]] (partial descentmemoization) || [[C++11JavaScript]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| Pegasus || Recursive descent, [[Packrat parser|Packrat]] (selectively) || [[C Sharp (programming language)|C#]] || {{D-A|Mixed}} || {{Some|[[Microsoft Windows|Windows]]}} || {{Free}}, [[MIT License|MIT]]
| [[Parser Grammar Engine|PGE]] || Hybrid recursive descent / operator precedence<ref>{{cite web | url=http://parrot.github.com/html/docs/book/pct/ch04_pge.pod.html | title=Parrot: Grammar Engine | year=2011 | publisher=The Parrot Foundation}} "PGE rules provide the full power of recursive descent parsing and operator precedence parsing."</ref> || [[Parrot virtual machine|Parrot bytecode]] || mixed || [[Parrot virtual machine]] || Artistic 2.0
|-
| [[PyPy|PyPy rlib]]pegc || Recursive Packratdescent || [[PythonC (programming language)|PythonC]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MITpublic License|MIT___domain]]
|-
| pyPEGpest || PEGRecursive parser interpreter, Packratdescent || [[PythonRust (programming language)|PythonRust]] || mixed{{D-P|Separate}} || all{{Yes|All}} || {{Free}}, [[GNUMIT GeneralLicense|MIT]], Public[[Apache License|GNU GPLApache]] 2.0
|-
| [[Rats!]]PetitParser || [[Packrat parser|Packrat]] || [[Smalltalk]], [[Java (programming language)|Java]] || mixed ||, [[JavaDart Virtual(programming Machinelanguage)|Dart]] || [[GNU{{D-A|Mixed}} Lesser|| General{{Yes|All}} Public|| {{Free}}, [[MIT License|GNU LGPLMIT]]
|-
| PEGTL<ref>{{Citation |title=taocpp/PEGTL |date=2024-03-14 |url=https://github.com/taocpp/PEGTL |access-date=2024-03-16 |publisher=The Art of C++}}</ref>|| Recursive descent || [[C++11]], [[C++17]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[Boost Software License|Boost]]
| Spirit2 ||Recursive descent
|| [[C++]] || mixed || all || [[Boost C++ Libraries|Boost]]
|-
| [[Parser Grammar Engine]] (PGE) || Hybrid recursive descent / operator precedence<ref>{{cite web |url=https://parrot.github.com/html/docs/book/pct/ch04_pge.pod.html |title=Parrot: Grammar Engine |year=2011 |publisher=The Parrot Foundation |quote=PGE rules provide the full power of recursive descent parsing and operator precedence parsing.}}</ref> || [[Parrot virtual machine|Parrot bytecode]] || {{D-A|Mixed}} || {{Some|[[Parrot virtual machine]]}} || {{Free}}, [[Artistic License|Artistic]] 2.0
| textX || PEG parser interpreter, Packrat || [[Python (programming language)|Python]] (no generation, interpreted) || separate || all || [[MIT License|MIT]]
|-
| Treetop[[PyPy]] rlib || [[Packrat Recursive descentparser|Packrat]] || [[RubyPython (programming language)|RubyPython]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| YardRats! || [[Packrat Recursive descentparser|Packrat]] || [[C++Java (programming language)|Java]] || mixed |{{D-A| allMixed}} || {{Some|[[MITJava License|MITvirtual machine]]}} or|| {{Free}}, [[GNU Lesser General Public ___domainLicense|GNU LGPL]]
|-
| Spirit2 || Recursive descent || [[C++]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[Boost Software License|Boost]]
| Waxeye || Packrat || [[C (programming language)|C]], [[Java (programming language)|Java]], [[JavaScript]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Scheme (programming language)|Scheme]] || separate || all || [[MIT License|MIT]]
|-
| PHP PEGTreetop || Recursive ? (PEG Parser?)descent || [[PHPRuby (programming language)|Ruby]] || mixed{{D-A|Mixed}} || all{{Yes|All}} || {{Free}}, [[BSDMIT License|MIT]]
|-
| Yard || Recursive descent || [[C++]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[MIT License|MIT]] or [[public ___domain]]
|-
| Waxeye || Parsing machine || [[C (programming language)|C]], [[Java (programming language)|Java]], [[JavaScript]], [[Python (programming language)|Python]], [[Racket (programming language)|Racket]], [[Ruby (programming language)|Ruby]] || {{D-P|Separate}} || {{Yes|All}} || {{Free}}, [[MIT License|MIT]]
|-
| PHP PEG || PEG Parser? || [[PHP]] || {{D-A|Mixed}} || {{Yes|All}} || {{Free}}, [[BSD licenses|BSD]]
|}
 
== General context-free, conjunctive, or booleanBoolean languages ==
 
This table compares parser generator languages with a general [[context-free grammar]], a [[conjunctive grammar]], or a [[Boolean grammar]].
 
{| class="wikitable sortable" style="text-align: center; font-size: 85%; width: auto;"
|-
! Name !! [[Parsing]] algorithm !! Input grammar notation || [[programmingProgramming language|Output languages]] !! Grammar, code !! [[lexicalLexical analyzer|Lexer]] !! Development platform !! [[Integrated development environment|IDE]] !! [[softwareSoftware license|License]]
|-
| ACCENT || [[Earley parser|Earley]] || YACC[[Yacc]] variant || [[C (programming language)|C]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| APaGeD || [[GLR parser|GLR]], [[LALR parser|LALR]](1)]], [[LL parser|LL]](k)]] || ? || [[D (programming language)|D]] || mixed{{D-A|Mixed}} || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[Artistic License|Artistic]]
|-
| [[GNU bisonBison|Bison]] || [[LALR parser|LALR]](1)]], [[Canonical LR parser|LR]](1)]], [[IELR parser|IELR]](1)]], [[GLR parser|GLR]] || YACC[[Yacc]] || [[C (programming language)|C]], [[C++]], [[D (programming language)|D]],<ref>{{cite web |title=Decl Summary (Bison 3.8.1) |url=https://www.gnu.org/software/bison/manual/html_node/Decl-Summary.html |website=www.gnu.org}}</ref> [[Java (programming language)|Java]], [[XML]] || mixed{{D-A|Mixed}}, (except XML) || external || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| [[DMS Software Reengineering Toolkit]] || [[GLR parser|GLR]] || ? || [[Parlanse]] || mixed{{D-A|Mixed}} || generated || {{Some|[[Microsoft Windows|Windows]]}} || {{No}} || [[proprietary software|{{Proprietary]]}}
|-
| DParser || [[scannerlessScannerless parsing|Scannerless GLR]] || ? || [[C (programming language)|C]] || mixed{{D-A|Mixed}} || [[scannerlessScannerless parsing|scannerless]] || {{Some|[[POSIX]]}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
|-
| Dypgen || [[adaptiveAdaptive grammar|runtimeRuntime-extensible]] [[GLR parser|GLR]] || ? || [[OCaml]] || mixed{{D-A|Mixed}} || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[CeCILL|CeCILL]]-B]]
|-
| E3 || [[Earley parser|Earley]] || ? || [[OCaml]] || mixed{{D-A|Mixed}} || external, or scannerless || all{{Yes|All}} || {{No}} || ?
|-
| Elkhound || [[GLR parser|GLR]] || ? || [[C++]], [[OCaml]] || mixed{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
|-
| eu.h8me.ParsingGDK || [[LALR parser|LALR]](1), [[GLR parser|GLR]] || ? || N/A[[C (stateprogramming machinelanguage)|C]], is[[lex runtime(software)|Lex]], generated[[Haskell]], [[HTML]], [[Java (programming language)|Java]], [[Object Pascal]], [[Yacc]] || separate{{D-A|Mixed}} || externalgenerated || {{Some|[[.NET FrameworkPOSIX]]}} || {{No}} || {{Free}}, [[BSDMIT licensesLicense|BSDMIT]]
|-
| GDKHappy || [[LALR parser|LALR(1)]], [[GLR parser|GLR]] || ? || [[C (programming language)|CHaskell]], [[Lex programming tool|Lex]], [[Haskell (programming language)|Haskell]], [[HTML]], [[Java (programming language){{D-A|Java]], [[Object Pascal]], [[Yacc]]Mixed}} || mixedexternal || generated {{Yes|| [[POSIX]]All}} || {{No}} || {{Free}}, [[MITBSD Licenselicenses|MITBSD]]
|-
| HappyHime ||Parser Generator [[LALR parser|LALR]],| [[GLR parser|GLR]] || ? || [[HaskellC Sharp (programming language)|HaskellC#]], [[Java (programming language)|Java]], [[Rust (programming language)|Rust]] mixed|| {{D-P|Separate}} || externalgenerated || all{{Some|[[.NET]] framework, [[Java virtual machine]]}} || {{No}} || {{Free}}, [[BSDGNU licensesLesser General Public License|BSDGNU LGPL]]
|-
| HimeIronText Parser GeneratorLibrary || [[LALR parser|LALR]](1), [[GLR parser|GLR]] || ? || [[C Sharp (programming language)|C#]], || [[JavaC Sharp (programming language)|JavaC#]] || separate{{D-A|Mixed}} || generated or external || {{Some|[[.NET Framework]], [[Java Virtual Machine]]framework}} || {{No}} || {{Free}}, [[GNU Lesser General PublicApache License|GNU LGPLApache]] 2.0
|-
| IronText LibraryJison || [[LALR parser|LALR]](1), [[LR parser|LR]](0), [[GLRSLR parser|GLRSLR]](1) || [[C Sharp (programming language)|C#Yacc]] || [[JavaScript]], [[C Sharp (programming language)|C#]], [[PHP]] || mixed{{D-A|Mixed}} || generated or external || [[.NET Framework]]{{Yes|All}} || {{No}} || {{Free}}, [[ApacheMIT License|Apache License 2.0MIT]]
|-
| JisonSyntax || [[LALR parser|LALR]](1)]], [[LR parser|LR]](0)]], [[SLR parser|SLR]](1) [[Canonical LR parser|CLR]](1) [[LL parser|LL]](1) || YACC[[JSON]]/[[Yacc]] || [[JavaScript]], [[Python (programming language)|Python]], [[PHP]], [[Ruby (programming language)|Ruby]], [[C++]], [[C Sharp (programming language)|C#]], [[PHPRust (programming language)|Rust]], [[Java (programming language)|Java]] || mixed{{D-A|Mixed}} || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[MIT License|MIT]]
|-
| Laja || Scannerless, two phase || Laja || [[Java (programming language)|Java]] || separate{{D-P|Separate}} || [[scannerlessScannerless parsing|scannerless]] || all{{Yes|All}} || {{No}} || {{Free}}, [[GNU General Public License|GNU GPL]]
|-
| ModelCC || [[Earley Parserparser|Earley]] || Annotated class model || [[Java (programming language)|Java]] || generatedGenerated || generated || all{{Yes|All}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
|-
| P1P3 || CombinatorsEarley–combinators || BNF-like || [[OCaml]] || mixed{{D-A|Mixed}} || external, or scannerless || all{{Yes|All}} || {{No}} || ?
|-
| P3P4 || Earley–combinators, infinitary Earley/combinatorsCFGs || BNF-like || [[OCaml]] || mixed{{D-A|Mixed}} || external, or scannerless || all{{Yes|All}} || {{No}} || ?
|-
| [[Scannerless Boolean Parser]] || [[Scannerless parsing|Scannerless GLR]] ([[Boolean grammar]]s) || ? || [[Haskell]], [[Java (programming language)|Java]] || {{D-P|Separate}} || [[Scannerless parsing|scannerless]] || {{Some|[[Java virtual machine]]}} || {{No}} || {{Free}}, [[BSD licenses|BSD]]
| P4 || Earley/combinators, infinitary CFGs || BNF-like || OCaml || mixed || external, or scannerless || all || {{No}} || ?
|-
| [[ScannerlessSyntax BooleanDefinition ParserFormalism|SDF]] /SGLR || [[scannerlessScannerless parsing|Scannerless GLR]] (|| [[BooleanSyntax grammarDefinition Formalism|SDF]]s) || ? || [[HaskellC (programming language)|HaskellC]], [[Java (programming language)|Java]] || separate{{D-P|Separate}} || [[scannerlessScannerless parsing|scannerless]] || [[Java Virtual Machine]]{{Yes|All}} || {{NoYes}} || {{Free}}, [[BSD licenses|BSD]]
|-
| [[Syntax Definition Formalism|SDF]]/SGLRSmaCC || [[scannerlessGLR parsingparser|Scannerless GLR]] ||(1), [[SyntaxLALR Definition Formalismparser|SDFLALR]] || [[C (programming language1)|C]], [[JavaCanonical (programmingLR language)parser|JavaLR]](1) || separate? || [[scannerless parsing|scannerlessSmalltalk]] || all{{D-A|Mixed}} || internal || {{Yes|All}} || {{Yes}} || {{Free}}, [[BSDMIT licensesLicense|BSDMIT]]
|-
| SmaCCSPARK || [[GLREarley parser|GLR(1)Earley]], [[LALR|| ? parser|LALR(1)]],| [[CanonicalPython LR(programming parserlanguage)|LR(1)Python]] || ?{{D-A|Mixed}} || [[Smalltalk]]external || mixed {{Yes|| internalAll}} || all{{No}} || {{YesFree}} ||, [[MIT License|MIT]]
|-
| SPARKTom || [[EarleyGLR Parserparser|EarleyGLR]] || ? || [[PythonC (programming language)|PythonC]] || mixedGenerated || externalnone || all{{Yes|All}} || {{No}} || [[MIT{{Free}}, License|MIT]]"No licensing or copyright restrictions"
|-
| TomUltraGram || [[LALR parser|LALR]], [[LR parser|LR]], [[GLR parser|GLR]] || ? || [[C++]], [[C Sharp (programming language)|C#]], [[Java (programming language)||Java]], generated[[Visual Basic .NET]] || none{{D-P|Separate}} || allgenerated || {{NoSome|[[Microsoft Windows|Windows]]}} || "No{{Yes}} licensing|| or copyright restrictions"{{Proprietary}}
|-
| UltraGramWormhole || [[LALRPruning parser(algorithm)|LALRPruning]], [[LR parser|LR]], [[GLR parser|GLR]], [[Scannerless parsing|Scannerless GLR]] || ? || [[C++]], [[C Sharp (programming language)|C#]], [[JavaPython (programming language)|Java]], [[Visual Basic .NETPython]] || separate{{D-A|Mixed}} || generated[[Scannerless parsing|scannerless]] || {{Some|[[Microsoft Windows|Windows]]}} || {{YesNo}} || {{Free}}, [[proprietaryMIT softwareLicense|ProprietaryMIT]]
|-
| Whale WormholeCalf || General tabular, [[pruningLL (algorithm)parser|PruningSLL]](k), Linear normal form ([[LRconjunctive parser|LRgrammar]]s), [[GLRLR parser|GLRLR]], Binary normal form ([[scannerlessBoolean parsing|Scannerless GLRgrammar]]s) || ? || [[C (programming language)|C++]], [[Python|| (programming language){{D-P|Python]]Separate}} || mixedexternal || [[scannerless parsing{{Yes|scannerless]] || [[Microsoft Windows]]All}} || {{No}} || [[MIT License|MIT]]{{Proprietary}}
|-
| Whale Calfyaep || General tabular, [[LLEarley parser|SLL(k)Earley]], Linear|| normal form ([[Conjunctive grammarYacc]]s),-like [[LR parser|LR]],| Binary normal form ([[BooleanC grammar]]s(programming language) || ? || [[C++]] || separate{{D-A|Mixed}} || external || all{{Yes|All}} || {{No}} || {{Free}}, [[proprietaryGNU softwareLesser General Public License|ProprietaryGNU LGPL]]
|}
 
== Context-sensitive grammars ==
 
This table compares parser generators with [[context-sensitive grammar]]s.
 
{| class="wikitable sortable"
! Name !! Parsing algorithm !! Input grammar notation !! Boolean grammar abilities !! Development platform !! [[Software license|License]]
!Name
!Parsing algortihm
!Input grammar notation
!Boolean grammar capabilities
!Development platform
!License
|-
|[http://qyxz.netau.net LuZ]
|delta chain
|modular
|Conjunctive, not complimentary
|all
|proprietary
|-
| [https://sourceforge.net/p/bnf2xml/ bnf2xml] || [[Recursive descent]] (is a text filter output is xml) || simple [[Backus–Naur form|BNF]]{{clarify|Only context-free grammars can be denoted in BNF.|date=January 2018}} grammar (input matching), output is xml || ? || Beta, and not a full EBNF parser || {{Free}}, [[GNU General Public License|GNU GPL]]
|[http://sourceforge.net/p/bnf2xml/ bnf2xml]
|recursive descent (is a text filter output is xml)
|simple bnf grammar (input matching), output is xml
|?
|beta, and not a full-fledged EBNF parser
|GNU GPLv2
|}
 
== See also ==
* [[Compiler-compiler]]
* [[List of lexerprogram generatorstransformation systems]]
* [[Comparison of regular expression engines]]
 
==References==
 
<references />
 
==Notes==
 
<references group="note"/>
 
==References==
{{Reflist}}
 
== External links ==
* [http://catalog.compilertools.net/lexparse.html The Catalog of Compiler Construction Tools]
* [http://java-source.net/open-source/parser-generators Open Source Parser Generators in Java]
 
{{Parsers}}
 
{{DEFAULTSORT:Comparison of parser generators}}