unlisted_data_type = @{ (ASCII_ALPHA_LOWER+ ~ ASCII_DIGIT*) } // this was added to catch unknown types
data_type = {
"u8" | "i8"
| "u16" | "i16"
| "u32" | "i32"
| "u64" | "i64"
| "f32" | "f64"
| "bool" | "str"
| unlisted_data_type // traaap !
}
var_name = { ((ASCII_ALPHA ~ ("_" | "$")*) ~ ASCII_DIGIT*)+ }
nullable = { "?" }
data_type_sep = { ":" }
var = { var_name ~ nullable? ~ WHITE_SPACE* ~ data_type_sep? ~ WHITE_SPACE* ~ data_type? }
function_name = { ((ASCII_ALPHA_UPPER ~ "_"*) ~ ASCII_DIGIT*)+ }
pipe_op = { "|>" | "|" }
function = { pipe_op ~ (NEWLINE | WHITE_SPACE)* ~ function_name }
pair_open = { "{{" }
pair_close = { "}}" }
var_pair =
{ pair_open ~ (NEWLINE | WHITE_SPACE)* ~ var ~ (NEWLINE | WHITE_SPACE)* ~ (function | (NEWLINE | WHITE_SPACE))* ~ (NEWLINE | WHITE_SPACE)* ~ pair_close }
sigma = _{ SOI ~ NEWLINE* ~ (var_pair | ANY)* ~ NEWLINE* ~ EOI }