Skip to main content

gram_data/
parse.rs

1use tree_sitter::{Language, Parser, Tree};
2
3pub fn language() -> Language {
4    let raw_fn = tree_sitter_gram::LANGUAGE.into_raw();
5    unsafe {
6        let ptr = raw_fn();
7        Language::from_raw(ptr as *const tree_sitter::ffi::TSLanguage)
8    }
9}
10
11pub fn parser() -> Parser {
12    let mut p = Parser::new();
13    p.set_language(&language()).expect("gram language");
14    p
15}
16
17pub fn parse(source: &str) -> Tree {
18    let mut p = parser();
19    p.parse(source, None).expect("parse")
20}