2个不稳定版本
0.2.0 | 2024年6月5日 |
---|---|
0.1.0 | 2023年9月14日 |
#158 in 文本编辑器
126 每月下载次数
用于 3 个crate(通过 nickel-lang-core)
1.5MB
52K SLoC
tree-sitter-nickel
Nickel 的 tree-sitter 语法。
概览
Tree sitter是一个编程语言工具的解析框架。Tree sitter使语法高亮、缩进、折叠等功能语义化。本项目为 Nickel 提供了tree sitter语法定义。
每个编辑器都必须提供自己的特定查询。目前,我们提供了类似Neovim风格的示例高亮查询。
与Neovim一起
Nickel语言已被添加到 nvim-treesitter。请参阅那里的 nvim-treesitter
安装指南以获得即插即用的Nickel高亮显示。请注意,虽然 nvim-treesitter
自动使用此存储库中的最新语法定义,但高亮查询直接由 nvim-treesitter
托管。它们在某个时间点从此存储库中复制,但可能并不总是最新的。
在本地使用Neovim
您可以使用Neovim的本地版本进行开发、测试或自定义。
-
克隆此仓库
-
配置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