_seps: "[]():,.·⨯-→{}"

14 rapp = ["(" .w? ":":"rty" .w! expr:"arg" .w? ")"]
13 list = ["[" .w? .s?([.w? "," .w?] expr:"item") .w? "]"]
12 tup_items_expr = tup_items:"tup"
11 tup_items = [.s!([.w? "," .w?] expr:"item")]
10 tup_path_expr = tup_path:"tup"
9 tup_path = [.s!([.w? {"x" "⨯"} .w?] expr:"item") .w? {"->" "→"} .w? expr:"item"]
8 val = [?"\\" {["true":"bool" !.$] ["false":!"bool" !.$] .$_:"num"}]
7 var = [!.$ .._seps!:"var"]
6 path_right = [.w? "[" .w? {tup_path_expr expr} .w? "]"]
5 app_right = [.w? "(" .w? {tup_items_expr expr} .w? ")"]
4 comp_right = [.w? {"." "·"} .w? expr]
3 typ_right = [.w? ":" .w? expr]
3 constr_right = [.w? "{" .w? {tup_items_expr expr} .w? "}"]
2 seq = [{
  ["(" .w? tup_items_expr:"left" .w? ")"]
  var:"left"
} .r!({
  path_right:"path"
  app_right:"app"
  constr_right:"constr"
  comp_right:"comp"
  typ_right:"typ"
})]
1 expr = {
  seq:"seq"
  rapp:"rapp"
  ["(" .w? tup_items_expr .w? ")"]
  list:"list"
  val var
}
0 doc = [.w? expr:"expr" .w?]
