tree_sitter_parsers/
lib.rs1#[allow(dead_code)]
2use tree_sitter::{Parser, Language, Tree};
3extern "C" { fn tree_sitter_bash() -> Language; }
4extern "C" { fn tree_sitter_c() -> Language; }
5extern "C" { fn tree_sitter_cpp() -> Language; }
6extern "C" { fn tree_sitter_c_sharp() -> Language; }
7extern "C" { fn tree_sitter_css() -> Language; }
8extern "C" { fn tree_sitter_elm() -> Language; }
9extern "C" { fn tree_sitter_go() -> Language; }
10extern "C" { fn tree_sitter_html() -> Language; }
11extern "C" { fn tree_sitter_java() -> Language; }
12extern "C" { fn tree_sitter_javascript() -> Language; }
13extern "C" { fn tree_sitter_kotlin() -> Language; }
14extern "C" { fn tree_sitter_lua() -> Language; }
15extern "C" { fn tree_sitter_php() -> Language; }
16extern "C" { fn tree_sitter_python() -> Language; }
17extern "C" { fn tree_sitter_ruby() -> Language; }
18extern "C" { fn tree_sitter_rust() -> Language; }
19extern "C" { fn tree_sitter_scala() -> Language; }
20extern "C" { fn tree_sitter_solidity() -> Language; }
21extern "C" { fn tree_sitter_verilog() -> Language; }
22extern "C" { fn tree_sitter_yaml() -> Language; }
23
24pub fn parse(code: &str, lang: &str) -> Tree {
25 let mut parser = Parser::new();
26 let language = match &lang[..] {
27 "bash" => unsafe { tree_sitter_bash() },
28 "c" => unsafe { tree_sitter_c() },
29 "cpp" => unsafe { tree_sitter_cpp() },
30 "c_sharp" => unsafe { tree_sitter_c_sharp() },
31 "css" => unsafe { tree_sitter_css() },
32 "elm" => unsafe { tree_sitter_elm() },
33 "go" => unsafe { tree_sitter_go() },
34 "html" => unsafe { tree_sitter_html() },
35 "java" => unsafe { tree_sitter_java() },
36 "javascript" => unsafe { tree_sitter_javascript() },
37 "kotlin" => unsafe { tree_sitter_kotlin() },
38 "lua" => unsafe { tree_sitter_lua() },
39 "php" => unsafe { tree_sitter_php() },
40 "python" => unsafe { tree_sitter_python() },
41 "ruby" => unsafe { tree_sitter_ruby() },
42 "rust" => unsafe { tree_sitter_rust() },
43 "scala" => unsafe { tree_sitter_scala() },
44 "solidity" => unsafe { tree_sitter_solidity() },
45 "verilog" => unsafe { tree_sitter_verilog() },
46 "yaml" => unsafe { tree_sitter_yaml() },
47 _ => unsafe { tree_sitter_bash() }
48 };
49 parser.set_language(language).unwrap();
50 parser.parse(code, None).unwrap()
51}