Struct pidgin::Matcher [−][src]
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]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,