SkillAgentSearch skills...

Grappa

Write parsers for arbitrary text inputs, entirely in Java, with no preprocessing phase

Install / Use

/learn @fge/Grappa
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Read me first

The license of this project is Apache 2.0.

Requires Java 7 or later.

The latest versions are:

  • development: 2.1.0-beta.3; requires Java 8 (this is 2016, after all);
  • stable: 2.0.4. requires Java 7.

What this is

This package allows you to write grammars entirely in Java. Unlike, for instance, ANTLR and JavaCC, parsers written with this package do not require a pre-processing phase. Yes, this means you generate your parsers at runtime. And there is no DSL. Pure Java!

See also the debugger package.

And, uh, the name?

Well, you write <i>gra</i>mmars and can then generate <i>pa</i>rsers for them. (I also happen to like the drink of the same name)

Versions

There are three major versions.

2.1.x

This version is currently in development. See here for a list of changes from 2.0.x.

2.0.x

The latest 2.0.x version is 2.0.4. Using gradle:

dependencies {
    compile(group: "com.github.fge", name: "grappa", version: "2.0.4");
}

Projects using grappa

Parse tree generator

Grappa in itself does not generate a parse tree. While you can do it yourself, a module exists which allows you to do exactly that with little effort:

https://github.com/ChrisBrenton/grappa-parsetree

A visualizer (using Graphviz) also exists for such parse trees: https://github.com/fge/grappa-parsetree-visual

More advanced usage...

A project, currently in development, will allow you to generate a grappa parser from a formal grammar (BNF, EBNF, WSN, others) at runtime. See here:

https://github.com/ChrisBrenton/grappa-formal

Other usages

The following projects, all on GitHub, use grappa:

  • https://github.com/Offene-Bibel/converter (1.0.x);
  • https://github.com/uscexp/grappa.extension (1.0.x);
  • https://github.com/haasted/grappa-xml-parser (1.0.x);
  • https://github.com/opennars/opennars (2.0.x);
  • https://github.com/litesolutions/sonar-sslr-grappa (2.0.x);
  • https://github.com/hatstand0/Staskken (2.0.x).

Examples

Unfortunately, I still haven't documented the project properly.

Here is a link to a tutorial by Joseph Ottinger explaining a possible use of grappa:

http://enigmastation.com/2016/03/07/simple-grappa-tutorial/

The code for this tutorial is available on GitHub.

I have also put up a project with some sample grammars; in particular, a grammar which is able to fully parse any JSON:

https://github.com/fge/grappa-examples

Getting help

This project has an IRC channel (#grappa on Freenode; server: irc.freenode.net) and two dedicated Google groups: grappa-users and grappa-devel. They are also available to post by email.

View on GitHub
GitHub Stars66
CategoryDevelopment
Updated5mo ago
Forks12

Languages

Java

Security Score

92/100

Audited on Oct 14, 2025

No findings