summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2023-11-07 16:42:29 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2023-11-07 16:42:29 +0100
commit9123016d9d4d6fcc39a46828513f50bb52858458 (patch)
tree0bbf78d3c8221f6ffd28613b7cf423740f4854e3 /main.c
parentc0377818aa198a5b5d0d3c7697373c5b6828d5fa (diff)
downloadcrep-9123016d9d4d6fcc39a46828513f50bb52858458.tar.gz
Added tree-sitter-json vendor library
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 @@
#include <stdio.h>
+#include <assert.h>
+#include <string.h>
+#include <tree_sitter/api.h>
+
+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;
}