Skip to main content

garbage_code_hunter/treesitter/
parsers.rs

1use crate::language::Language;
2use tree_sitter_c;
3use tree_sitter_cpp;
4use tree_sitter_go;
5use tree_sitter_java;
6use tree_sitter_javascript;
7use tree_sitter_python;
8use tree_sitter_ruby;
9use tree_sitter_rust;
10use tree_sitter_swift;
11use tree_sitter_typescript;
12use tree_sitter_zig;
13
14/// Get the tree-sitter grammar for a given language.
15/// Returns None if the language has no compiled grammar available.
16pub fn get_grammar(lang: Language) -> Option<tree_sitter::Language> {
17    match lang {
18        Language::Rust => Some(tree_sitter_rust::LANGUAGE.into()),
19        Language::Python => Some(tree_sitter_python::LANGUAGE.into()),
20        Language::JavaScript => Some(tree_sitter_javascript::LANGUAGE.into()),
21        Language::TypeScript => Some(tree_sitter_typescript::LANGUAGE_TYPESCRIPT.into()),
22        Language::Go => Some(tree_sitter_go::LANGUAGE.into()),
23        Language::Java => Some(tree_sitter_java::LANGUAGE.into()),
24        Language::Ruby => Some(tree_sitter_ruby::LANGUAGE.into()),
25        Language::Swift => Some(tree_sitter_swift::LANGUAGE.into()),
26        Language::Zig => Some(tree_sitter_zig::LANGUAGE.into()),
27        Language::C => Some(tree_sitter_c::LANGUAGE.into()),
28        Language::Cpp => Some(tree_sitter_cpp::LANGUAGE.into()),
29        _ => None,
30    }
31}