Skip to content
/ autumn Public

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

License

Notifications You must be signed in to change notification settings

norswap/autumn

Repository files navigation

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

Versioning

Versions are M.m.p

  • Major (M) is incremented when significant changes are made to the library. It might take non-trivial time to migrate.
  • Minor (m) is incremented when new features are added, or existing features are modified. The main contract here is that migration should be quick, and a clear migration path exists.
  • Patch (p) is incremented for hotfixes, or tiny / quality-of-life improvements. Patch never introduce breaking changes, excepted under the guise of bug-fixes.

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. The Uranium semantic analysis library lives on in this repository.