_seps:"(){}~=:,&⋀|⋁!¬"

21 multi_line_comment = ["/*" ..."*/"? .r?({
    [!"*/" "*" ..."*/"?] [multi_line_comment ..."*/"?] ["/" ..."*/"?]
}) "*/"]
20 comment = {multi_line_comment ["//" ..."\n"?]}
19 import = ["import" .w! .t!:"import"]
18 app_lexpr = {
  app:"app"
  lexpr
}
17 def = [.._seps!:"name" .w? ":=" .w? expr:"expr"]
16 ty_expr = ty:"ty"
15 xor = {
  ["xor(" .w? expr:"left" .w? "," .w? expr:"right" .w? ")"]
  [app_lexpr:"left" .w? {"!=" "¬=" "⊻"} .w? app_lexpr:"right"]
}
14 eq = {
  ["eq(" .w? expr:"left" .w? "," .w? expr:"right" .w? ")"]
  [app_lexpr:"left" .w? "==" .w? app_lexpr:"right"]
}
13 imply = {
  ["imply(" .w? expr:"left" .w? "," .w? expr:"right" .w? ")"]
  [app_lexpr:"left" .w? "=>" .w? app_lexpr:"right"]
}
12 or = {
  ["or(" .w? expr:"left" .w? "," .w? expr:"right" .w? ")"]
  [app_lexpr:"left" .w? {"|" "⋁"} .w? app_lexpr:"right"]
}
11 and = {
  ["and(" .w? expr:"left" .w? "," .w? expr:"right" .w? ")"]
  [app_lexpr:"left" .w? {"&" "⋀"} .w? app_lexpr:"right"]
}
10 any = [{"∃" "any"} .w! ty_expr:"left" .w! "{" .w? expr:"right" .w? "}"]
9 all = [{"∀" "all"} .w! ty_expr:"left" .w! "{" .w? expr:"right" .w? "}"]
8 tup = ["(" .w? .s!([.w? "," .w?] expr:"item") .w? ")"]
7 app = [!{"!" "¬" "\\"} lexpr:"left" "(" .w? expr:"right" .w? ")"]
6 lam = ["\\(" ty_expr:"left" ")" .w? "=" .w? expr:"right"]
5 ind = [app_lexpr:"left" .w? "~" .w? app_lexpr:"right"]
4 pa = [app_lexpr:"left" .w? "~=" .w? app_lexpr:"right"]
3 ty = [app_lexpr:"left" .w? ":" .w? app_lexpr:"right"]
2 lexpr = {
  ["un(" .w? expr:"un" .w? ")"]
  ["nu(" .w? expr:"nu" .w? ")"]
  ["lift(" .w? expr:"lift" .w? ")"]
  ["type(" .w? expr:"type" .w? ")"]
  ["not(" .w? expr:"not" .w? ")"]
  [{"!" "¬"} app_lexpr:"not"]
  all:"all"
  any:"any"
  ["(" .w? expr .w? ")"]
  tup:"tup"
  "I":"I"
  "0":"0"
  "1":"1"
  .._seps!:"var"
}
1 expr = {
  [app:"app" ![.w? {"~" "=" ":" "&" "⋀" "|" "⋁" "!" "¬"}]]
  ty:"ty"
  pa:"pa"
  ind:"ind"
  lam:"lam"
  and:"and"
  or:"or"
  imply:"imply"
  eq:"eq"
  xor:"xor"
  lexpr
}
0 doc = {
  ["#" .l([.l([!"```lol" ..."\n"?]) "```lol" .w?
    .l([!"```" {comment import def:"def" expr:"expr"}]) .w? "```"])]
  [.w? .l({comment import def:"def" expr:"expr"}) .w?]
}
