%language c %% enter function_definition declaration { TSNode declarator = $$->"declarator"; TSNode next_declarator = declarator; while (next_declarator = tbnode_child_by_field_name(next_declarator, "declarator"), !ts_node_is_null(next_declarator)) { declarator = next_declarator; } char * s = tbget_node_text(declarator); puts(s); free(s); } %% /* @BAKE tbsp $@ gcc -o $*.out $*.tb.c $(pkg-config --cflags --libs tree-sitter tree-sitter-c) -ggdb ./$*.out $.tb.c @STOP */ #include "file2str.h" signed main(int argc, char * * argv) { if (argc < 2) { return 1; } FILE2STR(fstr, argv[1]); puts(fstr); tbtraverse(fstr); return 0; }