From 9123016d9d4d6fcc39a46828513f50bb52858458 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Tue, 7 Nov 2023 16:42:29 +0100 Subject: Added tree-sitter-json vendor library --- main.c | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) (limited to 'main.c') diff --git a/main.c b/main.c index cde3c1a..1a56ad6 100644 --- a/main.c +++ b/main.c @@ -1,6 +1,44 @@ #include +#include +#include +#include + +TSLanguage *tree_sitter_json(); int main() { - printf("Hi Mark!\n"); + printf("Hi, Mark\n"); + + TSParser *parser = ts_parser_new(); + ts_parser_set_language(parser, tree_sitter_json()); + + const char *source_code = "[1, null, [1,2,3]]"; + TSTree *tree = ts_parser_parse_string( + parser, + NULL, + source_code, + strlen(source_code) + ); + + TSNode root_node = ts_tree_root_node(tree); + + TSNode array_node = ts_node_named_child(root_node, 0); + TSNode number_node = ts_node_named_child(array_node, 0); + + assert(strcmp(ts_node_type(root_node), "document") == 0); + assert(strcmp(ts_node_type(array_node), "array") == 0); + assert(strcmp(ts_node_type(number_node), "number") == 0); + + /* assert(ts_node_child_count(root_node) == 1); */ + /* assert(ts_node_child_count(array_node) == 5); */ + /* assert(ts_node_named_child_count(array_node) == 2); */ + /* assert(ts_node_child_count(number_node) == 0); */ + + char *string = ts_node_string(root_node); + printf("Syntax tree: %s\n", string); + + free(string); + ts_tree_delete(tree); + ts_parser_delete(parser); + return 0; } -- cgit v1.2.3