(ftp:/cpsc.ucalgary.ca/pub/prolog1.1)

Comparison of parser generators

This is a list of notable parsing systems.

Chart Key

The following key describes the columns used in the comparison chart below.

Table Column Description
Parser Algorithm Each parsing system implements a special algorithm for analyzing a token stream and building a tree structure which corresponds to the syntax of the language as defined by a grammar. The different parsing algorithms are: LALR, LR(1), GLR, and LL.
Output Languages Most parser generators output source code in one or more specific programming languages. This source code is used in the construction of the compiler, interpreter or translator.
Grammar/Code If the grammar and source code are "mixed", the developer's source code is directly embedded into the grammar. This is the approach typically used by compiler-compilers. If "separated", the grammar and source-code are developed separately.
Lexer The lexer is used to read characters and identify tokens and pass them to the parser. Lexers can be generated by the parser development software, a separate lexer generator or hand coded.
Development Platform This is the required platform and/or operating system required to use the parser development software.
IDE Some products feature an integrated development environment.
License This column indicates the type end-user license offered by the author of the product.
Latest Release This column indicates the year of the latest (in some cases last) release. This column was introduced in 2008 so whereever it reads "2008" when youn com here in say 2010 has to be re-checked.

Comparison Charts

Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License Latest release
ACCENT Earley C Mixed External All no GNU GPL ?
ANTLR LL(*) C#, Java, Python Mixed Generated JVM yes BSD ?
AnaGram LALR(1) C, C++ ? ? Win32 ? Proprietary ?
APaGeD GLR, LALR(1), LL(k) D Mixed Generated All no Artistic ?
APG Recursive Descent C, C++ Separate None All no GNU GPL 2007
Aurochs Packrat C, Ocaml, Java Mixed Generated All no GNU GPL ?
Beaver LALR Java Mixed External JVM no BSD ?
Bison LALR, GLR C, C++ Mixed External All no GNU GPL 2008
Bison++ LALR(1) C++ ? ? ? ? GPL 1993
Bisonc++ LALR(1) C++ ? ? ? ? GPL 2008
BtYacc LALR C++ Mixed External All no Public domain 1999
BYACC LALR C Mixed External All no Public domain ?
BYACC/J LALR C, Java Mixed External (JFlex) All no Public domain ?
CL-peg Packrat Common Lisp Mixed Generated All no MIT ?
CL-Yacc LALR(1) Common Lisp Mixed External All no MIT ?
Coco/R LL(k) C, C++, C#, F#, Java, Ada, Pascal, Modula-2, Oberon, Ruby, Unicon, Visual Basic .NET Mixed Generated JVM, .NET no GNU GPL 2008
CppCC LL(k) C++ Mixed Generated POSIX no GNU GPL 2004
CSP LR(1) C++ ? ? ? ? Apache License V2.0 2007
CSTools LALR C# Mixed Generated .NET no ? ?
CUP LALR Java Mixed External (JLex) JVM no GNU GPL ?
DMS Software Reengineering Toolkit GLR Parlanse Mixed Generated Win32 no Proprietary ?
DParser Scannerless GLR C Mixed Generated POSIX no BSD ?
Dragon LR(1), LALR C++, Java ? ? ? ? GPL 2007
Drat! Packrat D Mixed Generated All no GNU GPL ?
Elkhound GLR C++, OCaml Mixed External All no BSD 2005
eli LALR C, others Mixed Generated POSIX no GNU GPL, GNU LGPL ?
Essence LR Scheme (Scheme 48) Mixed External All no BSD ?
eyapp LALR(1) Perl Mixed External All no Perl ?
F# PegParser Packrat F# Mixed Generated .NET no ? ?
Frisby Packrat Haskell Mixed Generated All no BSD ?
Frown LALR(k) Haskell 98 ? ? ? ? GPL ?
GDK ? ? ? ? ? ? MIT ?
GOLD LALR x86 assembly language, ANSI C, C#, D, Delphi, Java, Pascal, Python, Visual Basic 6, Visual Basic .NET, Visual C++ Separate Generated Win32 yes Freeware ?
grammar::peg Packrat TCL Mixed Generated All no BSD ?
Grammatica LL(k) C#, Java Separate Generated JVM no GNU LGPL ?
Happy LALR, GLR Haskell Mixed External All no BSD ?
HiLexed LL(k) Java Separate Internal JVM no GNU LGPL ?
Hyacc LR(1) C Mixed External All no GNU GPL ?
jacc LALR Java Mixed External JVM no BSD ?
JavaCC LL(k) Java Mixed Generated JVM yes BSD ?
jay LALR C#, Java Mixed None All no BSD ?
JetPAG LL(k) C++ Mixed Generated All no GNU GPL 2007
JS/CC LALR(1) JavaScript, JScript, ECMAScript Mixed Internal All yes Artistic ?
Kelbt Backtracking LALR(1) ? ? ? ? ? GPL 2007
kmyacc LALR(1) C, Java, Perl, JavaScript Mixed External All no GNU GPL ?
Lapg LALR Java, Javascript, C, C++, C# Mixed Generated JVM no GNU GPL 2007
LEMON LALR C Mixed External All no Public domain 2008
Lime LALR(1) PHP ? ? ? ? GPL ?
LISA LR, LL, LALR, SLR Java Mixed Generated JVM yes Public Domain ?
LPeg Parsing Machine Lua Mixed Generated All no MIT ?
LPG LALR Java Mixed Generated JVM no EPL ?
LLgen LL(1) C ? ? ? ? BSD ?
LLnextgen LL(1) C ? ? ? ? GPL ?
LRGen LR(1) C++ Separate Generated Win32 no Proprietary ?
Menhir LR(1) OCaml Mixed Generated All no QPL ?
Mini Parser Generator ? Python ? ? ? ? LGPL ?
ML-Yacc LALR(1) ML Mixed External All no ? ?
Monkey LR(1) Java ? ? ? ? GPL ?
More Than Parsing LL(1) Java Separate Generated JVM no GNU GPL ?
MyL Programming Language Mylc Delphi, Java, C#, JScript, SQL Mixed Generated Win32 no Public domain ?
Narwhal Packrat C Mixed Generated POSIX, Win32 no BSD ?
ocamlyacc LALR(1) OCaml Mixed External (Ocamllex) All no QPL ?
olex LL(1) C++ GPL 2002
Packrat Packrat Scheme Mixed Generated All no MIT ?
Pappy Packrat Haskell Mixed Generated All no ? ?
Parsec (parser) GLR Haskell Mixed None All no BSD ?
LALR(1) Perl GPL ?
Parser Objects ? LL(k) Java Mixed ? JVM no zlib ?
Parsnip Packrat C++ Mixed Generated Win32 no GNU GPL 2007
peg Recursive Descent (PEG) C, C++ Mixed Generated All no MIT 2007
PEGTL Recursive Descent (PEG) C++0x Mixed Internal POSIX no MIT ?
PGE ? Recursive Descent (PEG) Parrot bytecode Mixed Generated All no ? ?
PyPy rlib Packrat Python Mixed Generated All no MIT ?
PLY LALR(1) Python Mixed Generated All no GNU GPL ?
PRECC LL(k) C Separate Generated MS-DOS, POSIX no GNU GPL ?
Rats! PEG Java Mixed Generated JVM no GNU LGPL ?
QLALR LALR(1) C++ Mixed External All no GNU GPL ?
SableCC LALR Java, C, C++, C#, OCaml, Python Separate Generated All no GNU LGPL 2008
Scannerless Boolean Parser Scannerless GLR (Boolean Grammars) Java, Haskell Separate Generated All no BSD ?
SmaCC LALR(1)/LR(1) Smalltalk Mixed Internal All yes MIT ?
SLK LL(k) C, C++, C#, Java Separate External All no Proprietary ?
SPARK Earley Python Mixed External All no MIT ?
Spirit LL(k) C++ Mixed Internal All no Boost 2008
Styx ? C ? ? ? ? LGPL ?
Tap LL(1) C++ ? ? ? ? GPL 2002
TextTransformer LL(k) C++ Mixed Generated Win32 yes Proprietary ?
Tom LR(k)/Tomita C ? ? ? ? ? ?
Toy Parser Generator (TPG) Backtracking Python ? ? ? ? LGPL ?
TP Yacc LALR(1) Turbo Pascal Mixed External All yes GNU GPL ?
Treetop Recusive Descent (PEG) Ruby Mixed Generated All no ? ?
Yacc (AT&T) ? LALR C, others Mixed External POSIX no ? ?
Yacc++ LR(k)/LALR(k) C++, C# Mixed Generated or External All no Proprietary ?
Yapps LL(1) Python Mixed Generated All no MIT ?
Yard Recursive Descent (PEG) C++ Mixed Generated All no MIT or Public Domain 2008
yecc LALR(1) Erlang Separate Generated All no Erlang ?
Visual BNF LR(1)/LALR(1) C# Separate Generated .NET yes Proprietary ?
Visual Parse++ LALR C, C++, C#, Java Separate Generated Win32 yes Proprietary ?
YooParse LR C++ Mixed External (YooLex) All no MIT 2002
Wisent LALR(1) C++, Java ? ? ? ? GPL 2006
Product Website Parsing Algorithm Output Languages Grammar / Code Lexer Development Platform IDE License Latest release

See also

External links

Search another word or see (ftp:/cpsc.ucalgary.ca/pub/prolog1.1)on Dictionary | Thesaurus |Spanish
  • Please Login or Sign Up to use the Recent Searches feature
FAVORITES
RECENT