0
  "Γ" := rules • "expr" [0-0]
  "expr" := rules • "expr_function" [0-0]
  "expr_function" := rules • "{" "formals" "}" ":" "expr_function" [0-0]
  "expr_function" := rules • "{" "formals" "}" "@" "ID" ":" "expr_function" [0-0]
  "expr_function" := rules • "expr_if" [0-0]
  "{" := lexemes • "{" [0-0]
  "expr_if" := rules • "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "<" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" ">" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "?" "attrpath" [0-0]
  "expr_op" := rules • "expr_op" "+" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "-" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "*" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "/" "expr_op" [0-0]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [0-0]
  "expr_op" := rules • "expr_app" [0-0]
  "expr_app" := rules • "expr_app" "expr_select" [0-0]
  "expr_app" := rules • "expr_select" [0-0]
  "expr_select" := rules • "expr_simple" "." "attrpath" [0-0]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [0-0]
  "expr_select" := rules • "expr_simple" "OR_KW" [0-0]
  "expr_select" := rules • "expr_simple" [0-0]
  "expr_simple" := rules • "{" "binds" "}" [0-0]
1
  "{" := lexemes "{" • [0-1]
  "expr_function" := rules "{" • "formals" "}" ":" "expr_function" [0-1]
  "expr_function" := rules "{" • "formals" "}" "@" "ID" ":" "expr_function" [0-1]
  "expr_simple" := rules "{" • "binds" "}" [0-1]
  "formals" := rules • "formal" "," "formals" [1-1]
  "formals" := rules • "formal" [1-1]
  "formals" := rules • [1-1]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [1-1]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [1-1]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [1-1]
  "binds" := rules • [1-1]
  "formal" := rules • "ID" [1-1]
  "formal" := rules • "ID" "?" "expr" [1-1]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-1]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-1]
  "expr_simple" := rules "{" "binds" • "}" [0-1]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [1-1]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [1-1]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [1-1]
  "ID" := lexemes • "ID" [1-1]
  "attrpath" := rules • "attrpath" "." "attr" [1-1]
  "attrpath" := rules • "attrpath" "." "string_attr" [1-1]
  "attrpath" := rules • "attr" [1-1]
  "attr" := rules • "ID" [1-1]
2
  "ID" := lexemes "ID" • [1-2]
  "formal" := rules "ID" • [1-2]
  "formal" := rules "ID" • "?" "expr" [1-2]
  "attr" := rules "ID" • [1-2]
  "formals" := rules "formal" • "," "formals" [1-2]
  "formals" := rules "formal" • [1-2]
  "attrpath" := rules "attr" • [1-2]
  "," := lexemes • "," [2-2]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-2]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-2]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [1-2]
  "attrpath" := rules "attrpath" • "." "attr" [1-2]
  "attrpath" := rules "attrpath" • "." "string_attr" [1-2]
3
  "," := lexemes "," • [2-3]
  "formals" := rules "formal" "," • "formals" [1-3]
  "formals" := rules • "formal" "," "formals" [3-3]
  "formals" := rules • "formal" [3-3]
  "formals" := rules • [3-3]
  "formal" := rules • "ID" [3-3]
  "formal" := rules • "ID" "?" "expr" [3-3]
  "formals" := rules "formal" "," "formals" • [1-3]
  "ID" := lexemes • "ID" [3-3]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-3]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-3]
4
  "ID" := lexemes "ID" • [3-4]
  "formal" := rules "ID" • [3-4]
  "formal" := rules "ID" • "?" "expr" [3-4]
  "formals" := rules "formal" • "," "formals" [3-4]
  "formals" := rules "formal" • [3-4]
  "," := lexemes • "," [4-4]
  "formals" := rules "formal" "," "formals" • [1-4]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-4]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-4]
5
  "," := lexemes "," • [4-5]
  "formals" := rules "formal" "," • "formals" [3-5]
  "formals" := rules • "formal" "," "formals" [5-5]
  "formals" := rules • "formal" [5-5]
  "formals" := rules • [5-5]
  "formal" := rules • "ID" [5-5]
  "formal" := rules • "ID" "?" "expr" [5-5]
  "formals" := rules "formal" "," "formals" • [3-5]
  "ID" := lexemes • "ID" [5-5]
  "formals" := rules "formal" "," "formals" • [1-5]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-5]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-5]
6
  "ID" := lexemes "ID" • [5-6]
  "formal" := rules "ID" • [5-6]
  "formal" := rules "ID" • "?" "expr" [5-6]
  "formals" := rules "formal" • "," "formals" [5-6]
  "formals" := rules "formal" • [5-6]
  "," := lexemes • "," [6-6]
  "formals" := rules "formal" "," "formals" • [3-6]
  "formals" := rules "formal" "," "formals" • [1-6]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-6]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-6]
7
  "," := lexemes "," • [6-7]
  "formals" := rules "formal" "," • "formals" [5-7]
  "formals" := rules • "formal" "," "formals" [7-7]
  "formals" := rules • "formal" [7-7]
  "formals" := rules • [7-7]
  "formal" := rules • "ID" [7-7]
  "formal" := rules • "ID" "?" "expr" [7-7]
  "formals" := rules "formal" "," "formals" • [5-7]
  "ID" := lexemes • "ID" [7-7]
  "formals" := rules "formal" "," "formals" • [3-7]
  "formals" := rules "formal" "," "formals" • [1-7]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-7]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-7]
8
  "ID" := lexemes "ID" • [7-8]
  "formal" := rules "ID" • [7-8]
  "formal" := rules "ID" • "?" "expr" [7-8]
  "formals" := rules "formal" • "," "formals" [7-8]
  "formals" := rules "formal" • [7-8]
  "," := lexemes • "," [8-8]
  "formals" := rules "formal" "," "formals" • [5-8]
  "formals" := rules "formal" "," "formals" • [3-8]
  "formals" := rules "formal" "," "formals" • [1-8]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-8]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-8]
9
  "," := lexemes "," • [8-9]
  "formals" := rules "formal" "," • "formals" [7-9]
  "formals" := rules • "formal" "," "formals" [9-9]
  "formals" := rules • "formal" [9-9]
  "formals" := rules • [9-9]
  "formal" := rules • "ID" [9-9]
  "formal" := rules • "ID" "?" "expr" [9-9]
  "formals" := rules "formal" "," "formals" • [7-9]
  "ID" := lexemes • "ID" [9-9]
  "formals" := rules "formal" "," "formals" • [5-9]
  "formals" := rules "formal" "," "formals" • [3-9]
  "formals" := rules "formal" "," "formals" • [1-9]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-9]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-9]
10
  "ID" := lexemes "ID" • [9-10]
  "formal" := rules "ID" • [9-10]
  "formal" := rules "ID" • "?" "expr" [9-10]
  "formals" := rules "formal" • "," "formals" [9-10]
  "formals" := rules "formal" • [9-10]
  "," := lexemes • "," [10-10]
  "formals" := rules "formal" "," "formals" • [7-10]
  "formals" := rules "formal" "," "formals" • [5-10]
  "formals" := rules "formal" "," "formals" • [3-10]
  "formals" := rules "formal" "," "formals" • [1-10]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-10]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-10]
11
  "," := lexemes "," • [10-11]
  "formals" := rules "formal" "," • "formals" [9-11]
  "formals" := rules • [11-11]
  "formals" := rules "formal" "," "formals" • [9-11]
  "formals" := rules "formal" "," "formals" • [7-11]
  "formals" := rules "formal" "," "formals" • [5-11]
  "formals" := rules "formal" "," "formals" • [3-11]
  "formals" := rules "formal" "," "formals" • [1-11]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [0-11]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [0-11]
  "}" := lexemes • "}" [11-11]
12
  "}" := lexemes "}" • [11-12]
  "expr_function" := rules "{" "formals" "}" • ":" "expr_function" [0-12]
  "expr_function" := rules "{" "formals" "}" • "@" "ID" ":" "expr_function" [0-12]
  ":" := lexemes • ":" [12-12]
13
  ":" := lexemes ":" • [12-13]
  "expr_function" := rules "{" "formals" "}" ":" • "expr_function" [0-13]
  "expr_function" := rules • "ID" ":" "expr_function" [13-13]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [13-13]
  "expr_function" := rules • "expr_if" [13-13]
  "ID" := lexemes • "ID" [13-13]
  "expr_if" := rules • "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "<" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" ">" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "?" "attrpath" [13-13]
  "expr_op" := rules • "expr_op" "+" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "-" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "*" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "/" "expr_op" [13-13]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [13-13]
  "expr_op" := rules • "expr_app" [13-13]
  "expr_app" := rules • "expr_app" "expr_select" [13-13]
  "expr_app" := rules • "expr_select" [13-13]
  "expr_select" := rules • "expr_simple" "." "attrpath" [13-13]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [13-13]
  "expr_select" := rules • "expr_simple" "OR_KW" [13-13]
  "expr_select" := rules • "expr_simple" [13-13]
  "expr_simple" := rules • "ID" [13-13]
14
  "ID" := lexemes "ID" • [13-14]
  "expr_function" := rules "ID" • ":" "expr_function" [13-14]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [13-14]
  "expr_simple" := rules "ID" • [13-14]
  "expr_select" := rules "expr_simple" • "." "attrpath" [13-14]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [13-14]
  "expr_select" := rules "expr_simple" • "OR_KW" [13-14]
  "expr_select" := rules "expr_simple" • [13-14]
  "." := lexemes • "." [14-14]
  "expr_app" := rules "expr_select" • [13-14]
  "expr_op" := rules "expr_app" • [13-14]
  "expr_app" := rules "expr_app" • "expr_select" [13-14]
  "expr_if" := rules "expr_op" • [13-14]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "<" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • ">" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "?" "attrpath" [13-14]
  "expr_op" := rules "expr_op" • "+" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "-" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "*" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "/" "expr_op" [13-14]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [13-14]
  "expr_function" := rules "expr_if" • [13-14]
  "expr_function" := rules "{" "formals" "}" ":" "expr_function" • [0-14]
  "expr" := rules "expr_function" • [0-14]
  "Γ" := rules "expr" • [0-14]
15
  "." := lexemes "." • [14-15]
  "expr_select" := rules "expr_simple" "." • "attrpath" [13-15]
  "expr_select" := rules "expr_simple" "." • "attrpath" "OR_KW" "expr_select" [13-15]
  "attrpath" := rules • "attrpath" "." "attr" [15-15]
  "attrpath" := rules • "attrpath" "." "string_attr" [15-15]
  "attrpath" := rules • "attr" [15-15]
  "attr" := rules • "ID" [15-15]
  "ID" := lexemes • "ID" [15-15]
16
  "ID" := lexemes "ID" • [15-16]
  "attr" := rules "ID" • [15-16]
  "attrpath" := rules "attr" • [15-16]
  "expr_select" := rules "expr_simple" "." "attrpath" • [13-16]
  "expr_select" := rules "expr_simple" "." "attrpath" • "OR_KW" "expr_select" [13-16]
  "attrpath" := rules "attrpath" • "." "attr" [15-16]
  "attrpath" := rules "attrpath" • "." "string_attr" [15-16]
  "expr_app" := rules "expr_select" • [13-16]
  "expr_op" := rules "expr_app" • [13-16]
  "expr_app" := rules "expr_app" • "expr_select" [13-16]
  "expr_if" := rules "expr_op" • [13-16]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "<" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • ">" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "?" "attrpath" [13-16]
  "expr_op" := rules "expr_op" • "+" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "-" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "*" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "/" "expr_op" [13-16]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [13-16]
  "expr_select" := rules • "expr_simple" "." "attrpath" [16-16]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [16-16]
  "expr_select" := rules • "expr_simple" "OR_KW" [16-16]
  "expr_select" := rules • "expr_simple" [16-16]
  "expr_function" := rules "expr_if" • [13-16]
  "expr_simple" := rules • "REC" "{" "binds" "}" [16-16]
  "expr_function" := rules "{" "formals" "}" ":" "expr_function" • [0-16]
  "REC" := lexemes • "REC" [16-16]
  "expr" := rules "expr_function" • [0-16]
  "Γ" := rules "expr" • [0-16]
17
  "REC" := lexemes "REC" • [16-17]
  "expr_simple" := rules "REC" • "{" "binds" "}" [16-17]
  "{" := lexemes • "{" [17-17]
18
  "{" := lexemes "{" • [17-18]
  "expr_simple" := rules "REC" "{" • "binds" "}" [16-18]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [18-18]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [18-18]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [18-18]
  "binds" := rules • [18-18]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-18]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-18]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-18]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-18]
  "attrpath" := rules • "attrpath" "." "attr" [18-18]
  "attrpath" := rules • "attrpath" "." "string_attr" [18-18]
  "attrpath" := rules • "attr" [18-18]
  "attr" := rules • "ID" [18-18]
  "ID" := lexemes • "ID" [18-18]
19
  "ID" := lexemes "ID" • [18-19]
  "attr" := rules "ID" • [18-19]
  "attrpath" := rules "attr" • [18-19]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-19]
  "attrpath" := rules "attrpath" • "." "attr" [18-19]
  "attrpath" := rules "attrpath" • "." "string_attr" [18-19]
  "=" := lexemes • "=" [19-19]
20
  "=" := lexemes "=" • [19-20]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-20]
  "expr" := rules • "expr_function" [20-20]
  "expr_function" := rules • "expr_if" [20-20]
  "expr_if" := rules • "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "<" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" ">" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "?" "attrpath" [20-20]
  "expr_op" := rules • "expr_op" "+" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "-" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "*" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "/" "expr_op" [20-20]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [20-20]
  "expr_op" := rules • "expr_app" [20-20]
  "expr_app" := rules • "expr_app" "expr_select" [20-20]
  "expr_app" := rules • "expr_select" [20-20]
  "expr_select" := rules • "expr_simple" "." "attrpath" [20-20]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [20-20]
  "expr_select" := rules • "expr_simple" "OR_KW" [20-20]
  "expr_select" := rules • "expr_simple" [20-20]
  "expr_simple" := rules • "\"" "string_parts" "\"" [20-20]
  "\"" := lexemes • "\"" [20-20]
21
  "\"" := lexemes "\"" • [20-21]
  "expr_simple" := rules "\"" • "string_parts" "\"" [20-21]
  "string_parts" := rules • "STR" [21-21]
  "string_parts" := rules • "string_parts_interpolated" [21-21]
  "string_parts" := rules • [21-21]
  "STR" := lexemes • "STR" [21-21]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [21-21]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [21-21]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [21-21]
  "expr_simple" := rules "\"" "string_parts" • "\"" [20-21]
22
  "STR" := lexemes "STR" • [21-22]
  "string_parts" := rules "STR" • [21-22]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [21-22]
  "expr_simple" := rules "\"" "string_parts" • "\"" [20-22]
  "\"" := lexemes • "\"" [22-22]
23
  "\"" := lexemes "\"" • [22-23]
  "expr_simple" := rules "\"" "string_parts" "\"" • [20-23]
  "expr_select" := rules "expr_simple" • "." "attrpath" [20-23]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [20-23]
  "expr_select" := rules "expr_simple" • "OR_KW" [20-23]
  "expr_select" := rules "expr_simple" • [20-23]
  "expr_app" := rules "expr_select" • [20-23]
  "expr_op" := rules "expr_app" • [20-23]
  "expr_app" := rules "expr_app" • "expr_select" [20-23]
  "expr_if" := rules "expr_op" • [20-23]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "<" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • ">" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "?" "attrpath" [20-23]
  "expr_op" := rules "expr_op" • "+" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "-" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "*" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "/" "expr_op" [20-23]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [20-23]
  "expr_function" := rules "expr_if" • [20-23]
  "expr" := rules "expr_function" • [20-23]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-23]
  ";" := lexemes • ";" [23-23]
24
  ";" := lexemes ";" • [23-24]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-24]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-24]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-24]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-24]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-24]
  "attrpath" := rules • "attrpath" "." "attr" [24-24]
  "attrpath" := rules • "attrpath" "." "string_attr" [24-24]
  "attrpath" := rules • "attr" [24-24]
  "attr" := rules • "ID" [24-24]
  "ID" := lexemes • "ID" [24-24]
25
  "ID" := lexemes "ID" • [24-25]
  "attr" := rules "ID" • [24-25]
  "attrpath" := rules "attr" • [24-25]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-25]
  "attrpath" := rules "attrpath" • "." "attr" [24-25]
  "attrpath" := rules "attrpath" • "." "string_attr" [24-25]
  "=" := lexemes • "=" [25-25]
26
  "=" := lexemes "=" • [25-26]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-26]
  "expr" := rules • "expr_function" [26-26]
  "expr_function" := rules • "expr_if" [26-26]
  "expr_if" := rules • "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "<" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" ">" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "?" "attrpath" [26-26]
  "expr_op" := rules • "expr_op" "+" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "-" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "*" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "/" "expr_op" [26-26]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [26-26]
  "expr_op" := rules • "expr_app" [26-26]
  "expr_app" := rules • "expr_app" "expr_select" [26-26]
  "expr_app" := rules • "expr_select" [26-26]
  "expr_select" := rules • "expr_simple" "." "attrpath" [26-26]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [26-26]
  "expr_select" := rules • "expr_simple" "OR_KW" [26-26]
  "expr_select" := rules • "expr_simple" [26-26]
  "expr_simple" := rules • "\"" "string_parts" "\"" [26-26]
  "\"" := lexemes • "\"" [26-26]
27
  "\"" := lexemes "\"" • [26-27]
  "expr_simple" := rules "\"" • "string_parts" "\"" [26-27]
  "string_parts" := rules • "STR" [27-27]
  "string_parts" := rules • "string_parts_interpolated" [27-27]
  "string_parts" := rules • [27-27]
  "STR" := lexemes • "STR" [27-27]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [27-27]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [27-27]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [27-27]
  "expr_simple" := rules "\"" "string_parts" • "\"" [26-27]
28
  "STR" := lexemes "STR" • [27-28]
  "string_parts" := rules "STR" • [27-28]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [27-28]
  "expr_simple" := rules "\"" "string_parts" • "\"" [26-28]
  "\"" := lexemes • "\"" [28-28]
29
  "\"" := lexemes "\"" • [28-29]
  "expr_simple" := rules "\"" "string_parts" "\"" • [26-29]
  "expr_select" := rules "expr_simple" • "." "attrpath" [26-29]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [26-29]
  "expr_select" := rules "expr_simple" • "OR_KW" [26-29]
  "expr_select" := rules "expr_simple" • [26-29]
  "expr_app" := rules "expr_select" • [26-29]
  "expr_op" := rules "expr_app" • [26-29]
  "expr_app" := rules "expr_app" • "expr_select" [26-29]
  "expr_if" := rules "expr_op" • [26-29]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "<" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • ">" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "?" "attrpath" [26-29]
  "expr_op" := rules "expr_op" • "+" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "-" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "*" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "/" "expr_op" [26-29]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [26-29]
  "expr_function" := rules "expr_if" • [26-29]
  "expr" := rules "expr_function" • [26-29]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-29]
  ";" := lexemes • ";" [29-29]
30
  ";" := lexemes ";" • [29-30]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-30]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-30]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-30]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-30]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-30]
  "attrpath" := rules • "attrpath" "." "attr" [30-30]
  "attrpath" := rules • "attrpath" "." "string_attr" [30-30]
  "attrpath" := rules • "attr" [30-30]
  "attr" := rules • "ID" [30-30]
  "ID" := lexemes • "ID" [30-30]
31
  "ID" := lexemes "ID" • [30-31]
  "attr" := rules "ID" • [30-31]
  "attrpath" := rules "attr" • [30-31]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-31]
  "attrpath" := rules "attrpath" • "." "attr" [30-31]
  "attrpath" := rules "attrpath" • "." "string_attr" [30-31]
  "=" := lexemes • "=" [31-31]
32
  "=" := lexemes "=" • [31-32]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-32]
  "expr" := rules • "expr_function" [32-32]
  "expr_function" := rules • "ID" ":" "expr_function" [32-32]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [32-32]
  "expr_function" := rules • "expr_if" [32-32]
  "ID" := lexemes • "ID" [32-32]
  "expr_if" := rules • "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "<" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" ">" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "?" "attrpath" [32-32]
  "expr_op" := rules • "expr_op" "+" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "-" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "*" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "/" "expr_op" [32-32]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [32-32]
  "expr_op" := rules • "expr_app" [32-32]
  "expr_app" := rules • "expr_app" "expr_select" [32-32]
  "expr_app" := rules • "expr_select" [32-32]
  "expr_select" := rules • "expr_simple" "." "attrpath" [32-32]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [32-32]
  "expr_select" := rules • "expr_simple" "OR_KW" [32-32]
  "expr_select" := rules • "expr_simple" [32-32]
  "expr_simple" := rules • "ID" [32-32]
33
  "ID" := lexemes "ID" • [32-33]
  "expr_function" := rules "ID" • ":" "expr_function" [32-33]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [32-33]
  "expr_simple" := rules "ID" • [32-33]
  "expr_select" := rules "expr_simple" • "." "attrpath" [32-33]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [32-33]
  "expr_select" := rules "expr_simple" • "OR_KW" [32-33]
  "expr_select" := rules "expr_simple" • [32-33]
  "expr_app" := rules "expr_select" • [32-33]
  "expr_op" := rules "expr_app" • [32-33]
  "expr_app" := rules "expr_app" • "expr_select" [32-33]
  "expr_if" := rules "expr_op" • [32-33]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "<" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • ">" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "?" "attrpath" [32-33]
  "expr_op" := rules "expr_op" • "+" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "-" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "*" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "/" "expr_op" [32-33]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [32-33]
  "expr_select" := rules • "expr_simple" "." "attrpath" [33-33]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [33-33]
  "expr_select" := rules • "expr_simple" "OR_KW" [33-33]
  "expr_select" := rules • "expr_simple" [33-33]
  "expr_function" := rules "expr_if" • [32-33]
  "expr_simple" := rules • "{" "binds" "}" [33-33]
  "expr" := rules "expr_function" • [32-33]
  "{" := lexemes • "{" [33-33]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-33]
34
  "{" := lexemes "{" • [33-34]
  "expr_simple" := rules "{" • "binds" "}" [33-34]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [34-34]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [34-34]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [34-34]
  "binds" := rules • [34-34]
  "expr_simple" := rules "{" "binds" • "}" [33-34]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [34-34]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [34-34]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [34-34]
  "attrpath" := rules • "attrpath" "." "attr" [34-34]
  "attrpath" := rules • "attrpath" "." "string_attr" [34-34]
  "attrpath" := rules • "attr" [34-34]
  "attr" := rules • "ID" [34-34]
  "ID" := lexemes • "ID" [34-34]
35
  "ID" := lexemes "ID" • [34-35]
  "attr" := rules "ID" • [34-35]
  "attrpath" := rules "attr" • [34-35]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [34-35]
  "attrpath" := rules "attrpath" • "." "attr" [34-35]
  "attrpath" := rules "attrpath" • "." "string_attr" [34-35]
  "=" := lexemes • "=" [35-35]
36
  "=" := lexemes "=" • [35-36]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [34-36]
  "expr" := rules • "expr_function" [36-36]
  "expr_function" := rules • "expr_if" [36-36]
  "expr_if" := rules • "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "<" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" ">" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "?" "attrpath" [36-36]
  "expr_op" := rules • "expr_op" "+" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "-" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "*" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "/" "expr_op" [36-36]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [36-36]
  "expr_op" := rules • "expr_app" [36-36]
  "expr_app" := rules • "expr_app" "expr_select" [36-36]
  "expr_app" := rules • "expr_select" [36-36]
  "expr_select" := rules • "expr_simple" "." "attrpath" [36-36]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [36-36]
  "expr_select" := rules • "expr_simple" "OR_KW" [36-36]
  "expr_select" := rules • "expr_simple" [36-36]
  "expr_simple" := rules • "\"" "string_parts" "\"" [36-36]
  "\"" := lexemes • "\"" [36-36]
37
  "\"" := lexemes "\"" • [36-37]
  "expr_simple" := rules "\"" • "string_parts" "\"" [36-37]
  "string_parts" := rules • "STR" [37-37]
  "string_parts" := rules • "string_parts_interpolated" [37-37]
  "string_parts" := rules • [37-37]
  "STR" := lexemes • "STR" [37-37]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [37-37]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [37-37]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [37-37]
  "expr_simple" := rules "\"" "string_parts" • "\"" [36-37]
38
  "STR" := lexemes "STR" • [37-38]
  "string_parts" := rules "STR" • [37-38]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [37-38]
  "expr_simple" := rules "\"" "string_parts" • "\"" [36-38]
  "\"" := lexemes • "\"" [38-38]
39
  "\"" := lexemes "\"" • [38-39]
  "expr_simple" := rules "\"" "string_parts" "\"" • [36-39]
  "expr_select" := rules "expr_simple" • "." "attrpath" [36-39]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [36-39]
  "expr_select" := rules "expr_simple" • "OR_KW" [36-39]
  "expr_select" := rules "expr_simple" • [36-39]
  "expr_app" := rules "expr_select" • [36-39]
  "expr_op" := rules "expr_app" • [36-39]
  "expr_app" := rules "expr_app" • "expr_select" [36-39]
  "expr_if" := rules "expr_op" • [36-39]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "<" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • ">" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "?" "attrpath" [36-39]
  "expr_op" := rules "expr_op" • "+" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "-" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "*" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "/" "expr_op" [36-39]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [36-39]
  "expr_function" := rules "expr_if" • [36-39]
  "expr" := rules "expr_function" • [36-39]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [34-39]
  ";" := lexemes • ";" [39-39]
40
  ";" := lexemes ";" • [39-40]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [34-40]
  "expr_simple" := rules "{" "binds" • "}" [33-40]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [34-40]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [34-40]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [34-40]
  "attrpath" := rules • "attrpath" "." "attr" [40-40]
  "attrpath" := rules • "attrpath" "." "string_attr" [40-40]
  "attrpath" := rules • "attr" [40-40]
  "attr" := rules • "ID" [40-40]
  "ID" := lexemes • "ID" [40-40]
41
  "ID" := lexemes "ID" • [40-41]
  "attr" := rules "ID" • [40-41]
  "attrpath" := rules "attr" • [40-41]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [34-41]
  "attrpath" := rules "attrpath" • "." "attr" [40-41]
  "attrpath" := rules "attrpath" • "." "string_attr" [40-41]
  "=" := lexemes • "=" [41-41]
42
  "=" := lexemes "=" • [41-42]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [34-42]
  "expr" := rules • "expr_function" [42-42]
  "expr_function" := rules • "expr_if" [42-42]
  "expr_if" := rules • "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "<" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" ">" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "?" "attrpath" [42-42]
  "expr_op" := rules • "expr_op" "+" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "-" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "*" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "/" "expr_op" [42-42]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [42-42]
  "expr_op" := rules • "expr_app" [42-42]
  "expr_app" := rules • "expr_app" "expr_select" [42-42]
  "expr_app" := rules • "expr_select" [42-42]
  "expr_select" := rules • "expr_simple" "." "attrpath" [42-42]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [42-42]
  "expr_select" := rules • "expr_simple" "OR_KW" [42-42]
  "expr_select" := rules • "expr_simple" [42-42]
  "expr_simple" := rules • "\"" "string_parts" "\"" [42-42]
  "\"" := lexemes • "\"" [42-42]
43
  "\"" := lexemes "\"" • [42-43]
  "expr_simple" := rules "\"" • "string_parts" "\"" [42-43]
  "string_parts" := rules • "STR" [43-43]
  "string_parts" := rules • "string_parts_interpolated" [43-43]
  "string_parts" := rules • [43-43]
  "STR" := lexemes • "STR" [43-43]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [43-43]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [43-43]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [43-43]
  "expr_simple" := rules "\"" "string_parts" • "\"" [42-43]
44
  "STR" := lexemes "STR" • [43-44]
  "string_parts" := rules "STR" • [43-44]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [43-44]
  "expr_simple" := rules "\"" "string_parts" • "\"" [42-44]
  "\"" := lexemes • "\"" [44-44]
45
  "\"" := lexemes "\"" • [44-45]
  "expr_simple" := rules "\"" "string_parts" "\"" • [42-45]
  "expr_select" := rules "expr_simple" • "." "attrpath" [42-45]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [42-45]
  "expr_select" := rules "expr_simple" • "OR_KW" [42-45]
  "expr_select" := rules "expr_simple" • [42-45]
  "expr_app" := rules "expr_select" • [42-45]
  "expr_op" := rules "expr_app" • [42-45]
  "expr_app" := rules "expr_app" • "expr_select" [42-45]
  "expr_if" := rules "expr_op" • [42-45]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "<" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • ">" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "?" "attrpath" [42-45]
  "expr_op" := rules "expr_op" • "+" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "-" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "*" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "/" "expr_op" [42-45]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [42-45]
  "expr_function" := rules "expr_if" • [42-45]
  "expr" := rules "expr_function" • [42-45]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [34-45]
  ";" := lexemes • ";" [45-45]
46
  ";" := lexemes ";" • [45-46]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [34-46]
  "expr_simple" := rules "{" "binds" • "}" [33-46]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [34-46]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [34-46]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [34-46]
  "attrpath" := rules • "attrpath" "." "attr" [46-46]
  "attrpath" := rules • "attrpath" "." "string_attr" [46-46]
  "attrpath" := rules • "attr" [46-46]
  "attr" := rules • "ID" [46-46]
  "ID" := lexemes • "ID" [46-46]
47
  "ID" := lexemes "ID" • [46-47]
  "attr" := rules "ID" • [46-47]
  "attrpath" := rules "attr" • [46-47]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [34-47]
  "attrpath" := rules "attrpath" • "." "attr" [46-47]
  "attrpath" := rules "attrpath" • "." "string_attr" [46-47]
  "=" := lexemes • "=" [47-47]
48
  "=" := lexemes "=" • [47-48]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [34-48]
  "expr" := rules • "expr_function" [48-48]
  "expr_function" := rules • "ID" ":" "expr_function" [48-48]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [48-48]
  "expr_function" := rules • "expr_if" [48-48]
  "ID" := lexemes • "ID" [48-48]
  "expr_if" := rules • "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "<" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" ">" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "?" "attrpath" [48-48]
  "expr_op" := rules • "expr_op" "+" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "-" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "*" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "/" "expr_op" [48-48]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [48-48]
  "expr_op" := rules • "expr_app" [48-48]
  "expr_app" := rules • "expr_app" "expr_select" [48-48]
  "expr_app" := rules • "expr_select" [48-48]
  "expr_select" := rules • "expr_simple" "." "attrpath" [48-48]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [48-48]
  "expr_select" := rules • "expr_simple" "OR_KW" [48-48]
  "expr_select" := rules • "expr_simple" [48-48]
  "expr_simple" := rules • "ID" [48-48]
49
  "ID" := lexemes "ID" • [48-49]
  "expr_function" := rules "ID" • ":" "expr_function" [48-49]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [48-49]
  "expr_simple" := rules "ID" • [48-49]
  "expr_select" := rules "expr_simple" • "." "attrpath" [48-49]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [48-49]
  "expr_select" := rules "expr_simple" • "OR_KW" [48-49]
  "expr_select" := rules "expr_simple" • [48-49]
  "expr_app" := rules "expr_select" • [48-49]
  "expr_op" := rules "expr_app" • [48-49]
  "expr_app" := rules "expr_app" • "expr_select" [48-49]
  "expr_if" := rules "expr_op" • [48-49]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "<" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • ">" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "?" "attrpath" [48-49]
  "expr_op" := rules "expr_op" • "+" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "-" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "*" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "/" "expr_op" [48-49]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [48-49]
  "expr_function" := rules "expr_if" • [48-49]
  "expr" := rules "expr_function" • [48-49]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [34-49]
  ";" := lexemes • ";" [49-49]
50
  ";" := lexemes ";" • [49-50]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [34-50]
  "expr_simple" := rules "{" "binds" • "}" [33-50]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [34-50]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [34-50]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [34-50]
  "attrpath" := rules • "attrpath" "." "attr" [50-50]
  "attrpath" := rules • "attrpath" "." "string_attr" [50-50]
  "attrpath" := rules • "attr" [50-50]
  "attr" := rules • "ID" [50-50]
  "ID" := lexemes • "ID" [50-50]
51
  "ID" := lexemes "ID" • [50-51]
  "attr" := rules "ID" • [50-51]
  "attrpath" := rules "attr" • [50-51]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [34-51]
  "attrpath" := rules "attrpath" • "." "attr" [50-51]
  "attrpath" := rules "attrpath" • "." "string_attr" [50-51]
  "=" := lexemes • "=" [51-51]
52
  "=" := lexemes "=" • [51-52]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [34-52]
  "expr" := rules • "expr_function" [52-52]
  "expr_function" := rules • "expr_if" [52-52]
  "expr_if" := rules • "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "<" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" ">" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "?" "attrpath" [52-52]
  "expr_op" := rules • "expr_op" "+" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "-" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "*" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "/" "expr_op" [52-52]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [52-52]
  "expr_op" := rules • "expr_app" [52-52]
  "expr_app" := rules • "expr_app" "expr_select" [52-52]
  "expr_app" := rules • "expr_select" [52-52]
  "expr_select" := rules • "expr_simple" "." "attrpath" [52-52]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [52-52]
  "expr_select" := rules • "expr_simple" "OR_KW" [52-52]
  "expr_select" := rules • "expr_simple" [52-52]
  "expr_simple" := rules • "\"" "string_parts" "\"" [52-52]
  "\"" := lexemes • "\"" [52-52]
53
  "\"" := lexemes "\"" • [52-53]
  "expr_simple" := rules "\"" • "string_parts" "\"" [52-53]
  "string_parts" := rules • "STR" [53-53]
  "string_parts" := rules • "string_parts_interpolated" [53-53]
  "string_parts" := rules • [53-53]
  "STR" := lexemes • "STR" [53-53]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [53-53]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [53-53]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [53-53]
  "expr_simple" := rules "\"" "string_parts" • "\"" [52-53]
54
  "STR" := lexemes "STR" • [53-54]
  "string_parts" := rules "STR" • [53-54]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [53-54]
  "expr_simple" := rules "\"" "string_parts" • "\"" [52-54]
  "\"" := lexemes • "\"" [54-54]
55
  "\"" := lexemes "\"" • [54-55]
  "expr_simple" := rules "\"" "string_parts" "\"" • [52-55]
  "expr_select" := rules "expr_simple" • "." "attrpath" [52-55]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [52-55]
  "expr_select" := rules "expr_simple" • "OR_KW" [52-55]
  "expr_select" := rules "expr_simple" • [52-55]
  "expr_app" := rules "expr_select" • [52-55]
  "expr_op" := rules "expr_app" • [52-55]
  "expr_app" := rules "expr_app" • "expr_select" [52-55]
  "expr_if" := rules "expr_op" • [52-55]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "<" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • ">" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "?" "attrpath" [52-55]
  "expr_op" := rules "expr_op" • "+" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "-" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "*" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "/" "expr_op" [52-55]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [52-55]
  "expr_function" := rules "expr_if" • [52-55]
  "expr" := rules "expr_function" • [52-55]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [34-55]
  ";" := lexemes • ";" [55-55]
56
  ";" := lexemes ";" • [55-56]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [34-56]
  "expr_simple" := rules "{" "binds" • "}" [33-56]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [34-56]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [34-56]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [34-56]
  "}" := lexemes • "}" [56-56]
57
  "}" := lexemes "}" • [56-57]
  "expr_simple" := rules "{" "binds" "}" • [33-57]
  "expr_select" := rules "expr_simple" • "." "attrpath" [33-57]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [33-57]
  "expr_select" := rules "expr_simple" • "OR_KW" [33-57]
  "expr_select" := rules "expr_simple" • [33-57]
  "expr_app" := rules "expr_app" "expr_select" • [32-57]
  "expr_op" := rules "expr_app" • [32-57]
  "expr_app" := rules "expr_app" • "expr_select" [32-57]
  "expr_if" := rules "expr_op" • [32-57]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "<" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • ">" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "?" "attrpath" [32-57]
  "expr_op" := rules "expr_op" • "+" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "-" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "*" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "/" "expr_op" [32-57]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [32-57]
  "expr_function" := rules "expr_if" • [32-57]
  "expr" := rules "expr_function" • [32-57]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-57]
  ";" := lexemes • ";" [57-57]
58
  ";" := lexemes ";" • [57-58]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-58]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-58]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-58]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-58]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-58]
  "attrpath" := rules • "attrpath" "." "attr" [58-58]
  "attrpath" := rules • "attrpath" "." "string_attr" [58-58]
  "attrpath" := rules • "attr" [58-58]
  "attr" := rules • "ID" [58-58]
  "ID" := lexemes • "ID" [58-58]
59
  "ID" := lexemes "ID" • [58-59]
  "attr" := rules "ID" • [58-59]
  "attrpath" := rules "attr" • [58-59]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-59]
  "attrpath" := rules "attrpath" • "." "attr" [58-59]
  "attrpath" := rules "attrpath" • "." "string_attr" [58-59]
  "=" := lexemes • "=" [59-59]
60
  "=" := lexemes "=" • [59-60]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-60]
  "expr" := rules • "expr_function" [60-60]
  "expr_function" := rules • "expr_if" [60-60]
  "expr_if" := rules • "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "<" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" ">" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "?" "attrpath" [60-60]
  "expr_op" := rules • "expr_op" "+" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "-" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "*" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "/" "expr_op" [60-60]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [60-60]
  "expr_op" := rules • "expr_app" [60-60]
  "expr_app" := rules • "expr_app" "expr_select" [60-60]
  "expr_app" := rules • "expr_select" [60-60]
  "expr_select" := rules • "expr_simple" "." "attrpath" [60-60]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [60-60]
  "expr_select" := rules • "expr_simple" "OR_KW" [60-60]
  "expr_select" := rules • "expr_simple" [60-60]
  "expr_simple" := rules • "\"" "string_parts" "\"" [60-60]
  "\"" := lexemes • "\"" [60-60]
61
  "\"" := lexemes "\"" • [60-61]
  "expr_simple" := rules "\"" • "string_parts" "\"" [60-61]
  "string_parts" := rules • "STR" [61-61]
  "string_parts" := rules • "string_parts_interpolated" [61-61]
  "string_parts" := rules • [61-61]
  "STR" := lexemes • "STR" [61-61]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [61-61]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [61-61]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [61-61]
  "expr_simple" := rules "\"" "string_parts" • "\"" [60-61]
62
  "STR" := lexemes "STR" • [61-62]
  "string_parts" := rules "STR" • [61-62]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [61-62]
  "expr_simple" := rules "\"" "string_parts" • "\"" [60-62]
  "\"" := lexemes • "\"" [62-62]
63
  "\"" := lexemes "\"" • [62-63]
  "expr_simple" := rules "\"" "string_parts" "\"" • [60-63]
  "expr_select" := rules "expr_simple" • "." "attrpath" [60-63]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [60-63]
  "expr_select" := rules "expr_simple" • "OR_KW" [60-63]
  "expr_select" := rules "expr_simple" • [60-63]
  "expr_app" := rules "expr_select" • [60-63]
  "expr_op" := rules "expr_app" • [60-63]
  "expr_app" := rules "expr_app" • "expr_select" [60-63]
  "expr_if" := rules "expr_op" • [60-63]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "<" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • ">" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "?" "attrpath" [60-63]
  "expr_op" := rules "expr_op" • "+" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "-" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "*" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "/" "expr_op" [60-63]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [60-63]
  "expr_function" := rules "expr_if" • [60-63]
  "expr" := rules "expr_function" • [60-63]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-63]
  ";" := lexemes • ";" [63-63]
64
  ";" := lexemes ";" • [63-64]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-64]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-64]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-64]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-64]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-64]
  "attrpath" := rules • "attrpath" "." "attr" [64-64]
  "attrpath" := rules • "attrpath" "." "string_attr" [64-64]
  "attrpath" := rules • "attr" [64-64]
  "attr" := rules • "ID" [64-64]
  "ID" := lexemes • "ID" [64-64]
65
  "ID" := lexemes "ID" • [64-65]
  "attr" := rules "ID" • [64-65]
  "attrpath" := rules "attr" • [64-65]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-65]
  "attrpath" := rules "attrpath" • "." "attr" [64-65]
  "attrpath" := rules "attrpath" • "." "string_attr" [64-65]
  "." := lexemes • "." [65-65]
66
  "." := lexemes "." • [65-66]
  "attrpath" := rules "attrpath" "." • "attr" [64-66]
  "attrpath" := rules "attrpath" "." • "string_attr" [64-66]
  "attr" := rules • "ID" [66-66]
  "ID" := lexemes • "ID" [66-66]
67
  "ID" := lexemes "ID" • [66-67]
  "attr" := rules "ID" • [66-67]
  "attrpath" := rules "attrpath" "." "attr" • [64-67]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-67]
  "attrpath" := rules "attrpath" • "." "attr" [64-67]
  "attrpath" := rules "attrpath" • "." "string_attr" [64-67]
  "=" := lexemes • "=" [67-67]
68
  "=" := lexemes "=" • [67-68]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-68]
  "expr" := rules • "expr_function" [68-68]
  "expr_function" := rules • "{" "formals" "}" ":" "expr_function" [68-68]
  "expr_function" := rules • "{" "formals" "}" "@" "ID" ":" "expr_function" [68-68]
  "expr_function" := rules • "expr_if" [68-68]
  "{" := lexemes • "{" [68-68]
  "expr_if" := rules • "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "<" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" ">" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "?" "attrpath" [68-68]
  "expr_op" := rules • "expr_op" "+" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "-" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "*" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "/" "expr_op" [68-68]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [68-68]
  "expr_op" := rules • "expr_app" [68-68]
  "expr_app" := rules • "expr_app" "expr_select" [68-68]
  "expr_app" := rules • "expr_select" [68-68]
  "expr_select" := rules • "expr_simple" "." "attrpath" [68-68]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [68-68]
  "expr_select" := rules • "expr_simple" "OR_KW" [68-68]
  "expr_select" := rules • "expr_simple" [68-68]
  "expr_simple" := rules • "{" "binds" "}" [68-68]
69
  "{" := lexemes "{" • [68-69]
  "expr_function" := rules "{" • "formals" "}" ":" "expr_function" [68-69]
  "expr_function" := rules "{" • "formals" "}" "@" "ID" ":" "expr_function" [68-69]
  "expr_simple" := rules "{" • "binds" "}" [68-69]
  "formals" := rules • "formal" "," "formals" [69-69]
  "formals" := rules • "formal" [69-69]
  "formals" := rules • [69-69]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [69-69]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [69-69]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [69-69]
  "binds" := rules • [69-69]
  "formal" := rules • "ID" [69-69]
  "formal" := rules • "ID" "?" "expr" [69-69]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [68-69]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [68-69]
  "expr_simple" := rules "{" "binds" • "}" [68-69]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [69-69]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [69-69]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [69-69]
  "ID" := lexemes • "ID" [69-69]
  "attrpath" := rules • "attrpath" "." "attr" [69-69]
  "attrpath" := rules • "attrpath" "." "string_attr" [69-69]
  "attrpath" := rules • "attr" [69-69]
  "attr" := rules • "ID" [69-69]
70
  "ID" := lexemes "ID" • [69-70]
  "formal" := rules "ID" • [69-70]
  "formal" := rules "ID" • "?" "expr" [69-70]
  "attr" := rules "ID" • [69-70]
  "formals" := rules "formal" • "," "formals" [69-70]
  "formals" := rules "formal" • [69-70]
  "attrpath" := rules "attr" • [69-70]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [68-70]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [68-70]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [69-70]
  "attrpath" := rules "attrpath" • "." "attr" [69-70]
  "attrpath" := rules "attrpath" • "." "string_attr" [69-70]
  "=" := lexemes • "=" [70-70]
71
  "=" := lexemes "=" • [70-71]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [69-71]
  "expr" := rules • "expr_function" [71-71]
  "expr_function" := rules • "ID" ":" "expr_function" [71-71]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [71-71]
  "expr_function" := rules • "expr_if" [71-71]
  "ID" := lexemes • "ID" [71-71]
  "expr_if" := rules • "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "<" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" ">" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "?" "attrpath" [71-71]
  "expr_op" := rules • "expr_op" "+" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "-" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "*" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "/" "expr_op" [71-71]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [71-71]
  "expr_op" := rules • "expr_app" [71-71]
  "expr_app" := rules • "expr_app" "expr_select" [71-71]
  "expr_app" := rules • "expr_select" [71-71]
  "expr_select" := rules • "expr_simple" "." "attrpath" [71-71]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [71-71]
  "expr_select" := rules • "expr_simple" "OR_KW" [71-71]
  "expr_select" := rules • "expr_simple" [71-71]
  "expr_simple" := rules • "ID" [71-71]
72
  "ID" := lexemes "ID" • [71-72]
  "expr_function" := rules "ID" • ":" "expr_function" [71-72]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [71-72]
  "expr_simple" := rules "ID" • [71-72]
  "expr_select" := rules "expr_simple" • "." "attrpath" [71-72]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [71-72]
  "expr_select" := rules "expr_simple" • "OR_KW" [71-72]
  "expr_select" := rules "expr_simple" • [71-72]
  "expr_app" := rules "expr_select" • [71-72]
  "expr_op" := rules "expr_app" • [71-72]
  "expr_app" := rules "expr_app" • "expr_select" [71-72]
  "expr_if" := rules "expr_op" • [71-72]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "<" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • ">" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "?" "attrpath" [71-72]
  "expr_op" := rules "expr_op" • "+" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "-" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "*" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "/" "expr_op" [71-72]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [71-72]
  "expr_select" := rules • "expr_simple" "." "attrpath" [72-72]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [72-72]
  "expr_select" := rules • "expr_simple" "OR_KW" [72-72]
  "expr_select" := rules • "expr_simple" [72-72]
  "expr_function" := rules "expr_if" • [71-72]
  "expr_simple" := rules • "{" "binds" "}" [72-72]
  "expr" := rules "expr_function" • [71-72]
  "{" := lexemes • "{" [72-72]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [69-72]
73
  "{" := lexemes "{" • [72-73]
  "expr_simple" := rules "{" • "binds" "}" [72-73]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [73-73]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [73-73]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [73-73]
  "binds" := rules • [73-73]
  "expr_simple" := rules "{" "binds" • "}" [72-73]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [73-73]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [73-73]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [73-73]
  "attrpath" := rules • "attrpath" "." "attr" [73-73]
  "attrpath" := rules • "attrpath" "." "string_attr" [73-73]
  "attrpath" := rules • "attr" [73-73]
  "attr" := rules • "ID" [73-73]
  "ID" := lexemes • "ID" [73-73]
74
  "ID" := lexemes "ID" • [73-74]
  "attr" := rules "ID" • [73-74]
  "attrpath" := rules "attr" • [73-74]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [73-74]
  "attrpath" := rules "attrpath" • "." "attr" [73-74]
  "attrpath" := rules "attrpath" • "." "string_attr" [73-74]
  "=" := lexemes • "=" [74-74]
75
  "=" := lexemes "=" • [74-75]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [73-75]
  "expr" := rules • "expr_function" [75-75]
  "expr_function" := rules • "ID" ":" "expr_function" [75-75]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [75-75]
  "expr_function" := rules • "expr_if" [75-75]
  "ID" := lexemes • "ID" [75-75]
  "expr_if" := rules • "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "<" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" ">" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "?" "attrpath" [75-75]
  "expr_op" := rules • "expr_op" "+" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "-" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "*" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "/" "expr_op" [75-75]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [75-75]
  "expr_op" := rules • "expr_app" [75-75]
  "expr_app" := rules • "expr_app" "expr_select" [75-75]
  "expr_app" := rules • "expr_select" [75-75]
  "expr_select" := rules • "expr_simple" "." "attrpath" [75-75]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [75-75]
  "expr_select" := rules • "expr_simple" "OR_KW" [75-75]
  "expr_select" := rules • "expr_simple" [75-75]
  "expr_simple" := rules • "ID" [75-75]
76
  "ID" := lexemes "ID" • [75-76]
  "expr_function" := rules "ID" • ":" "expr_function" [75-76]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [75-76]
  "expr_simple" := rules "ID" • [75-76]
  "expr_select" := rules "expr_simple" • "." "attrpath" [75-76]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [75-76]
  "expr_select" := rules "expr_simple" • "OR_KW" [75-76]
  "expr_select" := rules "expr_simple" • [75-76]
  "expr_app" := rules "expr_select" • [75-76]
  "expr_op" := rules "expr_app" • [75-76]
  "expr_app" := rules "expr_app" • "expr_select" [75-76]
  "expr_if" := rules "expr_op" • [75-76]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "<" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • ">" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "?" "attrpath" [75-76]
  "expr_op" := rules "expr_op" • "+" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "-" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "*" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "/" "expr_op" [75-76]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [75-76]
  "expr_function" := rules "expr_if" • [75-76]
  "expr" := rules "expr_function" • [75-76]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [73-76]
  ";" := lexemes • ";" [76-76]
77
  ";" := lexemes ";" • [76-77]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [73-77]
  "expr_simple" := rules "{" "binds" • "}" [72-77]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [73-77]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [73-77]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [73-77]
  "}" := lexemes • "}" [77-77]
78
  "}" := lexemes "}" • [77-78]
  "expr_simple" := rules "{" "binds" "}" • [72-78]
  "expr_select" := rules "expr_simple" • "." "attrpath" [72-78]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [72-78]
  "expr_select" := rules "expr_simple" • "OR_KW" [72-78]
  "expr_select" := rules "expr_simple" • [72-78]
  "expr_app" := rules "expr_app" "expr_select" • [71-78]
  "expr_op" := rules "expr_app" • [71-78]
  "expr_app" := rules "expr_app" • "expr_select" [71-78]
  "expr_if" := rules "expr_op" • [71-78]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "<" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • ">" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "?" "attrpath" [71-78]
  "expr_op" := rules "expr_op" • "+" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "-" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "*" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "/" "expr_op" [71-78]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [71-78]
  "expr_function" := rules "expr_if" • [71-78]
  "expr" := rules "expr_function" • [71-78]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [69-78]
  ";" := lexemes • ";" [78-78]
79
  ";" := lexemes ";" • [78-79]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [69-79]
  "expr_simple" := rules "{" "binds" • "}" [68-79]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [69-79]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [69-79]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [69-79]
  "}" := lexemes • "}" [79-79]
80
  "}" := lexemes "}" • [79-80]
  "expr_simple" := rules "{" "binds" "}" • [68-80]
  "expr_select" := rules "expr_simple" • "." "attrpath" [68-80]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [68-80]
  "expr_select" := rules "expr_simple" • "OR_KW" [68-80]
  "expr_select" := rules "expr_simple" • [68-80]
  "expr_app" := rules "expr_select" • [68-80]
  "expr_op" := rules "expr_app" • [68-80]
  "expr_app" := rules "expr_app" • "expr_select" [68-80]
  "expr_if" := rules "expr_op" • [68-80]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "<" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • ">" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "?" "attrpath" [68-80]
  "expr_op" := rules "expr_op" • "+" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "-" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "*" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "/" "expr_op" [68-80]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [68-80]
  "expr_function" := rules "expr_if" • [68-80]
  "expr" := rules "expr_function" • [68-80]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-80]
  ";" := lexemes • ";" [80-80]
81
  ";" := lexemes ";" • [80-81]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-81]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-81]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-81]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-81]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-81]
  "attrpath" := rules • "attrpath" "." "attr" [81-81]
  "attrpath" := rules • "attrpath" "." "string_attr" [81-81]
  "attrpath" := rules • "attr" [81-81]
  "attr" := rules • "ID" [81-81]
  "ID" := lexemes • "ID" [81-81]
82
  "ID" := lexemes "ID" • [81-82]
  "attr" := rules "ID" • [81-82]
  "attrpath" := rules "attr" • [81-82]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [18-82]
  "attrpath" := rules "attrpath" • "." "attr" [81-82]
  "attrpath" := rules "attrpath" • "." "string_attr" [81-82]
  "=" := lexemes • "=" [82-82]
83
  "=" := lexemes "=" • [82-83]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [18-83]
  "expr" := rules • "expr_function" [83-83]
  "expr_function" := rules • "WITH" "expr" ";" "expr_function" [83-83]
  "WITH" := lexemes • "WITH" [83-83]
84
  "WITH" := lexemes "WITH" • [83-84]
  "expr_function" := rules "WITH" • "expr" ";" "expr_function" [83-84]
  "expr" := rules • "expr_function" [84-84]
  "expr_function" := rules • "ID" ":" "expr_function" [84-84]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [84-84]
  "expr_function" := rules • "expr_if" [84-84]
  "ID" := lexemes • "ID" [84-84]
  "expr_if" := rules • "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "<" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" ">" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "?" "attrpath" [84-84]
  "expr_op" := rules • "expr_op" "+" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "-" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "*" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "/" "expr_op" [84-84]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [84-84]
  "expr_op" := rules • "expr_app" [84-84]
  "expr_app" := rules • "expr_app" "expr_select" [84-84]
  "expr_app" := rules • "expr_select" [84-84]
  "expr_select" := rules • "expr_simple" "." "attrpath" [84-84]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [84-84]
  "expr_select" := rules • "expr_simple" "OR_KW" [84-84]
  "expr_select" := rules • "expr_simple" [84-84]
  "expr_simple" := rules • "ID" [84-84]
85
  "ID" := lexemes "ID" • [84-85]
  "expr_function" := rules "ID" • ":" "expr_function" [84-85]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [84-85]
  "expr_simple" := rules "ID" • [84-85]
  "expr_select" := rules "expr_simple" • "." "attrpath" [84-85]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [84-85]
  "expr_select" := rules "expr_simple" • "OR_KW" [84-85]
  "expr_select" := rules "expr_simple" • [84-85]
  "expr_app" := rules "expr_select" • [84-85]
  "expr_op" := rules "expr_app" • [84-85]
  "expr_app" := rules "expr_app" • "expr_select" [84-85]
  "expr_if" := rules "expr_op" • [84-85]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "<" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • ">" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "?" "attrpath" [84-85]
  "expr_op" := rules "expr_op" • "+" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "-" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "*" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "/" "expr_op" [84-85]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [84-85]
  "expr_function" := rules "expr_if" • [84-85]
  "expr" := rules "expr_function" • [84-85]
  "expr_function" := rules "WITH" "expr" • ";" "expr_function" [83-85]
  ";" := lexemes • ";" [85-85]
86
  ";" := lexemes ";" • [85-86]
  "expr_function" := rules "WITH" "expr" ";" • "expr_function" [83-86]
  "expr_function" := rules • "{" "formals" "}" ":" "expr_function" [86-86]
  "expr_function" := rules • "{" "formals" "}" "@" "ID" ":" "expr_function" [86-86]
  "expr_function" := rules • "expr_if" [86-86]
  "{" := lexemes • "{" [86-86]
  "expr_if" := rules • "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "<" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" ">" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "?" "attrpath" [86-86]
  "expr_op" := rules • "expr_op" "+" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "-" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "*" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "/" "expr_op" [86-86]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [86-86]
  "expr_op" := rules • "expr_app" [86-86]
  "expr_app" := rules • "expr_app" "expr_select" [86-86]
  "expr_app" := rules • "expr_select" [86-86]
  "expr_select" := rules • "expr_simple" "." "attrpath" [86-86]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [86-86]
  "expr_select" := rules • "expr_simple" "OR_KW" [86-86]
  "expr_select" := rules • "expr_simple" [86-86]
  "expr_simple" := rules • "{" "binds" "}" [86-86]
87
  "{" := lexemes "{" • [86-87]
  "expr_function" := rules "{" • "formals" "}" ":" "expr_function" [86-87]
  "expr_function" := rules "{" • "formals" "}" "@" "ID" ":" "expr_function" [86-87]
  "expr_simple" := rules "{" • "binds" "}" [86-87]
  "formals" := rules • "formal" "," "formals" [87-87]
  "formals" := rules • "formal" [87-87]
  "formals" := rules • [87-87]
  "binds" := rules • "binds" "attrpath" "=" "expr" ";" [87-87]
  "binds" := rules • "binds" "INHERIT" "attrs" ";" [87-87]
  "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [87-87]
  "binds" := rules • [87-87]
  "formal" := rules • "ID" [87-87]
  "formal" := rules • "ID" "?" "expr" [87-87]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [86-87]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [86-87]
  "expr_simple" := rules "{" "binds" • "}" [86-87]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-87]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-87]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-87]
  "ID" := lexemes • "ID" [87-87]
  "attrpath" := rules • "attrpath" "." "attr" [87-87]
  "attrpath" := rules • "attrpath" "." "string_attr" [87-87]
  "attrpath" := rules • "attr" [87-87]
  "attr" := rules • "ID" [87-87]
88
  "ID" := lexemes "ID" • [87-88]
  "formal" := rules "ID" • [87-88]
  "formal" := rules "ID" • "?" "expr" [87-88]
  "attr" := rules "ID" • [87-88]
  "formals" := rules "formal" • "," "formals" [87-88]
  "formals" := rules "formal" • [87-88]
  "attrpath" := rules "attr" • [87-88]
  "expr_function" := rules "{" "formals" • "}" ":" "expr_function" [86-88]
  "expr_function" := rules "{" "formals" • "}" "@" "ID" ":" "expr_function" [86-88]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [87-88]
  "attrpath" := rules "attrpath" • "." "attr" [87-88]
  "attrpath" := rules "attrpath" • "." "string_attr" [87-88]
  "=" := lexemes • "=" [88-88]
89
  "=" := lexemes "=" • [88-89]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [87-89]
  "expr" := rules • "expr_function" [89-89]
  "expr_function" := rules • "expr_if" [89-89]
  "expr_if" := rules • "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "<" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" ">" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "?" "attrpath" [89-89]
  "expr_op" := rules • "expr_op" "+" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "-" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "*" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "/" "expr_op" [89-89]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [89-89]
  "expr_op" := rules • "expr_app" [89-89]
  "expr_app" := rules • "expr_app" "expr_select" [89-89]
  "expr_app" := rules • "expr_select" [89-89]
  "expr_select" := rules • "expr_simple" "." "attrpath" [89-89]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [89-89]
  "expr_select" := rules • "expr_simple" "OR_KW" [89-89]
  "expr_select" := rules • "expr_simple" [89-89]
  "expr_simple" := rules • "\"" "string_parts" "\"" [89-89]
  "\"" := lexemes • "\"" [89-89]
90
  "\"" := lexemes "\"" • [89-90]
  "expr_simple" := rules "\"" • "string_parts" "\"" [89-90]
  "string_parts" := rules • "STR" [90-90]
  "string_parts" := rules • "string_parts_interpolated" [90-90]
  "string_parts" := rules • [90-90]
  "STR" := lexemes • "STR" [90-90]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [90-90]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [90-90]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [90-90]
  "expr_simple" := rules "\"" "string_parts" • "\"" [89-90]
91
  "STR" := lexemes "STR" • [90-91]
  "string_parts" := rules "STR" • [90-91]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [90-91]
  "expr_simple" := rules "\"" "string_parts" • "\"" [89-91]
  "\"" := lexemes • "\"" [91-91]
92
  "\"" := lexemes "\"" • [91-92]
  "expr_simple" := rules "\"" "string_parts" "\"" • [89-92]
  "expr_select" := rules "expr_simple" • "." "attrpath" [89-92]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [89-92]
  "expr_select" := rules "expr_simple" • "OR_KW" [89-92]
  "expr_select" := rules "expr_simple" • [89-92]
  "expr_app" := rules "expr_select" • [89-92]
  "expr_op" := rules "expr_app" • [89-92]
  "expr_app" := rules "expr_app" • "expr_select" [89-92]
  "expr_if" := rules "expr_op" • [89-92]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "<" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • ">" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "?" "attrpath" [89-92]
  "expr_op" := rules "expr_op" • "+" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "-" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "*" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "/" "expr_op" [89-92]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [89-92]
  "expr_function" := rules "expr_if" • [89-92]
  "expr" := rules "expr_function" • [89-92]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-92]
  ";" := lexemes • ";" [92-92]
93
  ";" := lexemes ";" • [92-93]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [87-93]
  "expr_simple" := rules "{" "binds" • "}" [86-93]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-93]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-93]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-93]
  "attrpath" := rules • "attrpath" "." "attr" [93-93]
  "attrpath" := rules • "attrpath" "." "string_attr" [93-93]
  "attrpath" := rules • "attr" [93-93]
  "attr" := rules • "ID" [93-93]
  "ID" := lexemes • "ID" [93-93]
94
  "ID" := lexemes "ID" • [93-94]
  "attr" := rules "ID" • [93-94]
  "attrpath" := rules "attr" • [93-94]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [87-94]
  "attrpath" := rules "attrpath" • "." "attr" [93-94]
  "attrpath" := rules "attrpath" • "." "string_attr" [93-94]
  "=" := lexemes • "=" [94-94]
95
  "=" := lexemes "=" • [94-95]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [87-95]
  "expr" := rules • "expr_function" [95-95]
  "expr_function" := rules • "expr_if" [95-95]
  "expr_if" := rules • "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "<" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" ">" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "?" "attrpath" [95-95]
  "expr_op" := rules • "expr_op" "+" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "-" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "*" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "/" "expr_op" [95-95]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [95-95]
  "expr_op" := rules • "expr_app" [95-95]
  "expr_app" := rules • "expr_app" "expr_select" [95-95]
  "expr_app" := rules • "expr_select" [95-95]
  "expr_select" := rules • "expr_simple" "." "attrpath" [95-95]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [95-95]
  "expr_select" := rules • "expr_simple" "OR_KW" [95-95]
  "expr_select" := rules • "expr_simple" [95-95]
  "expr_simple" := rules • "\"" "string_parts" "\"" [95-95]
  "\"" := lexemes • "\"" [95-95]
96
  "\"" := lexemes "\"" • [95-96]
  "expr_simple" := rules "\"" • "string_parts" "\"" [95-96]
  "string_parts" := rules • "STR" [96-96]
  "string_parts" := rules • "string_parts_interpolated" [96-96]
  "string_parts" := rules • [96-96]
  "STR" := lexemes • "STR" [96-96]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [96-96]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [96-96]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [96-96]
  "expr_simple" := rules "\"" "string_parts" • "\"" [95-96]
97
  "STR" := lexemes "STR" • [96-97]
  "string_parts" := rules "STR" • [96-97]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [96-97]
  "expr_simple" := rules "\"" "string_parts" • "\"" [95-97]
  "\"" := lexemes • "\"" [97-97]
98
  "\"" := lexemes "\"" • [97-98]
  "expr_simple" := rules "\"" "string_parts" "\"" • [95-98]
  "expr_select" := rules "expr_simple" • "." "attrpath" [95-98]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [95-98]
  "expr_select" := rules "expr_simple" • "OR_KW" [95-98]
  "expr_select" := rules "expr_simple" • [95-98]
  "expr_app" := rules "expr_select" • [95-98]
  "expr_op" := rules "expr_app" • [95-98]
  "expr_app" := rules "expr_app" • "expr_select" [95-98]
  "expr_if" := rules "expr_op" • [95-98]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "<" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • ">" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "?" "attrpath" [95-98]
  "expr_op" := rules "expr_op" • "+" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "-" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "*" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "/" "expr_op" [95-98]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [95-98]
  "expr_function" := rules "expr_if" • [95-98]
  "expr" := rules "expr_function" • [95-98]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-98]
  ";" := lexemes • ";" [98-98]
99
  ";" := lexemes ";" • [98-99]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [87-99]
  "expr_simple" := rules "{" "binds" • "}" [86-99]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-99]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-99]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-99]
  "attrpath" := rules • "attrpath" "." "attr" [99-99]
  "attrpath" := rules • "attrpath" "." "string_attr" [99-99]
  "attrpath" := rules • "attr" [99-99]
  "attr" := rules • "ID" [99-99]
  "ID" := lexemes • "ID" [99-99]
100
  "ID" := lexemes "ID" • [99-100]
  "attr" := rules "ID" • [99-100]
  "attrpath" := rules "attr" • [99-100]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [87-100]
  "attrpath" := rules "attrpath" • "." "attr" [99-100]
  "attrpath" := rules "attrpath" • "." "string_attr" [99-100]
  "=" := lexemes • "=" [100-100]
101
  "=" := lexemes "=" • [100-101]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [87-101]
  "expr" := rules • "expr_function" [101-101]
  "expr_function" := rules • "expr_if" [101-101]
  "expr_if" := rules • "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "<" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" ">" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "?" "attrpath" [101-101]
  "expr_op" := rules • "expr_op" "+" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "-" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "*" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "/" "expr_op" [101-101]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [101-101]
  "expr_op" := rules • "expr_app" [101-101]
  "expr_app" := rules • "expr_app" "expr_select" [101-101]
  "expr_app" := rules • "expr_select" [101-101]
  "expr_select" := rules • "expr_simple" "." "attrpath" [101-101]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [101-101]
  "expr_select" := rules • "expr_simple" "OR_KW" [101-101]
  "expr_select" := rules • "expr_simple" [101-101]
  "expr_simple" := rules • "\"" "string_parts" "\"" [101-101]
  "\"" := lexemes • "\"" [101-101]
102
  "\"" := lexemes "\"" • [101-102]
  "expr_simple" := rules "\"" • "string_parts" "\"" [101-102]
  "string_parts" := rules • "STR" [102-102]
  "string_parts" := rules • "string_parts_interpolated" [102-102]
  "string_parts" := rules • [102-102]
  "STR" := lexemes • "STR" [102-102]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "STR" [102-102]
  "string_parts_interpolated" := rules • "string_parts_interpolated" "DOLLAR_CURLY" "expr" "}" [102-102]
  "string_parts_interpolated" := rules • "STR" "DOLLAR_CURLY" "expr" "}" [102-102]
  "expr_simple" := rules "\"" "string_parts" • "\"" [101-102]
103
  "STR" := lexemes "STR" • [102-103]
  "string_parts" := rules "STR" • [102-103]
  "string_parts_interpolated" := rules "STR" • "DOLLAR_CURLY" "expr" "}" [102-103]
  "expr_simple" := rules "\"" "string_parts" • "\"" [101-103]
  "DOLLAR_CURLY" := lexemes • "DOLLAR_CURLY" [103-103]
104
  "DOLLAR_CURLY" := lexemes "DOLLAR_CURLY" • [103-104]
  "string_parts_interpolated" := rules "STR" "DOLLAR_CURLY" • "expr" "}" [102-104]
  "expr" := rules • "expr_function" [104-104]
  "expr_function" := rules • "ID" ":" "expr_function" [104-104]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [104-104]
  "expr_function" := rules • "expr_if" [104-104]
  "ID" := lexemes • "ID" [104-104]
  "expr_if" := rules • "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "<" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" ">" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "?" "attrpath" [104-104]
  "expr_op" := rules • "expr_op" "+" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "-" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "*" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "/" "expr_op" [104-104]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [104-104]
  "expr_op" := rules • "expr_app" [104-104]
  "expr_app" := rules • "expr_app" "expr_select" [104-104]
  "expr_app" := rules • "expr_select" [104-104]
  "expr_select" := rules • "expr_simple" "." "attrpath" [104-104]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [104-104]
  "expr_select" := rules • "expr_simple" "OR_KW" [104-104]
  "expr_select" := rules • "expr_simple" [104-104]
  "expr_simple" := rules • "ID" [104-104]
105
  "ID" := lexemes "ID" • [104-105]
  "expr_function" := rules "ID" • ":" "expr_function" [104-105]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [104-105]
  "expr_simple" := rules "ID" • [104-105]
  "expr_select" := rules "expr_simple" • "." "attrpath" [104-105]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [104-105]
  "expr_select" := rules "expr_simple" • "OR_KW" [104-105]
  "expr_select" := rules "expr_simple" • [104-105]
  "expr_app" := rules "expr_select" • [104-105]
  "expr_op" := rules "expr_app" • [104-105]
  "expr_app" := rules "expr_app" • "expr_select" [104-105]
  "expr_if" := rules "expr_op" • [104-105]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "<" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • ">" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "?" "attrpath" [104-105]
  "expr_op" := rules "expr_op" • "+" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "-" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "*" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "/" "expr_op" [104-105]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [104-105]
  "expr_function" := rules "expr_if" • [104-105]
  "expr" := rules "expr_function" • [104-105]
  "string_parts_interpolated" := rules "STR" "DOLLAR_CURLY" "expr" • "}" [102-105]
  "}" := lexemes • "}" [105-105]
106
  "}" := lexemes "}" • [105-106]
  "string_parts_interpolated" := rules "STR" "DOLLAR_CURLY" "expr" "}" • [102-106]
  "string_parts" := rules "string_parts_interpolated" • [102-106]
  "string_parts_interpolated" := rules "string_parts_interpolated" • "STR" [102-106]
  "string_parts_interpolated" := rules "string_parts_interpolated" • "DOLLAR_CURLY" "expr" "}" [102-106]
  "expr_simple" := rules "\"" "string_parts" • "\"" [101-106]
  "STR" := lexemes • "STR" [106-106]
107
  "STR" := lexemes "STR" • [106-107]
  "string_parts_interpolated" := rules "string_parts_interpolated" "STR" • [102-107]
  "string_parts" := rules "string_parts_interpolated" • [102-107]
  "string_parts_interpolated" := rules "string_parts_interpolated" • "STR" [102-107]
  "string_parts_interpolated" := rules "string_parts_interpolated" • "DOLLAR_CURLY" "expr" "}" [102-107]
  "expr_simple" := rules "\"" "string_parts" • "\"" [101-107]
  "\"" := lexemes • "\"" [107-107]
108
  "\"" := lexemes "\"" • [107-108]
  "expr_simple" := rules "\"" "string_parts" "\"" • [101-108]
  "expr_select" := rules "expr_simple" • "." "attrpath" [101-108]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [101-108]
  "expr_select" := rules "expr_simple" • "OR_KW" [101-108]
  "expr_select" := rules "expr_simple" • [101-108]
  "expr_app" := rules "expr_select" • [101-108]
  "expr_op" := rules "expr_app" • [101-108]
  "expr_app" := rules "expr_app" • "expr_select" [101-108]
  "expr_if" := rules "expr_op" • [101-108]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "<" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • ">" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "?" "attrpath" [101-108]
  "expr_op" := rules "expr_op" • "+" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "-" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "*" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "/" "expr_op" [101-108]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [101-108]
  "expr_function" := rules "expr_if" • [101-108]
  "expr" := rules "expr_function" • [101-108]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-108]
  ";" := lexemes • ";" [108-108]
109
  ";" := lexemes ";" • [108-109]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [87-109]
  "expr_simple" := rules "{" "binds" • "}" [86-109]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-109]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-109]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-109]
  "attrpath" := rules • "attrpath" "." "attr" [109-109]
  "attrpath" := rules • "attrpath" "." "string_attr" [109-109]
  "attrpath" := rules • "attr" [109-109]
  "attr" := rules • "ID" [109-109]
  "ID" := lexemes • "ID" [109-109]
110
  "ID" := lexemes "ID" • [109-110]
  "attr" := rules "ID" • [109-110]
  "attrpath" := rules "attr" • [109-110]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [87-110]
  "attrpath" := rules "attrpath" • "." "attr" [109-110]
  "attrpath" := rules "attrpath" • "." "string_attr" [109-110]
  "=" := lexemes • "=" [110-110]
111
  "=" := lexemes "=" • [110-111]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [87-111]
  "expr" := rules • "expr_function" [111-111]
  "expr_function" := rules • "ID" ":" "expr_function" [111-111]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [111-111]
  "expr_function" := rules • "expr_if" [111-111]
  "ID" := lexemes • "ID" [111-111]
  "expr_if" := rules • "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "<" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" ">" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "?" "attrpath" [111-111]
  "expr_op" := rules • "expr_op" "+" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "-" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "*" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "/" "expr_op" [111-111]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [111-111]
  "expr_op" := rules • "expr_app" [111-111]
  "expr_app" := rules • "expr_app" "expr_select" [111-111]
  "expr_app" := rules • "expr_select" [111-111]
  "expr_select" := rules • "expr_simple" "." "attrpath" [111-111]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [111-111]
  "expr_select" := rules • "expr_simple" "OR_KW" [111-111]
  "expr_select" := rules • "expr_simple" [111-111]
  "expr_simple" := rules • "ID" [111-111]
112
  "ID" := lexemes "ID" • [111-112]
  "expr_function" := rules "ID" • ":" "expr_function" [111-112]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [111-112]
  "expr_simple" := rules "ID" • [111-112]
  "expr_select" := rules "expr_simple" • "." "attrpath" [111-112]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [111-112]
  "expr_select" := rules "expr_simple" • "OR_KW" [111-112]
  "expr_select" := rules "expr_simple" • [111-112]
  "." := lexemes • "." [112-112]
  "expr_app" := rules "expr_select" • [111-112]
  "expr_op" := rules "expr_app" • [111-112]
  "expr_app" := rules "expr_app" • "expr_select" [111-112]
  "expr_if" := rules "expr_op" • [111-112]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "<" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • ">" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "?" "attrpath" [111-112]
  "expr_op" := rules "expr_op" • "+" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "-" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "*" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "/" "expr_op" [111-112]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [111-112]
  "expr_function" := rules "expr_if" • [111-112]
  "expr" := rules "expr_function" • [111-112]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-112]
113
  "." := lexemes "." • [112-113]
  "expr_select" := rules "expr_simple" "." • "attrpath" [111-113]
  "expr_select" := rules "expr_simple" "." • "attrpath" "OR_KW" "expr_select" [111-113]
  "attrpath" := rules • "attrpath" "." "attr" [113-113]
  "attrpath" := rules • "attrpath" "." "string_attr" [113-113]
  "attrpath" := rules • "attr" [113-113]
  "attr" := rules • "ID" [113-113]
  "ID" := lexemes • "ID" [113-113]
114
  "ID" := lexemes "ID" • [113-114]
  "attr" := rules "ID" • [113-114]
  "attrpath" := rules "attr" • [113-114]
  "expr_select" := rules "expr_simple" "." "attrpath" • [111-114]
  "expr_select" := rules "expr_simple" "." "attrpath" • "OR_KW" "expr_select" [111-114]
  "attrpath" := rules "attrpath" • "." "attr" [113-114]
  "attrpath" := rules "attrpath" • "." "string_attr" [113-114]
  "expr_app" := rules "expr_select" • [111-114]
  "expr_op" := rules "expr_app" • [111-114]
  "expr_app" := rules "expr_app" • "expr_select" [111-114]
  "expr_if" := rules "expr_op" • [111-114]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "<" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • ">" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "?" "attrpath" [111-114]
  "expr_op" := rules "expr_op" • "+" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "-" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "*" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "/" "expr_op" [111-114]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [111-114]
  "expr_function" := rules "expr_if" • [111-114]
  "expr" := rules "expr_function" • [111-114]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-114]
  ";" := lexemes • ";" [114-114]
115
  ";" := lexemes ";" • [114-115]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [87-115]
  "expr_simple" := rules "{" "binds" • "}" [86-115]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-115]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-115]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-115]
  "attrpath" := rules • "attrpath" "." "attr" [115-115]
  "attrpath" := rules • "attrpath" "." "string_attr" [115-115]
  "attrpath" := rules • "attr" [115-115]
  "attr" := rules • "ID" [115-115]
  "ID" := lexemes • "ID" [115-115]
116
  "ID" := lexemes "ID" • [115-116]
  "attr" := rules "ID" • [115-116]
  "attrpath" := rules "attr" • [115-116]
  "binds" := rules "binds" "attrpath" • "=" "expr" ";" [87-116]
  "attrpath" := rules "attrpath" • "." "attr" [115-116]
  "attrpath" := rules "attrpath" • "." "string_attr" [115-116]
  "=" := lexemes • "=" [116-116]
117
  "=" := lexemes "=" • [116-117]
  "binds" := rules "binds" "attrpath" "=" • "expr" ";" [87-117]
  "expr" := rules • "expr_function" [117-117]
  "expr_function" := rules • "WITH" "expr" ";" "expr_function" [117-117]
  "WITH" := lexemes • "WITH" [117-117]
118
  "WITH" := lexemes "WITH" • [117-118]
  "expr_function" := rules "WITH" • "expr" ";" "expr_function" [117-118]
  "expr" := rules • "expr_function" [118-118]
  "expr_function" := rules • "ID" ":" "expr_function" [118-118]
  "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [118-118]
  "expr_function" := rules • "expr_if" [118-118]
  "ID" := lexemes • "ID" [118-118]
  "expr_if" := rules • "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "<" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" ">" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "?" "attrpath" [118-118]
  "expr_op" := rules • "expr_op" "+" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "-" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "*" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "/" "expr_op" [118-118]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [118-118]
  "expr_op" := rules • "expr_app" [118-118]
  "expr_app" := rules • "expr_app" "expr_select" [118-118]
  "expr_app" := rules • "expr_select" [118-118]
  "expr_select" := rules • "expr_simple" "." "attrpath" [118-118]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [118-118]
  "expr_select" := rules • "expr_simple" "OR_KW" [118-118]
  "expr_select" := rules • "expr_simple" [118-118]
  "expr_simple" := rules • "ID" [118-118]
119
  "ID" := lexemes "ID" • [118-119]
  "expr_function" := rules "ID" • ":" "expr_function" [118-119]
  "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [118-119]
  "expr_simple" := rules "ID" • [118-119]
  "expr_select" := rules "expr_simple" • "." "attrpath" [118-119]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [118-119]
  "expr_select" := rules "expr_simple" • "OR_KW" [118-119]
  "expr_select" := rules "expr_simple" • [118-119]
  "expr_app" := rules "expr_select" • [118-119]
  "expr_op" := rules "expr_app" • [118-119]
  "expr_app" := rules "expr_app" • "expr_select" [118-119]
  "expr_if" := rules "expr_op" • [118-119]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "<" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • ">" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "?" "attrpath" [118-119]
  "expr_op" := rules "expr_op" • "+" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "-" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "*" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "/" "expr_op" [118-119]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [118-119]
  "expr_function" := rules "expr_if" • [118-119]
  "expr" := rules "expr_function" • [118-119]
  "expr_function" := rules "WITH" "expr" • ";" "expr_function" [117-119]
  ";" := lexemes • ";" [119-119]
120
  ";" := lexemes ";" • [119-120]
  "expr_function" := rules "WITH" "expr" ";" • "expr_function" [117-120]
  "expr_function" := rules • "expr_if" [120-120]
  "expr_if" := rules • "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "EQ" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "NEQ" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "<" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "LEQ" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" ">" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "GEQ" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "AND" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "OR" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "IMPL" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "?" "attrpath" [120-120]
  "expr_op" := rules • "expr_op" "+" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "-" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "*" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "/" "expr_op" [120-120]
  "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [120-120]
  "expr_op" := rules • "expr_app" [120-120]
  "expr_app" := rules • "expr_app" "expr_select" [120-120]
  "expr_app" := rules • "expr_select" [120-120]
  "expr_select" := rules • "expr_simple" "." "attrpath" [120-120]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [120-120]
  "expr_select" := rules • "expr_simple" "OR_KW" [120-120]
  "expr_select" := rules • "expr_simple" [120-120]
  "expr_simple" := rules • "[" "expr_list" "]" [120-120]
  "[" := lexemes • "[" [120-120]
121
  "[" := lexemes "[" • [120-121]
  "expr_simple" := rules "[" • "expr_list" "]" [120-121]
  "expr_list" := rules • "expr_list" "expr_select" [121-121]
  "expr_list" := rules • [121-121]
  "expr_simple" := rules "[" "expr_list" • "]" [120-121]
  "expr_list" := rules "expr_list" • "expr_select" [121-121]
  "expr_select" := rules • "expr_simple" "." "attrpath" [121-121]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [121-121]
  "expr_select" := rules • "expr_simple" "OR_KW" [121-121]
  "expr_select" := rules • "expr_simple" [121-121]
  "expr_simple" := rules • "ID" [121-121]
  "ID" := lexemes • "ID" [121-121]
122
  "ID" := lexemes "ID" • [121-122]
  "expr_simple" := rules "ID" • [121-122]
  "expr_select" := rules "expr_simple" • "." "attrpath" [121-122]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [121-122]
  "expr_select" := rules "expr_simple" • "OR_KW" [121-122]
  "expr_select" := rules "expr_simple" • [121-122]
  "expr_list" := rules "expr_list" "expr_select" • [121-122]
  "expr_simple" := rules "[" "expr_list" • "]" [120-122]
  "expr_list" := rules "expr_list" • "expr_select" [121-122]
  "expr_select" := rules • "expr_simple" "." "attrpath" [122-122]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [122-122]
  "expr_select" := rules • "expr_simple" "OR_KW" [122-122]
  "expr_select" := rules • "expr_simple" [122-122]
  "expr_simple" := rules • "ID" [122-122]
  "ID" := lexemes • "ID" [122-122]
123
  "ID" := lexemes "ID" • [122-123]
  "expr_simple" := rules "ID" • [122-123]
  "expr_select" := rules "expr_simple" • "." "attrpath" [122-123]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [122-123]
  "expr_select" := rules "expr_simple" • "OR_KW" [122-123]
  "expr_select" := rules "expr_simple" • [122-123]
  "expr_list" := rules "expr_list" "expr_select" • [121-123]
  "expr_simple" := rules "[" "expr_list" • "]" [120-123]
  "expr_list" := rules "expr_list" • "expr_select" [121-123]
  "]" := lexemes • "]" [123-123]
124
  "]" := lexemes "]" • [123-124]
  "expr_simple" := rules "[" "expr_list" "]" • [120-124]
  "expr_select" := rules "expr_simple" • "." "attrpath" [120-124]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [120-124]
  "expr_select" := rules "expr_simple" • "OR_KW" [120-124]
  "expr_select" := rules "expr_simple" • [120-124]
  "expr_app" := rules "expr_select" • [120-124]
  "expr_op" := rules "expr_app" • [120-124]
  "expr_app" := rules "expr_app" • "expr_select" [120-124]
  "expr_if" := rules "expr_op" • [120-124]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "<" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • ">" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "?" "attrpath" [120-124]
  "expr_op" := rules "expr_op" • "+" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "-" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "*" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "/" "expr_op" [120-124]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [120-124]
  "expr_function" := rules "expr_if" • [120-124]
  "expr_function" := rules "WITH" "expr" ";" "expr_function" • [117-124]
  "expr" := rules "expr_function" • [117-124]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [87-124]
  ";" := lexemes • ";" [124-124]
125
  ";" := lexemes ";" • [124-125]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [87-125]
  "expr_simple" := rules "{" "binds" • "}" [86-125]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [87-125]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [87-125]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [87-125]
  "}" := lexemes • "}" [125-125]
126
  "}" := lexemes "}" • [125-126]
  "expr_simple" := rules "{" "binds" "}" • [86-126]
  "expr_select" := rules "expr_simple" • "." "attrpath" [86-126]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [86-126]
  "expr_select" := rules "expr_simple" • "OR_KW" [86-126]
  "expr_select" := rules "expr_simple" • [86-126]
  "expr_app" := rules "expr_select" • [86-126]
  "expr_op" := rules "expr_app" • [86-126]
  "expr_app" := rules "expr_app" • "expr_select" [86-126]
  "expr_if" := rules "expr_op" • [86-126]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "<" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • ">" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "?" "attrpath" [86-126]
  "expr_op" := rules "expr_op" • "+" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "-" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "*" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "/" "expr_op" [86-126]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [86-126]
  "expr_function" := rules "expr_if" • [86-126]
  "expr_function" := rules "WITH" "expr" ";" "expr_function" • [83-126]
  "expr" := rules "expr_function" • [83-126]
  "binds" := rules "binds" "attrpath" "=" "expr" • ";" [18-126]
  ";" := lexemes • ";" [126-126]
127
  ";" := lexemes ";" • [126-127]
  "binds" := rules "binds" "attrpath" "=" "expr" ";" • [18-127]
  "expr_simple" := rules "REC" "{" "binds" • "}" [16-127]
  "binds" := rules "binds" • "attrpath" "=" "expr" ";" [18-127]
  "binds" := rules "binds" • "INHERIT" "attrs" ";" [18-127]
  "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [18-127]
  "}" := lexemes • "}" [127-127]
128
  "}" := lexemes "}" • [127-128]
  "expr_simple" := rules "REC" "{" "binds" "}" • [16-128]
  "expr_select" := rules "expr_simple" • "." "attrpath" [16-128]
  "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [16-128]
  "expr_select" := rules "expr_simple" • "OR_KW" [16-128]
  "expr_select" := rules "expr_simple" • [16-128]
  "." := lexemes • "." [128-128]
  "OR_KW" := lexemes • "OR_KW" [128-128]
  "expr_app" := rules "expr_app" "expr_select" • [13-128]
  "expr_op" := rules "expr_app" • [13-128]
  "expr_app" := rules "expr_app" • "expr_select" [13-128]
  "expr_if" := rules "expr_op" • [13-128]
  "expr_op" := rules "expr_op" • "EQ" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "NEQ" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "<" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "LEQ" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • ">" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "GEQ" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "AND" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "OR" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "IMPL" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "?" "attrpath" [13-128]
  "expr_op" := rules "expr_op" • "+" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "-" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "*" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "/" "expr_op" [13-128]
  "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [13-128]
  "expr_select" := rules • "expr_simple" "." "attrpath" [128-128]
  "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [128-128]
  "expr_select" := rules • "expr_simple" "OR_KW" [128-128]
  "expr_select" := rules • "expr_simple" [128-128]
  "expr_function" := rules "expr_if" • [13-128]
  "EQ" := lexemes • "EQ" [128-128]
  "NEQ" := lexemes • "NEQ" [128-128]
  "<" := lexemes • "<" [128-128]
  "LEQ" := lexemes • "LEQ" [128-128]
  ">" := lexemes • ">" [128-128]
  "GEQ" := lexemes • "GEQ" [128-128]
  "AND" := lexemes • "AND" [128-128]
  "OR" := lexemes • "OR" [128-128]
  "IMPL" := lexemes • "IMPL" [128-128]
  "UPDATE" := lexemes • "UPDATE" [128-128]
  "?" := lexemes • "?" [128-128]
  "+" := lexemes • "+" [128-128]
  "-" := lexemes • "-" [128-128]
  "*" := lexemes • "*" [128-128]
  "/" := lexemes • "/" [128-128]
  "CONCAT" := lexemes • "CONCAT" [128-128]
  "expr_simple" := rules • "ID" [128-128]
  "expr_simple" := rules • "INT" [128-128]
  "expr_simple" := rules • "FLOAT" [128-128]
  "expr_simple" := rules • "\"" "string_parts" "\"" [128-128]
  "expr_simple" := rules • "IND_STRING_OPEN" "ind_string_parts" "IND_STRING_CLOSE" [128-128]
  "expr_simple" := rules • "path_start" "PATH_END" [128-128]
  "expr_simple" := rules • "path_start" "string_parts_interpolated" "PATH_END" [128-128]
  "expr_simple" := rules • "SPATH" [128-128]
  "expr_simple" := rules • "URI" [128-128]
  "expr_simple" := rules • "(" "expr" ")" [128-128]
  "expr_simple" := rules • "LET" "{" "binds" "}" [128-128]
  "expr_simple" := rules • "REC" "{" "binds" "}" [128-128]
  "expr_simple" := rules • "{" "binds" "}" [128-128]
  "expr_simple" := rules • "[" "expr_list" "]" [128-128]
  "expr_function" := rules "{" "formals" "}" ":" "expr_function" • [0-128]
  "ID" := lexemes • "ID" [128-128]
  "INT" := lexemes • "INT" [128-128]
  "FLOAT" := lexemes • "FLOAT" [128-128]
  "\"" := lexemes • "\"" [128-128]
  "IND_STRING_OPEN" := lexemes • "IND_STRING_OPEN" [128-128]
  "path_start" := rules • "PATH" [128-128]
  "path_start" := rules • "HPATH" [128-128]
  "SPATH" := lexemes • "SPATH" [128-128]
  "URI" := lexemes • "URI" [128-128]
  "(" := lexemes • "(" [128-128]
  "LET" := lexemes • "LET" [128-128]
  "REC" := lexemes • "REC" [128-128]
  "{" := lexemes • "{" [128-128]
  "[" := lexemes • "[" [128-128]
  "expr" := rules "expr_function" • [0-128]
  "PATH" := lexemes • "PATH" [128-128]
  "HPATH" := lexemes • "HPATH" [128-128]
  "Γ" := rules "expr" • [0-128]