#nickel #parser #incremental

tree-sitter-nickel

Nickel语法树-sitter解析库

2个不稳定版本

0.2.0 2024年6月5日
0.1.0 2023年9月14日

#158 in 文本编辑器

Download history 12/week @ 2024-04-14 1/week @ 2024-04-21 147/week @ 2024-06-02 84/week @ 2024-06-09 42/week @ 2024-06-16 36/week @ 2024-06-23 23/week @ 2024-06-30 15/week @ 2024-07-07 32/week @ 2024-07-14 8/week @ 2024-07-21 69/week @ 2024-07-28

126 每月下载次数
用于 3 个crate(通过 nickel-lang-core

MIT 许可证

1.5MB
52K SLoC

C 51K SLoC // 0.0% comments JavaScript 496 SLoC // 0.2% comments Scheme 65 SLoC // 0.0% comments Rust 37 SLoC // 0.1% comments

tree-sitter-nickel

Nickeltree-sitter 语法。

概览

Tree sitter是一个编程语言工具的解析框架。Tree sitter使语法高亮、缩进、折叠等功能语义化。本项目为 Nickel 提供了tree sitter语法定义。

每个编辑器都必须提供自己的特定查询。目前,我们提供了类似Neovim风格的示例高亮查询。

与Neovim一起

Nickel语言已被添加到 nvim-treesitter。请参阅那里的 nvim-treesitter 安装指南以获得即插即用的Nickel高亮显示。请注意,虽然 nvim-treesitter 自动使用此存储库中的最新语法定义,但高亮查询直接由 nvim-treesitter 托管。它们在某个时间点从此存储库中复制,但可能并不总是最新的。

在本地使用Neovim

您可以使用Neovim的本地版本进行开发、测试或自定义。

  1. 克隆此仓库

  2. 配置tree-sitter以使用此语法

    local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
    parser_config.nickel = {
      install_info = {
        url = "PATH_TO_WHERE_YOU_CLONED_IT",
        files = {"src/parser.c", "src/scanner.c"},
        branch = "main",
        generate_requires_npm = false,
        requires_generate_from_grammar = false,
      },
    }
    

黑客

结构

  • grammar.js 是主要的语法定义。其他大多数文件都是从 grammar.js 生成的,这很可能是您在更新语法时想要修改的文件
  • src/scanner.c 包含了Nickel语法所需的自定义扫描器
  • src/* src中的其他大多数文件都是自动生成的,不应直接修改
  • corpus/ 包含测试套件
  • bindings/ 包含到各种语言的解析器的绑定。

要求

本项目附带一个 flake.nix,其中包含在 Nix 中工作所需的全部内容。在启用了flake的Nix中,只需在此存储库的根目录下运行 nix develop 即可进入一个包含所有必要命令的shell。

如果没有Nix,您需要手动安装 tree-sitter 和其他依赖项。您应该能够通过阅读 flake.nix 简单地推断出所需列表。

动作

  • tree-sitter generate将从当前定义中构建语法。
  • tree-sitter test将测试构建的语法与语料库。
  • tree-sitter parse <FILE>解析给定的文件。
  • tree-sitter highlight <FILE>测试给定文件的突出显示。

绑定

与其他tree-sitter语法一样,此存储库提供了以下语言的绑定

  • C
  • Go
  • Node
  • Python
  • Rust
  • Swift

依赖项

~2.8–4MB
~72K SLoC