dyon 0.10.0

A rusty dynamically typed scripting language
Documentation
_seps:".:;,[]{}()?!=<>\""

1 , = [.w? "," .w?]

2 expr = {.t!:"code" ...";"!:"code"}
3 reserved = [!"I" !"S"]

95 ref = [.._seps!:"rule" ?[.w? ":" .t!:"as"]]
96 type = {
    "bool":"bool"
    "f64":"f64"
    "str":"str"
    ["opt":"opt" .w? "[" .w? type .w? "]"]
}
97 field = [reserved .._seps!:"name" .w?
            {[":" .w? type] ["<-" .w? ref]}]

98 fields = ["[" .w? .s!.(, field:"field") .w? "]" .w?
             "=>" .w? expr:"expr" ";"]
99 repeat = ["repeat" .w! ref .w? ";"]
100 select = ["select" .w? "{" .w? .s!.(, ref:"ref") .w? "}" .w? ";"]

150 rule = {fields:"fields" repeat:"repeat" select:"select"}
200 decl = [.._seps!:"name" .w? ":=" .w? rule:"rule" .w?]
300 decls = .l(decl:"decl")
1000 body = [.w? decls:"rules" .w?
            "--" .r!("-") .w? .._seps!:"start" .w?]
2000 meta = [.w? "meta" .w? "{" .w?
             body .w? "}" .w?]