_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?]