_seps: ";:.{}()[]=,"
_ty: ";{}"
200 multi_line_comment = ["/*" ..."*/"? .r?({
[!"*/" "*" ..."*/"?] [multi_line_comment ..."*/"?] ["/" ..."*/"?]
}) "*/"]
201 comment = {multi_line_comment ["//" ..."\n"?]}
15 grade = ["grade" .w! .._seps!:"name" .w! "["
.w? .s!(, .._seps!:"arg") .w? "]" .w? ";"]
14 sym_decl = ["sym" .w! .._seps!:"sym"]
13 let = ["let" .w! .._seps!:"name" .w? "=" .w?]
12 use = ["use" .w! .r?([.._seps!:"ns" "::"]) .._seps!:"fun"]
11 check = [let "()" .w? ":" .w? ..._ty!:"ty"]
10 match = [let "match" .w! .._seps!:"arg" .w? ?["(" .w?
.._seps!:"arg" , .._seps!:"arg"
.w? ")" .w?] ":" ..._ty!:"ty"]
9 return = [?["unsafe":"unsafe" .w!] "return" .w! .._seps!:"return"]
8 lam_decl = ["lam" .w! .._seps!:"name" .w? ":" .w? ..._ty!:"ty"]
7 app = [let .._seps!:"arg" "(" .w? .s?.(, .._seps!:"arg") .w? ")" .w? ":" ..._ty!:"ty"]
6 fun_decl = ["fn" .w! .._seps!:"name" .w? ":" .w? ..._ty!:"ty"]
5 , = [.w? "," .w?]
4 fn = [{
fun_decl:"fun_decl"
lam_decl:"lam_decl"
} "{" .w? script:"script" .w? "}"]
3 var = [.._seps!:"name" .w? ":" .w? ..._ty!:"ty"]
2 command = {
return
sym_decl
use:"use"
["axiom " var:"axiom"]
var:"var"
match:"match"
check:"check"
app:"app"
}
1 script = [.w? .l([.w? {
comment
grade:"grade"
fn
[command ";"]
}]) .w?]
0 doc = script:"script"