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

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