aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/main.c b/main.c
index cde3c1a..1a56ad6 100644
--- a/main.c
+++ b/main.c
@@ -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
6TSLanguage *tree_sitter_json();
2 7
3int main() { 8int 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}