hooo 0.10.0

Propositional logic with exponentials
Documentation
_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"