#tokenizer #parser #rust

fuzzy-pickles

A low-level parser of Rust source code with high-level visitor implementations

2 releases

0.1.1 Aug 18, 2020
0.1.0 Jan 4, 2019

#1097 in Parser implementations

MIT/Apache

430KB
10K SLoC

Fuzzy Pickles

While there are many high-quality Rust parsers available, a slightly different kind of parser was needed to provide the detail needed for Strata Rust. To that end, Fuzzy Pickles was built using the Peresil parsing toolkit. The parser aims to:

  • be a low-level parser of Rust source code, providing unshackled access to the direct parsing structures including items like whitespace.
  • provide an easier-to-use visitor interface that allows quickly gathering information about Rust code.
  • provide reasonable quality errors about the parsing.
  • parse all syntactically-valid Rust code.

It has anti-goals as well! The parser does not:

  • attempt to perform semantic analysis of Rust code.
  • guarantee to reject all syntactically-invalid code.

Contribution opportunities

A project always has need for help from interested people!

Introductory opportunities 🌟

These are things that anyone should be able to help with!

  • Run the parser against your own Rust file, or a particularly interesting file you are aware of.
  • Narrow down a file that fails to parse to construct a test case.

Intermediate opportunities 🌟🌟🌟

These might require diving into the code a bit and adding new code or changing existing code.

  • Enhance the parser to recognize code that is currently not recognizable.
  • Verify that a piece of code is parsed correctly.

Please open up an issue to begin a dialog before starting if a feature seems like it will require more than just a straight-forward addition!

Advanced opportunities 🌟🌟🌟🌟🌟

These are intense feature requests that probably require a good amount of effort and definitely should be discussed in an issue before beginning.

  • Perform macro expansion

License

fuzzy-pickles is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

Authors

This crate was created by Jake Goulding of Integer 32.

Dependencies

~1.5MB
~38K SLoC