9 个版本

0.1.8 2020 年 10 月 8 日
0.1.7 2020 年 10 月 8 日

#1790 in Rust 模式

MIT 许可协议

9KB
143

swahili-dsl

License: MIT crates.io Travis CI

尝试创建一个基于斯瓦希里语的 DSL。DSL 是嵌入在 Rust 宏中的小型 "语言"。用于教育目的。

深受 swahili-langmacro-lisp 影响

示例

// declaring variables
swh!(wacha jina = 2020);

// booleans
swh!(wacha swala = swh!(kweli));
swh!(wacha swala = swh!(uwongo));

// list comprehensions
swh!(matokeo; kwa n katika swh!(masafa(0,10)) => kama n%2 == 0);

// Declaring functions (very rudimental)
swh!(shughuli ongeza(n: u32) -> u32 {
    rudisha n + 11
});
swh!(wacha hesabu = ongeza(1));

// inbuilt functions
swh!(wacha urefu = swh!(urefu(vec![1,2,4])));
swh!(andika("Habari Duinia"));
swh!(wacha orodha = swh!(masafa(1, 5)));

// collections
swh!(wacha l = swh!(orodha -> [1,2,4]));
swh!(wacha hm = swh!(kamusi -> {
    "id" => "#12",
    "jina" => "Juma"
}));

// arithmetic operations
swh!(wacha hesabu = swh!(suluhisha 4 * 4));
swh!(wacha hesabu = swh!(suluhisha (12/4) * (16/4)));
swh!(wacha hesabu = swh!(suluhisha 4 * 4, suluhisha 4 * 2));

// ternary operator
swh!(wacha swala = swh!(kweli));
swh!(swala => {
    swh!(andika("Kweli")) ;
    swh!(andika("Uwongo"))
});

运行测试

cargo test -- --show-output

此项目受 MIT 许可协议保护。

无运行时依赖项