Hook up tree-sitter-ocaml

ida_star
Wilfred Hughes 2021-08-16 22:00:16 +07:00
parent 28e824ca6c
commit 8ddb51ac82
2 changed files with 11 additions and 5 deletions

@ -14,16 +14,13 @@ fn build(package_name: &str, package_dir: &str, extra_files: &[&str]) {
}
}
dbg!(&c_files);
dbg!(&cpp_files);
if !cpp_files.is_empty() {
let mut cpp_build = cc::Build::new();
cpp_build.include(&dir).cpp(true);
cpp_build.include(&dir).cpp(true).flag_if_supported("-std=c++14");
for file in cpp_files {
cpp_build.file(dir.join(file));
}
cpp_build.compile(package_name);
cpp_build.compile(&format!("{}-cpp", package_name));
}
let mut build = cc::Build::new();
@ -48,6 +45,11 @@ fn main() {
&["scanner.c"],
);
build("tree-sitter-json", "vendor/tree-sitter-json/src", &[]);
build(
"tree-sitter-ocaml",
"vendor/tree-sitter-ocaml/ocaml/src",
&["scanner.cc"],
);
build(
"tree-sitter-rust",
"vendor/tree-sitter-rust/src",

@ -11,6 +11,7 @@ extern "C" {
fn tree_sitter_go() -> Language;
fn tree_sitter_javascript() -> Language;
fn tree_sitter_json() -> Language;
fn tree_sitter_ocaml() -> Language;
fn tree_sitter_rust() -> Language;
}
@ -22,6 +23,7 @@ pub fn supported(extension: &OsStr) -> bool {
|| extension == "js"
|| extension == "jsx"
|| extension == "json"
|| extension == "ml"
}
pub fn parse<'a>(
@ -43,6 +45,8 @@ pub fn parse<'a>(
unsafe { tree_sitter_json() }
} else if extension == "js" || extension == "jsx" {
unsafe { tree_sitter_javascript() }
} else if extension == "ml" {
unsafe { tree_sitter_ocaml() }
} else {
panic!("Unknown extension for tree-sitter parsers.")
};