[go: up one dir, main page]

cpp_synom 0.12.0

Stripped-down Nom parser used by cpp_syn
Documentation
  • Coverage
  • 73.33%
    33 out of 45 items documented27 out of 42 items with examples
  • Size
  • Source code size: 52.4 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 3.46 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • mystor/cpp_syn
    1 0 1
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • mystor

Adapted from nom by removing the IResult::Incomplete variant which:

  • we don't need,
  • is an unintuitive footgun when working with non-streaming use cases, and
  • more than doubles compilation time.

Whitespace handling strategy

As (sy)nom is a parser combinator library, the parsers provided here and that you implement yourself are all made up of successively more primitive parsers, eventually culminating in a small number of fundamental parsers that are implemented in Rust. Among these are punct! and keyword!.

All synom fundamental parsers (those not combined out of other parsers) should be written to skip over leading whitespace in their input. This way, as long as every parser eventually boils down to some combination of fundamental parsers, we get correct whitespace handling at all levels for free.

For our use case, this strategy is a huge improvement in usability, correctness, and compile time over nom's ws! strategy.