mode tables

This commit is contained in:
AF 2023-07-30 20:47:27 +00:00
parent 0ebcc4623c
commit 6e19ebcbbb

View File

@ -1,4 +1,16 @@
//! [`Mode`]-based parsing.
//!
//! | [`Mode`] | [`Factory`] | [`Atomic`] |
//! |------------------|---------------------|--------------------|
//! | [`RegularMode`] | [`RegularFactory`] | [`RegularAtomic`] |
//! | [`InliningMode`] | [`InliningFactory`] | [`InliningAtomic`] |
//!
//! [`Factory`]: crate::rcore::Factory
//! [`Atomic`]: crate::atomic::Atomic
//! [`RegularFactory`]: crate::rcore::RegularFactory
//! [`RegularAtomic`]: crate::atomic::RegularAtomic
//! [`InliningFactory`]: crate::rcore::InliningFactory
//! [`InliningAtomic`]: crate::atomic::InliningAtomic
mod inlining;
mod regular;
@ -32,13 +44,16 @@ pub type ModeResult<M, A, E, I> = Result<ParseSuccess<M, A, I>, E>;
/// Mode of parsing.
///
/// | [`Mode`] | [`Mode::ParseSuccess<A, I>`] | [`Mode::ExtensionResult<A, E>`] | [`Mode::ExtensionSource<A>`] |
/// |------------------|------------------------------|---------------------------------|------------------------------|
/// | [`RegularMode`] | `A` | [`Result<A, E>`] | `A` |
/// | [`InliningMode`] | [`(A, I)`] | `E` | [`()`] |
/// | [`Mode`] | [`ParseSuccess<A, I>`] | [`ExtensionResult<A, E>`] | [`ExtensionSource<A>`] |
/// |------------------|------------------------|---------------------------|------------------------|
/// | [`RegularMode`] | `A` | [`Result<A, E>`] | `A` |
/// | [`InliningMode`] | [`(A, I)`] | `E` | [`()`] |
///
/// [`(A, I)`]: tuple
/// [`()`]: unit
/// [`ParseSuccess<A, I>`]: Mode::ParseSuccess
/// [`ExtensionResult<A, E>`]: Mode::ExtensionResult
/// [`ExtensionSource<A>`]: Mode::ExtensionSource
pub trait Mode {
/// Successful parsing, may contain the parser itself
/// (`I`, usually [`Stream`]).