个人简介

Echo Blog


江湖无名 安心练剑
  • Tree-sitter 文档-21-代码导航系统(Code Navigation Systems)
    代码导航系统(Code Navigation Systems) Tree-sitter 可以结合其查询语言(query language)用于构建代码导航系统。 此类系统的一个示例是: tree-sitter tags 命令,该命令会输出指定文件中重要语法节点的文本列表。 GitHub 的基于搜索的代码导航功能就是一个典型应用。 本文档用于说明: 如何与此类系统集成 ...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-20-语法高亮
    语法高亮 语法高亮是处理代码的应用程序中非常常见的功能。Tree-sitter 通过 tree-sitter-highlight 库内建支持语法高亮,这个库目前用于 GitHub.com 对多种语言代码进行高亮显示。你也可以使用命令行工具 tree-sitter highlight 执行语法高亮。(tree-sitter.github.io) 本文件说明 Tree-sitter 语法高亮...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-19-发布(Publishing)
    发布(Publishing) 当你认为你的解析器已经达到稳定状态并可供用户使用时,你可以将其发布到多个注册中心。 强烈建议将 grammar 发布到以下平台: GitHub crates.io(Rust) npm(JavaScript) PyPI(Python) 这样可以使其他用户更容易发现并使用你的 grammar。 (Tree-sitter) 从开始到发...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-18-编写测试(Writing Tests)
    编写测试(Writing Tests) 对于你在 grammar 中添加的每一条规则,都应首先创建一个测试,用于描述在解析该规则时语法树应当呈现的结构。 这些测试使用特定格式的文本文件编写,并存放在解析器根目录下的: test/corpus/ 目录中。 例如,你可以创建一个名为: test/corpus/statements.txt 的文件,其内容包含如下测试条目: ==...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-17-外部扫描器(External Scanners)
    外部扫描器(External Scanners) 许多编程语言中存在一些 token,其结构无法或不方便使用正则表达式描述。 例如: Python 中的缩进(indent)与反缩进(dedent)token Bash 与 Ruby 中的 heredoc Ruby 中的 percent string Tree-sitter 允许你使用 外部扫描器(external sc...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-16-parser 编写语法(Writing the Grammar)
    编写语法(Writing the Grammar) 编写 Tree-sitter 语法需要一定的设计取舍。 对于任意一种语言,都存在无限多种上下文无关文法(CFG)可以描述它。 但要生成一个高质量的 Tree-sitter 解析器,语法必须满足两个关键特性: 结构直观 尽量符合 LR(1) 文法特性 Tree-sitter 生成的是具体语法树(Concrete Sy...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-15-parser 语法 DSL(The Grammar DSL)
    语法 DSL(The Grammar DSL) 以下内容列出了可在 grammar.js 中用于定义语法规则的内置函数完整集合。这些函数用于描述语言的语法结构。(Tree-sitter) 符号(Symbols) 每一条语法规则都是一个 JavaScript 函数,该函数接收一个通常命名为 $ 的参数。 $.identifier 这种写法用于在规则中引用其他语法符号。 名...
    2026-01-05 13:01:55 | AST
  • Tree-sitter 文档-14-parser 开始使用(Getting Started)
    开始使用(Getting Started) 依赖项(Dependencies) 要开发一个 Tree-sitter 解析器,需要安装以下两个依赖: JavaScript 运行时 Tree-sitter 的语法(grammar)使用 JavaScript 编写,并通过 JavaScript 运行时(默认是 Node.js)进行解释。因此需要保证运行时命令(默认 nod...
    2026-01-05 13:01:55 | AST