shiftkit 0.1.0

A quick & easy parser generator
Documentation
  • Coverage
  • 100%
    1 out of 1 items documented0 out of 0 items with examples
  • Size
  • Source code size: 28.24 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 968.39 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 9s Average build duration of successful builds.
  • all releases: 9s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • caydenlund/shiftkit
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • caydenlund

shiftkit

shiftkit is a Rust library for generating efficient LR, SLR, and LALR parsers from grammar definitions.

It aims to provide a clean, modular, and modern API for parser generation, with a focus on flexibility, diagnostics, and performance---all written idiomatically in Rust.


Planned Features

  • Define grammars using Rust data structures (not DSLs or macros — unless you want to!)
  • Generate parse tables for LR(0), LR(1), SLR(1), and LALR(1) parsers
  • Generate parse tables at compile-time, statically embedded in the binary
  • Resolve and report conflicts (shift/reduce, reduce/reduce) with detailed diagnostics
  • Backed by formal parsing theory, powered by efficient data structures
  • Tools to inspect states, lookaheads, and parser behavior

Goals

  • Be approachable to compiler beginners and usable by experts
  • Stay modular---you can swap out pieces (e.g., custom lexers or grammar builders)
  • Offer great error messages for grammar issues
  • Include powerful tooling, like command-line generation or visualization

Status

shiftkit is in early development and APIs are still being designed.

If you’re interested in contributing or testing early features, feel free to reach out or open an issue!


License

Dual-licensed under MIT or Apache-2.0---choose whichever you prefer.


Contributions Welcome

Want to help design the API, test parsing edge cases, or implement LALR(1) lookahead logic? Open an issue---let's build this together.