6 个版本

0.0.6 2024 年 7 月 24 日
0.0.5 2024 年 5 月 1 日
0.0.4 2024 年 2 月 14 日

#504解析实现

Download history 84/week @ 2024-04-25 38/week @ 2024-05-02 5/week @ 2024-05-16 4/week @ 2024-05-23 1/week @ 2024-05-30 3/week @ 2024-06-06 2/week @ 2024-06-13 4/week @ 2024-06-27 33/week @ 2024-07-04 66/week @ 2024-07-18 77/week @ 2024-07-25 12/week @ 2024-08-01

每月 155 次下载
用于 ginko_ls

MIT 许可证

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_attachcapabilities,有关更多信息,请参阅 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