个人简介

Echo Blog


江湖无名 安心练剑
  • 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