diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 40 |
1 files changed, 39 insertions, 1 deletions
| @@ -1,6 +1,44 @@ | |||
| 1 | #include <stdio.h> | 1 | #include <stdio.h> |
| 2 | #include <assert.h> | ||
| 3 | #include <string.h> | ||
| 4 | #include <tree_sitter/api.h> | ||
| 5 | |||
| 6 | TSLanguage *tree_sitter_json(); | ||
| 2 | 7 | ||
| 3 | int main() { | 8 | int main() { |
| 4 | printf("Hi Mark!\n"); | 9 | printf("Hi, Mark\n"); |
| 10 | |||
| 11 | TSParser *parser = ts_parser_new(); | ||
| 12 | ts_parser_set_language(parser, tree_sitter_json()); | ||
| 13 | |||
| 14 | const char *source_code = "[1, null, [1,2,3]]"; | ||
| 15 | TSTree *tree = ts_parser_parse_string( | ||
| 16 | parser, | ||
| 17 | NULL, | ||
| 18 | source_code, | ||
| 19 | strlen(source_code) | ||
| 20 | ); | ||
| 21 | |||
| 22 | TSNode root_node = ts_tree_root_node(tree); | ||
| 23 | |||
| 24 | TSNode array_node = ts_node_named_child(root_node, 0); | ||
| 25 | TSNode number_node = ts_node_named_child(array_node, 0); | ||
| 26 | |||
| 27 | assert(strcmp(ts_node_type(root_node), "document") == 0); | ||
| 28 | assert(strcmp(ts_node_type(array_node), "array") == 0); | ||
| 29 | assert(strcmp(ts_node_type(number_node), "number") == 0); | ||
| 30 | |||
| 31 | /* assert(ts_node_child_count(root_node) == 1); */ | ||
| 32 | /* assert(ts_node_child_count(array_node) == 5); */ | ||
| 33 | /* assert(ts_node_named_child_count(array_node) == 2); */ | ||
| 34 | /* assert(ts_node_child_count(number_node) == 0); */ | ||
| 35 | |||
| 36 | char *string = ts_node_string(root_node); | ||
| 37 | printf("Syntax tree: %s\n", string); | ||
| 38 | |||
| 39 | free(string); | ||
| 40 | ts_tree_delete(tree); | ||
| 41 | ts_parser_delete(parser); | ||
| 42 | |||
| 5 | return 0; | 43 | return 0; |
| 6 | } | 44 | } |
