1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//! # pcomb: parser combinators
//! This is a tiny parser combinator library for rust.
//! Combinators allow the ability to easily compose several parsing functions to
//! produce a larger parser with easy control over output types and control flow.
//! This library can currently statically parse any slice type, including
//! generic ones.
//!
//!
//! See the documentation for the [parse] module to get started.
//! And see the examples folder for a complete parsing example or run
//! `cargo run --example math` inside the project.
//!
//! ## Features
//! This crate defines a few features. All features are enabled by default.
//!
//! - `builtin_parsers`: This feature enables the entire [crate::parsers] module.
//! Your crate should not use this feature if it is not taking advantage of the
//! module.
//! - `std`: This feature enables the use of std. The absence of it enables
//! `#[no_std]`. Note that crate features are additive across all dependencies
//! in your dependency tree, so if other crates dependant on this have std
//! enabled, it will be compiled with std. Note that there are parts of the
//! crate that still require the use of alloc.

#![cfg_attr(not(feature = "std"), no_std)]

pub mod slice;
pub mod parse;

pub use parse::{Parse, ParseError, Empty, Identity, Match};
pub use slice::Slice;

#[cfg(feature = "builtin_parsers")]
pub mod parsers;