Skip to main content

tree_sitter_qbasic/
lib.rs

1use tree_sitter_language::LanguageFn;
2
3extern "C" {
4    fn tree_sitter_qbasic() -> *const ();
5}
6
7/// Language function for QBasic.
8pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_qbasic) };
9
10#[cfg(test)]
11mod tests {
12    #[test]
13    fn test_can_load_grammar() {
14        let mut parser = tree_sitter::Parser::new();
15        parser
16            .set_language(&super::LANGUAGE.into())
17            .expect("Error loading qbasic parser");
18    }
19
20    #[test]
21    fn test_parse_sub_definition() {
22        let mut parser = tree_sitter::Parser::new();
23        parser
24            .set_language(&super::LANGUAGE.into())
25            .expect("Error loading qbasic parser");
26        let source = "SUB Hello\nPRINT \"Hello\"\nEND SUB\n";
27        let tree = parser.parse(source, None).expect("Failed to parse");
28        let root = tree.root_node();
29        assert_eq!(root.kind(), "program");
30        assert!(!root.has_error());
31    }
32}