Struct pidgin::Matcher[][src]

pub struct Matcher {
    pub rx: Regex,
    // some fields omitted
}

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

impl Matcher[src]

pub fn parse<'t>(&self, s: &'t str) -> Option<Match<'t>>[src]

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"

pub fn is_match(&self, text: &str) -> bool[src]

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

impl Debug for Matcher[src]

impl<'de> Deserialize<'de> for Matcher[src]

impl Serialize for Matcher[src]

Auto Trait Implementations

impl RefUnwindSafe for Matcher

impl Send for Matcher

impl Sync for Matcher

impl Unpin for Matcher

impl UnwindSafe for Matcher

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.