-
Tree-sitter 文档-13-ABI 版本(ABI Versions)
ABI 版本(ABI Versions)
Tree-sitter 使用 ABI(Application Binary Interface,应用二进制接口)版本号 来确保:
语言解析器(parser)与 Tree-sitter 库本身在二进制层面兼容。
当 ABI 不兼容时,即使代码可以编译,程序在运行时也可能崩溃或无法加载解析器。 (GitHub)
什么是 ABI 版本
...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-12-静态节点类型(Static Node Types)
静态节点类型(Static Node Types)
在具有静态类型的编程语言中,让语法树提供关于各个语法节点的具体类型信息通常是非常有用的。
Tree-sitter 通过一个自动生成的文件 node-types.json 提供这些信息。
该文件包含语法中所有可能的语法节点类型的结构化数据。
你可以利用这些数据在静态类型语言中生成类型声明。 (tree-sitter.github.io...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-11-查询 API(Query API)
查询 API(Query API)
可以通过指定一个包含一个或多个模式的字符串来创建查询:
TSQuery *ts_query_new(
const TSLanguage *language,
const char *source,
uint32_t source_len,
uint32_t *error_offset,
TSQueryError *error_t...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-10-谓词与指令(Predicates and Directives)
谓词与指令(Predicates and Directives)
查询中的谓词(Predicates)和指令(Directives)类似于过程式语言中的函数。
谓词用于根据特定条件过滤匹配结果
指令用于向查询执行环境传递操作指令(例如设置元数据)
Tree-sitter 核心库本身并未内置具体的谓词或指令实现。
相反,一些工具和编辑器约定并实现了一组通用谓词与指令。(N...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-09-运算符(Operators)
运算符(Operators)
捕获节点(Capturing Nodes)
在匹配模式时,你可能希望处理模式中的特定节点。
捕获(Capture) 允许你为模式中的特定节点关联名称,从而在后续处理中通过该名称引用这些节点。
捕获名称写在所引用节点之后,并以 @ 字符开头。
例如,以下模式将匹配把一个 function 赋值给某个 identifier 的语句,并将该标识符命名为 t...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-08-查询语法
查询语法
一个查询由一个或多个模式组成,其中每个模式都是一个 S 表达式,用于匹配语法树中的一组节点。
用于匹配某个节点的表达式由一对括号构成,其中包含两部分内容:节点类型,以及(可选的)一系列用于匹配该节点子节点的其他 S 表达式。
例如,以下模式将匹配任意一个 binary_expression 节点,并且其两个子节点均为 number_literal 节点:
(binary_e...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-07-使用查询进行模式匹配
使用查询进行模式匹配
代码分析通常需要在源代码中查找特定的模式。Tree-sitter 为此提供了一种简单的模式匹配语言,其方式类似于其单元测试系统中所使用的语言。这使你能够表达并搜索代码结构,而无需编写复杂的解析逻辑。
参考资料
使用查询进行模式匹配
参考资料
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-06-遍历语法树(Walking Trees)
遍历语法树(Walking Trees)
使用 Tree Cursor 遍历语法树
虽然可以使用前面介绍的 TSNode API 访问语法树中的每一个节点,但当需要访问大量节点时,最高效的方法是使用 Tree Cursor(树游标)。
Tree Cursor 是一个 有状态对象,用于以最高效率遍历语法树。 (Tree-sitter)
Cursor 的作用范围
创建 Curs...
2026-01-05 13:01:55 |
AST