[−][src]Crate swahili_dsl
swahili-dsl
An attempt of creating a DSL. A DSL is a mini "language" embedded in a Rust macro. Made for educational purposes.
Heavily influenced by swahili-lang and macro-lisp
Examples
// declaring variables
swh!(wacha jina = 2020);
// booleans
swh!(wacha swala = swh!(kweli));
swh!(wacha swala = swh!(uwongo));
// list comprehensions
swh!(matokeo; kwa n katika 0..=10 => kama n%2 == 0);
// 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)));
// ternary operator
swh!(wacha swala = swh!(kweli));
swh!(swala => swh!(andika("Kweli")) ; swh!(andika("Uwongo")));
Macros
swh |