Pups

Pups - Pretty Understandable Parsers

Pups is a parser combinators library. It is designed to work for any type of input, whether that be text, or some other sequenced data. It provides a number of elementary combinators that allow the easy construction of larger parsers.

Features

Parsers can be run in different modes, that return different information. A user may choose to collect all parsed data, accumulated errors, and messages, or they may choose to simply check if the input is valid for the parser. These modes allow for much faster parsers when not all data is needed.

Combinator Methods

All parsers can be used in combinators such as .or_not(), .then(), .map() and others. This allows the composition of complete parsers from individual components.

Strong Error and Message Control

The Pups library makes a type-level distinction between fatal errors that immediately stop the parsing process, and accumulated messages (useful for compiler errors and warnings that allow recovery) that are simply tracked alongside the output.

NOTE

Pups is a work in progress, and is currently used to parse my Compose programming language. I plan on improving it as I continue to use it for future projects, but currently I do not have documentation available beyond the Rust documentation comments.