tree_sitter_parsers/
lib.rs

1#[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}