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}