/autumn

A Java parser combinator library written with an unmatched feature set.

Primary LanguageJavaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Autumn

Autumn is a Java (8+) parser combinator library written with an unmatched feature set:

  • Bundles pre-defined parsers and combinators for most common use cases
  • Write your own parsers with regular Java code
  • Support for both scannerless parsing and a separate lexing/tokenization step
  • Support for parsing both text strings and lists of objects
  • Associativity support for operators
  • Left-recursion support
  • Context-sensitive parsing (exclusive !!)
  • Reasonably fast (5x slower than (the very fast) ANTLR)
  • Thoroughly documented
  • Small & clean codebase

Examples:

The latest version of this document is available online at
https://github.com/norswap/autumn/blob/master/README.md

Installation

If you are using Maven (or another popular JVM build tool), see here.

Legacy

If you were looking for older Autumn releases (such as those described in one of my papers), see the autumn_archive repository.

If you were looking for the Whimsy compiler framework, see here. Whimsy was Autumn + Uranium (a middle-end compiler library), and Uranium didn't pan out, so everything that was useful in Whimsy now lives here.