[−][src]Struct pidgin::Matcher
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.
Methods
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 Serialize for Matcher
[src]
fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
__S: Serializer,
impl<'de> Deserialize<'de> for Matcher
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
__D: Deserializer<'de>,
Auto Trait Implementations
impl Unpin for Matcher
impl Sync for Matcher
impl Send for Matcher
impl UnwindSafe for Matcher
impl !RefUnwindSafe for Matcher
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
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.
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>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> DeserializeOwned for T where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,