6 个版本 (3 个重大更改)
0.4.1 | 2024 年 7 月 12 日 |
---|---|
0.4.0 | 2024 年 7 月 12 日 |
0.3.0 | 2024 年 6 月 25 日 |
0.2.1 | 2023 年 12 月 19 日 |
0.1.0 | 2022 年 10 月 5 日 |
#131 in 编程语言
每月 47 次下载
用于 abi-cafe
120KB
2.5K SLoC
KDLScript 🫂💗📜
KDLScript,基于 KDL 的编程语言!
KDLScript ("拥抱脚本") 是一种“虚假”的脚本语言,实际上只是用来声明类型/函数签名,而不将我们绑定到任何特定语言的语义。它存在于 ABI Cafe。
基本上,KDLScript 是我们可以根据自己的用例制作得尽可能奇怪的头部格式
struct "Point" {
x "f32"
y "f32"
}
enum "ScaleMode" {
Width
Height
}
fn "print" {
inputs { _ "Point"; }
}
fn "scale" {
inputs { _ "Point"; factor "f32"; scalemode "ScaleMode"; }
outputs { _ "Point"; }
}
fn "sum" {
inputs { _ "&[Point; 4]"; }
outputs { _ "Point"; }
}
最终,语法和概念在很大程度上借鉴了 Rust,原因如下
- 作者非常熟悉 Rust
- 这(以及 ABI Cafe)最初是为了在 rustc 中寻找错误而创建的
- Rust 真的是一个优秀的接口语言!(比 C/C++ 更好)
这个的最终目标是测试语言是否可以通过一次声明类型/接口并在 Rust/C/C++/... 版本中生成程序(调用方和被调用方)来正确地通过 FFI 进行通信。
快速入门
kdl-script 是一个库和 CLI 应用程序。CLI 只是为了好玩。
库的主要入口点是 Compiler::compile_path
或 Compiler::compile_string
,它将生成一个 TypedProgram
。 有关如何使用它的详细信息,请参阅 types
模块文档。
CLI 应用程序可以按 kdl-script path/to/program.kdl
调用,以运行 KDLScript 程序。
依赖关系
~14–25MB
~378K SLoC