pub trait Language: Clone {
    fn get_ts_language(&self) -> TSLanguage;

    fn from_path<P: AsRef<Path>>(_path: P) -> Option<Self> { ... }
    fn ast_grep<S: AsRef<str>>(&self, source: S) -> AstGrep<Self> { ... }
    fn skippable_kind_ids(&self) -> &'static [u16] { ... }
    fn pre_process_pattern<'q>(&self, query: &'q str) -> Cow<'q, str> { ... }
    fn meta_var_char(&self) -> char { ... }
    fn expando_char(&self) -> char { ... }
    fn extract_meta_var(&self, source: &str) -> Option<MetaVariable> { ... }
}
Expand description

Trait to abstract ts-language usage in ast-grep, which includes:

  • which character is used for meta variable.
  • if we need to use other char in meta var for parser at runtime
  • pre process the Pattern code.

Required Methods§

tree sitter language to parse the source

Provided Methods§

Return the file language from path. Return None if the file type is not supported.

Create an AstGrep instance for the language

ignore trivial tokens in language matching

normalize pattern code before matching e.g. remove expression_statement, or prefer parsing {} to object over block

Configure meta variable special character By default $ is the metavar char, but in PHP it can be #

Some language does not accept $ as the leading char for identifiers. We need to change $ to other char at run-time to make parser happy, thus the name expando. By default this is the same as meta_var char so replacement is done at runtime.

extract MetaVariable from a given source string At runtime we need to use expand_char

Implementors§