Enum ast_grep_core::matcher::Pattern

source ·
pub enum Pattern<L: Language> {
    MetaVar {
        meta_var: MetaVariable,
        kind: Option<u16>,
    },
    Terminal {
        text: String,
        is_named: bool,
        kind_id: u16,
    },
    Internal {
        kind_id: u16,
        children: Vec<Pattern<L>>,
        lang: PhantomData<L>,
    },
}

Variants§

§

MetaVar

Fields

§meta_var: MetaVariable
§kind: Option<u16>
§

Terminal

Node without children.

Fields

§text: String
§is_named: bool
§kind_id: u16
§

Internal

Non-Terminal Syntax Nodes are called Internal

Fields

§kind_id: u16
§children: Vec<Pattern<L>>
§lang: PhantomData<L>

Implementations§

source§

impl<L: Language> Pattern<L>

source

pub fn str(src: &str, lang: L) -> Self

source

pub fn fixed_string(&self) -> Cow<'_, str>

source

pub fn has_error(&self) -> bool

source

pub fn is_trivial(&self) -> bool

source

pub fn defined_vars(&self) -> HashSet<&str>

Get all defined variables in the pattern. Used for validating rules and report undefined variables.

source§

impl<L: Language> Pattern<L>

source

pub fn try_new(src: &str, lang: L) -> Result<Self, PatternError>

source

pub fn new(src: &str, lang: L) -> Self

source

pub fn contextual( context: &str, selector: &str, lang: L ) -> Result<Self, PatternError>

source

pub fn doc(doc: StrDoc<L>) -> Self

Trait Implementations§

source§

impl<L: Clone + Language> Clone for Pattern<L>

source§

fn clone(&self) -> Pattern<L>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<L: Language> Debug for Pattern<L>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'r, D: Doc> From<Node<'r, D>> for Pattern<D::Lang>

source§

fn from(node: Node<'r, D>) -> Self

Converts to this type from the input type.
source§

impl<L: Language> Matcher<L> for Pattern<L>

source§

fn match_node_with_env<'tree, D: Doc<Lang = L>>( &self, node: Node<'tree, D>, env: &mut Cow<'_, MetaVarEnv<'tree, D>> ) -> Option<Node<'tree, D>>

Returns the node why the input is matched or None if not matched. The return value is usually input node itself, but it can be different node. For example Has matcher can return the child or descendant node.
source§

fn potential_kinds(&self) -> Option<BitSet>

Returns a bitset for all possible target node kind ids. Returns None if the matcher needs to try against all node kind.
source§

fn get_match_len<D: Doc<Lang = L>>(&self, node: Node<'_, D>) -> Option<usize>

get_match_len will skip trailing anonymous child node to exclude punctuation.
source§

fn match_node<'tree, D: Doc<Lang = L>>( &self, node: Node<'tree, D> ) -> Option<NodeMatch<'tree, D>>

source§

fn find_node<'tree, D: Doc<Lang = L>>( &self, node: Node<'tree, D> ) -> Option<NodeMatch<'tree, D>>

Auto Trait Implementations§

§

impl<L> Freeze for Pattern<L>

§

impl<L> RefUnwindSafe for Pattern<L>
where L: RefUnwindSafe,

§

impl<L> Send for Pattern<L>
where L: Send,

§

impl<L> Sync for Pattern<L>
where L: Sync,

§

impl<L> Unpin for Pattern<L>
where L: Unpin,

§

impl<L> UnwindSafe for Pattern<L>
where L: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.