A
Ajax
Aspect-Oriented
 
B
Bloggers
Build Systems
ByteCode
 
C
CMS
Cache Solutions
Charting & Reporting
Chat Servers
Code Analyzers
Code Beautifiers
Code Coverage
Collections
Connection Pools
Crawlers
 
D
Databases
 
E
EJB Servers
ERP & CRM
ESB
Expression Languages
 
F
Forum Soft
 
G
General Purpose
Groupware
 
H
HTML Parsers
 
I
IDEs
Installers
Inversion of Control
Issue Tracking
 
J
J2EE Frameworks
JDBC
JMS
JMX
JSP Tag Libraries
Job Schedulers
 
L
Logging Tools
 
M
Mail Clients
 
N
Network Clients
Network Servers
 
O
Obfuscators
 
P
PDF Libraries
Parser Generators
Persistence
Portals
Profilers
 
R
RSS & RDF Tools
Rule Engines
 
S
SQL Clients
Scripting Languages
Search Engines
Source Control
 
T
Template Engines
Testing Tools
Text Processing
 
U
UML & Modeling
 
V
Validation
 
W
Web Frameworks
Web Mail
Web Servers
Web Services
Web Testing
Wiki Engines
 
X
XML Parsers
XML UI Toolkits
 

Open Source Parser Generators in Java

ANTLR

ANother Tool for Language Recognition, (formerly PCCTS) is a language tool that provides a framework for constructing recognizers, compilers, and translators from grammatical descriptions containing Java, C#, or C++ actions. ANTLR provides excellent support for tree construction, tree walking, and translation.

Go To ANTLR

SableCC

SableCC is an object-oriented framework that generates compilers (and interpreters) in the Java programming language. This framework is based on two fundamental design decisions. Firstly, the framework uses object-oriented techniques to automatically build a strictly typed abstract syntax tree. Secondly, the framework generates tree-walker classes using an extended version of the visitor design pattern which enables the implementation of actions on the nodes of the abstract syntax tree using inheritance.

Go To SableCC

Beaver

Beaver is a LALR(1) parser generator. It takes a context free grammar and converts it into a Java class that implements a parser for the language described by a grammar.

Go To Beaver

CUP

A LALR parser generator.

Go To CUP

JavaCC

Java Compiler Compiler (JavaCC) is the most popular parser generator for use with Java [tm] applications. A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar. In addition to the parser generator itself, JavaCC provides other standard capabilities related to parser generation such as tree building (via a tool called JJTree included with JavaCC), actions, debugging, etc.

Go To JavaCC

Chaperon

Chaperon is a project that converts structured text to XML. It includes a strong LALR(1) parser to parse the text and a tree builder, which creates an XML document.

Go To Chaperon

JFlex

JFlex is a lexical analyzer generator (also known as scanner generator) for Java

Go To JFlex

JTopas

The JTopas project provides a small, easy-to-use Java library for the common problem of parsing arbitrary text data. These data can come from a simple configuration file with a few comments, a HTML, XML or RTF stream, source code of various programming languages etc. Sometimes a text has to be parsed completely, sometimes only parts of it are important.

Go To JTopas

runcc

RunCC is a new kind of parsergenerator that generates parsers and lexers at runtime. Source generation is only optional. It features the absence of any cryptography. Although intended for small languages, it comes with Java and XML example parsers.

Go To runcc

grammatica

Grammatica is a C# and Java parser generator (compiler compiler). It improves upon simlar tools (like yacc and ANTLR) by creating well-commented and readable source code, by having automatic error recovery and detailed error messages, and by support for testing and debugging grammars without generating source code.

Go To grammatica

SJPT

SJPT is a parsing toolkit that supports both top-down (LL(1) and Simple Precedence) and bottom-up parsing (LR(0), SLR(1), LR(1) and LALR(1)). The toolkit also supports generating Java parsers for all the bottom-up parsing methods, based on a CUP definition (similar to Yacc and CUP, but not restricted to LALR parsers only).

Go To SJPT

OpenL

OpenL is an innovative framework for development of different language configurations. It is not another programming language, but rather a methodology and supporting tools allowing professional programmers to create their own versions of Java-like languages.

Go To OpenL

JParsec

Jparsec is a recursive-desent parser combinator framework written for Java. It can be used to construct parser for simple toy syntax as well as bizzare context-sensitive ones.

Go To JParsec

Coco/R

Coco/R is a compiler generator, which takes an attributed grammar of a source language and generates a scanner and a parser for this language. The scanner works as a deterministic finite automaton. The parser uses recursive descent. LL(1) conflicts can be resolved by a multi-symbol lookahead or by semantic checks. Thus the class of accepted grammars is LL(k) for an arbitrary k. There are versions of Coco/R for different languages.

Go To Coco/R

Laja

Laja is a combined code- and parser generator. The code generator can run on most platforms. The parser generator generates Java code. One of the ideas of Laja is that it should be simple and intuitive to use by developers.

Go To Laja

parboiled

parboiled is a pure Java library that provides a lightweight and easy-to-use, yet powerful and elegant PEG (Parsing Expression Grammar) parsing facility. You define your grammar rules directly in Java source, there is no need to write and maintain special, external grammar files. parboiled provides for clean separation of grammar and action code while preserving seamless integration with full IDE support (syntax hightlighting, code navigation, refactoring, etc.). parboiled minimizes the time and cost required for developing custom DSLs (Domain Specific Languages) in Java.

Go To parboiled

Rats!

Rats! is a parser generator for C-like languages (though currently it only generates parsers in Java). It has been designed so that grammars are concise and easily extensible. To this end, grammars are organized into modules that can be easily changed by adding, removing, or modifying alternatives in individual productions and composed with each other through module parameters. Furthermore, it relies on ordered choices to avoid ambiguities, supports syntactic predicates for unlimited lookahead, and integrates lexing with parsing. Finally, it has extensive support for automatically generating abstract syntax trees, thus greatly reducing the need for explicit semantic actions.

Go To Rats!





Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. This site is independent of Sun Microsystems, Inc.