`capture_list_pool_acquire` 扫描整个池,查找可用的列表
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "tree_sitter/api.h" const TSLanguage *tree_sitter_html(void); static char *slurp(const char *path, size_t *len) { FILE *f = fopen(path, "rb"); if (!f) { perror(path); exit(1); } fseek(f, 0, SEEK_END); long n = ftell(f); fseek(f, 0, SEEK_SET); char *buf = malloc(n + 1); size_t got = fread(buf, 1, n, f); buf[got] = 0; fclose(f); *len = got; return buf; } static double now_ms(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); return ts.tv_sec * 1000.0 + ts.tv_nsec / 1e6; } int main(int argc, char **argv) { size_t qlen; char *qsrc = slurp(argv[1], &qlen); uint32_t err_off; TSQueryError err_type; const TSLanguage *lang = tree_sitter_html(); TSQuery *query = ts_query_new(lang, qsrc, qlen, &err_off, &err_type); if (!query) { …
内容来源: tree-sitter/tree-sitter