Skip to main content

tree_sitter_gwbasic/
lib.rs

1use tree_sitter_language::LanguageFn;
2
3extern "C" {
4    fn tree_sitter_gwbasic() -> *const ();
5}
6
7/// Language function for GW-BASIC.
8pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_gwbasic) };
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 gwbasic parser");
18    }
19
20    #[test]
21    fn test_parse_hello_world() {
22        let mut parser = tree_sitter::Parser::new();
23        parser
24            .set_language(&super::LANGUAGE.into())
25            .expect("Error loading gwbasic parser");
26        let tree = parser
27            .parse("10 PRINT \"HELLO WORLD\"\n", None)
28            .expect("Failed to parse");
29        let root = tree.root_node();
30        assert_eq!(root.kind(), "program");
31        assert!(!root.has_error());
32    }
33}