-
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
-
Tree-sitter 文档-05-高级解析(Advanced Parsing)
高级解析(Advanced Parsing)
编辑(Editing)
在文本编辑器等应用中,当源代码发生变化后,通常需要重新解析文件。
Tree-sitter 专门针对这种场景进行了高效设计。
该过程需要两个步骤。
第一步:编辑语法树
首先,需要编辑已有的语法树,使节点的范围与修改后的源码保持同步。
typedef struct {
uint32_t start_byt...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-04-基础解析(Basic Parsing)
基础解析(Basic Parsing)
提供源代码(Providing the Code)
在上一章节的示例中,我们使用 ts_parser_parse_string 函数解析存储在普通字符串中的源代码:
TSTree *ts_parser_parse_string(
TSParser *self,
const TSTree *old_tree,
const char ...
2026-01-05 13:01:55 |
AST
-
Tree-sitter 文档-03-入门(Getting Started)
ps
这里可以跳过,因为很多项目存在编译好的包。
入门(Getting Started)
构建库(Building the Library)
在 POSIX 系统上构建 Tree-sitter 库,只需在 Tree-sitter 目录中运行:
make
该命令将生成:
一个静态库 libtree-sitter.a
以及对应的动态库文件
或者,你也可以将该库集...
2026-01-05 13:01:55 |
AST