1 unstable release

new 0.1.0 Apr 10, 2025

#319 in Parser tooling

MIT/Apache

7KB

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.

No runtime deps