Struct pidgin::Matcher

source ·
pub struct Matcher {
    pub rx: Regex,
    /* private fields */
}
Expand description

This is functionally equivalent to a Regex: you can use it repeatedly to search a string. It cannot itself be used directly to split strings, but its regular expression is public and may be so used. It improves on regular expressions in that the Match object it returns is the root node in a parse tree, so its matches preserve parse structure.

Fields§

§rx: Regex

The Regex used for parsing.

Implementations§

Returns Some(Match) if the grammar can parse the string. Note that unless the grammar is string-bounded, this only means it can parse the string at some point.

Examples
let m = grammar!{

	(?bB)

	S -> r(r"\A") <subject> <VP> r(r"\.\z")

	subject           => [["Amy", "Bob", "Carter", "Dianne"]]
	VP                -> <verb_intransitive> | <verb_transitive> <object>
	verb_intransitive => [["naps", "doodles", "exercises", "meditates"]]
	verb_transitive   => [["eats", "programs", "sees", "throws"]]
	object            => (?w) [["a sandwich", "eggs", "the sunset"]]

}.matcher()?;

let parse_tree = m.parse("Amy programs the sunset.").unwrap();

println!("{}", parse_tree);

// S (0, 24): "Amy programs the sunset."
//   subject (0, 3): "Amy"
//   VP (4, 23): "programs the sunset"
//     verb_transitive (4, 12): "programs"
//     object (13, 23): "the sunset"

Returns whether the grammar can parse the string. This is a cheaper operation than parsing.

Examples
let m = grammar!{

	(?bB)

	S -> r(r"\A") <subject> <VP> r(r"\.\z")

	subject           => [["Amy", "Bob", "Carter", "Dianne"]]
	VP                -> <verb_intransitive> | <verb_transitive> <object>
	verb_intransitive => [["naps", "doodles", "exercises", "meditates"]]
	verb_transitive   => [["eats", "programs", "sees", "throws"]]
	object            => (?w) [["a sandwich", "eggs", "the sunset"]]

}.matcher()?;

assert!(m.is_match("Bob doodles."));

Trait Implementations§

Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.