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

Folders and files

NameName
Last commit message
Last commit date
Feb 27, 2021
Oct 30, 2021
Mar 7, 2021
Jan 6, 2021
Oct 30, 2021
Mar 9, 2021
Jan 2, 2021
Mar 7, 2021
Mar 10, 2021
Jun 19, 2018
Feb 1, 2021
Mar 12, 2021
Jan 2, 2021
Jan 2, 2021
Jan 2, 2021

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.