6 个版本
0.0.6 | 2024 年 7 月 24 日 |
---|---|
0.0.5 | 2024 年 5 月 1 日 |
0.0.4 | 2024 年 2 月 14 日 |
#504 在 解析实现
每月 155 次下载
用于 ginko_ls
180KB
5K SLoC
Ginko
Ginko 是一个设备树源解析器、分析器和语言服务器。本项目的目标是使设备树的操作变得简单。例如,对于以下设备树
/dts-v1/;
/ {
pic@10000000 {
phandle = <1>;
interrupt-controller;
reg = <0x10000000 0x100>;
}
};
dtc
产生以下输出
Error: test.dts:9.1-2 syntax error
FATAL ERROR: Unable to parse input tree
而 ginko
产生以下输出
--> test.dts:8:6
|
8 | }
| ^ Expected ';'
目前,命令行工具 ginko
只检查设备树源。它目前不能生成设备树二进制文件,也不能输出格式化后的设备树源文件。
项目
ginko
安装和使用
要使用 rust 工具链安装 ginko,只需调用
cargo install ginko
此外,存在适用于 x86 Linux 和 x86 Windows 的预构建的二进制文件。只需下载并将可执行文件添加到路径上的目录中即可运行工具。对于在 Apple Silicon 上运行的 macOS,也存在预构建的二进制文件,但这些未签名且未由苹果验证,因此安装更为繁琐。有关更多信息,请参阅此信息。
运行
ginko <path/to/file.dts>
以在设备树源文件上运行 ginko 并检查内容。
目标
- 完整的设备树源解析器。
- 对设备树使用的容错解析
- 向用户提供可读且有用的反馈
不足之处
此项目尚处于起步阶段。因此,一些功能尚未支持
- C 样式包含(即
#include "some_header.h"
) - 表达式(括号表达式被忽略且不会引发错误)
- 二进制设备树格式
- 稳定的 API
ginko_ls
ginko_ls 的目标是成为功能齐全的设备树语言服务器。语言服务器可用于许多编辑器,如 Visual Studio Code、Emacs 或 Vim
功能
- 大纲
- 转到定义(节点)
- 悬停
计划中的功能
- 增量分析
- 补全
- 格式化
编辑器配置
Neovim
您可以手动安装 ginko_ls
,或者使用 :Mason
进行安装。
使用配置名称 ginko_ls
通过 nvim-lspconfig
配置服务器。
为了配置它,只需将以下内容添加到您的 init.lua
文件中。
lspconfig = require('lspconfig')
lspconfig['ginko_ls'].setup({
on_attach = on_attach,
capabilities = capabilities
})
这假设您已定义了 on_attach
和 capabilities
,有关更多信息,请参阅 nvim-lspconfig
文档。
VSCode
使用 Ginko VSCode
Helix
如果您想使用 Helix Editor,可以修改 devicetree
语言定义在 languages.toml
中。以下是一个示例。
[[language]]
name = "devicetree"
language-servers = ["ginko_ls"]
[language-server.ginko_ls]
command = "ginko_ls"
config = { provideFormatter = false }
所有形式的贡献,无论是拉取请求还是问题报告,都受到高度赞赏和欢迎。
依赖项
约2.7–3.5MB
~92K SLoC