This library implements what is known as a parser combinator system. The idea behind this is to define your language by writing small, composable parsers and combining them into a larger logic. It was written mainly for the protobuf library which needed a parser that could run on compile-time to parse the protobuf specification. The original idea came from a small example library written by kmizu: https://gist.github.com/kmizu/2b10c2bf0ab3eafecc1a825b892482f3 but has been extensively rewritten with more matchers, more combinators, and proper error handling. It still has some way to go to be the user-friendly parser library it was indented to be, but it works well enough for now. For some examples on how to use the library see the examples folder. Most of the combinators have been written to accept not only string input and output, but any type. This means that this library could theoretically be used to parse not only string data but other types of data as well. Currently however the error reporting is only string based, but an alternate system is being considered.
This file is automatically generated from the documentation found in
nim doc2 combparser.nim to get the full documentation.