个人简介

Echo Blog


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