0
  Γ := • expr [0-0]
  expr := • expr_function [0-0]
  expr_function := • expr_if [0-0]
  expr_if := • expr_op [0-0]
  expr_op := • NOT expr_op [0-0]
  expr_op := • expr_op EQ expr_op [0-0]
  expr_op := • expr_op NEQ expr_op [0-0]
  expr_op := • expr_op < expr_op [0-0]
  expr_op := • expr_op LEQ expr_op [0-0]
  expr_op := • expr_op > expr_op [0-0]
  expr_op := • expr_op GEQ expr_op [0-0]
  expr_op := • expr_op AND expr_op [0-0]
  expr_op := • expr_op OR expr_op [0-0]
  expr_op := • expr_op IMPL expr_op [0-0]
  expr_op := • expr_op UPDATE expr_op [0-0]
  expr_op := • expr_op ? attrpath [0-0]
  expr_op := • expr_op + expr_op [0-0]
  expr_op := • expr_op - expr_op [0-0]
  expr_op := • expr_op * expr_op [0-0]
  expr_op := • expr_op / expr_op [0-0]
  expr_op := • expr_op CONCAT expr_op [0-0]
  NOT := • "!" [0-0]
1
  NOT := "!" • [0-1]
  expr_op := NOT • expr_op [0-1]
  expr_op := • expr_op EQ expr_op [1-1]
  expr_op := • expr_op NEQ expr_op [1-1]
  expr_op := • expr_op < expr_op [1-1]
  expr_op := • expr_op LEQ expr_op [1-1]
  expr_op := • expr_op > expr_op [1-1]
  expr_op := • expr_op GEQ expr_op [1-1]
  expr_op := • expr_op AND expr_op [1-1]
  expr_op := • expr_op OR expr_op [1-1]
  expr_op := • expr_op IMPL expr_op [1-1]
  expr_op := • expr_op UPDATE expr_op [1-1]
  expr_op := • expr_op ? attrpath [1-1]
  expr_op := • expr_op + expr_op [1-1]
  expr_op := • expr_op - expr_op [1-1]
  expr_op := • expr_op * expr_op [1-1]
  expr_op := • expr_op / expr_op [1-1]
  expr_op := • expr_op CONCAT expr_op [1-1]
  expr_op := • expr_app [1-1]
  expr_app := • expr_app expr_select [1-1]
  expr_app := • expr_select [1-1]
  expr_select := • expr_simple . attrpath [1-1]
  expr_select := • expr_simple . attrpath OR_KW expr_select [1-1]
  expr_select := • expr_simple OR_KW [1-1]
  expr_select := • expr_simple [1-1]
  expr_simple := • ID [1-1]
  ID := • "ID" [1-1]
2
  ID := "ID" • [1-2]
  expr_simple := ID • [1-2]
  expr_select := expr_simple • . attrpath [1-2]
  expr_select := expr_simple • . attrpath OR_KW expr_select [1-2]
  expr_select := expr_simple • OR_KW [1-2]
  expr_select := expr_simple • [1-2]
  expr_app := expr_select • [1-2]
  expr_op := expr_app • [1-2]
  expr_app := expr_app • expr_select [1-2]
  expr_op := NOT expr_op • [0-2]
  expr_op := expr_op • EQ expr_op [1-2]
  expr_op := expr_op • NEQ expr_op [1-2]
  expr_op := expr_op • < expr_op [1-2]
  expr_op := expr_op • LEQ expr_op [1-2]
  expr_op := expr_op • > expr_op [1-2]
  expr_op := expr_op • GEQ expr_op [1-2]
  expr_op := expr_op • AND expr_op [1-2]
  expr_op := expr_op • OR expr_op [1-2]
  expr_op := expr_op • IMPL expr_op [1-2]
  expr_op := expr_op • UPDATE expr_op [1-2]
  expr_op := expr_op • ? attrpath [1-2]
  expr_op := expr_op • + expr_op [1-2]
  expr_op := expr_op • - expr_op [1-2]
  expr_op := expr_op • * expr_op [1-2]
  expr_op := expr_op • / expr_op [1-2]
  expr_op := expr_op • CONCAT expr_op [1-2]
  expr_if := expr_op • [0-2]
  expr_op := expr_op • EQ expr_op [0-2]
  expr_op := expr_op • NEQ expr_op [0-2]
  expr_op := expr_op • < expr_op [0-2]
  expr_op := expr_op • LEQ expr_op [0-2]
  expr_op := expr_op • > expr_op [0-2]
  expr_op := expr_op • GEQ expr_op [0-2]
  expr_op := expr_op • AND expr_op [0-2]
  expr_op := expr_op • OR expr_op [0-2]
  expr_op := expr_op • IMPL expr_op [0-2]
  expr_op := expr_op • UPDATE expr_op [0-2]
  expr_op := expr_op • ? attrpath [0-2]
  expr_op := expr_op • + expr_op [0-2]
  expr_op := expr_op • - expr_op [0-2]
  expr_op := expr_op • * expr_op [0-2]
  expr_op := expr_op • / expr_op [0-2]
  expr_op := expr_op • CONCAT expr_op [0-2]
  ? := • "?" [2-2]
  expr_function := expr_if • [0-2]
  expr := expr_function • [0-2]
  Γ := expr • [0-2]
3
  ? := "?" • [2-3]
  expr_op := expr_op ? • attrpath [1-3]
  expr_op := expr_op ? • attrpath [0-3]
  attrpath := • attrpath . attr [3-3]
  attrpath := • attrpath . string_attr [3-3]
  attrpath := • attr [3-3]
  attr := • ID [3-3]
  ID := • "ID" [3-3]
4
  ID := "ID" • [3-4]
  attr := ID • [3-4]
  attrpath := attr • [3-4]
  expr_op := expr_op ? attrpath • [1-4]
  expr_op := expr_op ? attrpath • [0-4]
  attrpath := attrpath • . attr [3-4]
  attrpath := attrpath • . string_attr [3-4]
  expr_op := NOT expr_op • [0-4]
  expr_op := expr_op • EQ expr_op [1-4]
  expr_op := expr_op • NEQ expr_op [1-4]
  expr_op := expr_op • < expr_op [1-4]
  expr_op := expr_op • LEQ expr_op [1-4]
  expr_op := expr_op • > expr_op [1-4]
  expr_op := expr_op • GEQ expr_op [1-4]
  expr_op := expr_op • AND expr_op [1-4]
  expr_op := expr_op • OR expr_op [1-4]
  expr_op := expr_op • IMPL expr_op [1-4]
  expr_op := expr_op • UPDATE expr_op [1-4]
  expr_op := expr_op • ? attrpath [1-4]
  expr_op := expr_op • + expr_op [1-4]
  expr_op := expr_op • - expr_op [1-4]
  expr_op := expr_op • * expr_op [1-4]
  expr_op := expr_op • / expr_op [1-4]
  expr_op := expr_op • CONCAT expr_op [1-4]
  expr_if := expr_op • [0-4]
  expr_op := expr_op • EQ expr_op [0-4]
  expr_op := expr_op • NEQ expr_op [0-4]
  expr_op := expr_op • < expr_op [0-4]
  expr_op := expr_op • LEQ expr_op [0-4]
  expr_op := expr_op • > expr_op [0-4]
  expr_op := expr_op • GEQ expr_op [0-4]
  expr_op := expr_op • AND expr_op [0-4]
  expr_op := expr_op • OR expr_op [0-4]
  expr_op := expr_op • IMPL expr_op [0-4]
  expr_op := expr_op • UPDATE expr_op [0-4]
  expr_op := expr_op • ? attrpath [0-4]
  expr_op := expr_op • + expr_op [0-4]
  expr_op := expr_op • - expr_op [0-4]
  expr_op := expr_op • * expr_op [0-4]
  expr_op := expr_op • / expr_op [0-4]
  expr_op := expr_op • CONCAT expr_op [0-4]
  OR := • "OR" [4-4]
  expr_function := expr_if • [0-4]
  expr := expr_function • [0-4]
  Γ := expr • [0-4]
5
  OR := "OR" • [4-5]
  expr_op := expr_op OR • expr_op [1-5]
  expr_op := expr_op OR • expr_op [0-5]
  expr_op := • expr_op EQ expr_op [5-5]
  expr_op := • expr_op NEQ expr_op [5-5]
  expr_op := • expr_op < expr_op [5-5]
  expr_op := • expr_op LEQ expr_op [5-5]
  expr_op := • expr_op > expr_op [5-5]
  expr_op := • expr_op GEQ expr_op [5-5]
  expr_op := • expr_op AND expr_op [5-5]
  expr_op := • expr_op OR expr_op [5-5]
  expr_op := • expr_op IMPL expr_op [5-5]
  expr_op := • expr_op UPDATE expr_op [5-5]
  expr_op := • expr_op ? attrpath [5-5]
  expr_op := • expr_op + expr_op [5-5]
  expr_op := • expr_op - expr_op [5-5]
  expr_op := • expr_op * expr_op [5-5]
  expr_op := • expr_op / expr_op [5-5]
  expr_op := • expr_op CONCAT expr_op [5-5]
  expr_op := • expr_app [5-5]
  expr_app := • expr_app expr_select [5-5]
  expr_app := • expr_select [5-5]
  expr_select := • expr_simple . attrpath [5-5]
  expr_select := • expr_simple . attrpath OR_KW expr_select [5-5]
  expr_select := • expr_simple OR_KW [5-5]
  expr_select := • expr_simple [5-5]
  expr_simple := • ID [5-5]
  ID := • "ID" [5-5]
6
  ID := "ID" • [5-6]
  expr_simple := ID • [5-6]
  expr_select := expr_simple • . attrpath [5-6]
  expr_select := expr_simple • . attrpath OR_KW expr_select [5-6]
  expr_select := expr_simple • OR_KW [5-6]
  expr_select := expr_simple • [5-6]
  . := • "." [6-6]
  expr_app := expr_select • [5-6]
  expr_op := expr_app • [5-6]
  expr_app := expr_app • expr_select [5-6]
  expr_op := expr_op OR expr_op • [1-6]
  expr_op := expr_op OR expr_op • [0-6]
  expr_op := expr_op • EQ expr_op [5-6]
  expr_op := expr_op • NEQ expr_op [5-6]
  expr_op := expr_op • < expr_op [5-6]
  expr_op := expr_op • LEQ expr_op [5-6]
  expr_op := expr_op • > expr_op [5-6]
  expr_op := expr_op • GEQ expr_op [5-6]
  expr_op := expr_op • AND expr_op [5-6]
  expr_op := expr_op • OR expr_op [5-6]
  expr_op := expr_op • IMPL expr_op [5-6]
  expr_op := expr_op • UPDATE expr_op [5-6]
  expr_op := expr_op • ? attrpath [5-6]
  expr_op := expr_op • + expr_op [5-6]
  expr_op := expr_op • - expr_op [5-6]
  expr_op := expr_op • * expr_op [5-6]
  expr_op := expr_op • / expr_op [5-6]
  expr_op := expr_op • CONCAT expr_op [5-6]
  expr_op := NOT expr_op • [0-6]
  expr_op := expr_op • EQ expr_op [1-6]
  expr_op := expr_op • NEQ expr_op [1-6]
  expr_op := expr_op • < expr_op [1-6]
  expr_op := expr_op • LEQ expr_op [1-6]
  expr_op := expr_op • > expr_op [1-6]
  expr_op := expr_op • GEQ expr_op [1-6]
  expr_op := expr_op • AND expr_op [1-6]
  expr_op := expr_op • OR expr_op [1-6]
  expr_op := expr_op • IMPL expr_op [1-6]
  expr_op := expr_op • UPDATE expr_op [1-6]
  expr_op := expr_op • ? attrpath [1-6]
  expr_op := expr_op • + expr_op [1-6]
  expr_op := expr_op • - expr_op [1-6]
  expr_op := expr_op • * expr_op [1-6]
  expr_op := expr_op • / expr_op [1-6]
  expr_op := expr_op • CONCAT expr_op [1-6]
  expr_if := expr_op • [0-6]
  expr_op := expr_op • EQ expr_op [0-6]
  expr_op := expr_op • NEQ expr_op [0-6]
  expr_op := expr_op • < expr_op [0-6]
  expr_op := expr_op • LEQ expr_op [0-6]
  expr_op := expr_op • > expr_op [0-6]
  expr_op := expr_op • GEQ expr_op [0-6]
  expr_op := expr_op • AND expr_op [0-6]
  expr_op := expr_op • OR expr_op [0-6]
  expr_op := expr_op • IMPL expr_op [0-6]
  expr_op := expr_op • UPDATE expr_op [0-6]
  expr_op := expr_op • ? attrpath [0-6]
  expr_op := expr_op • + expr_op [0-6]
  expr_op := expr_op • - expr_op [0-6]
  expr_op := expr_op • * expr_op [0-6]
  expr_op := expr_op • / expr_op [0-6]
  expr_op := expr_op • CONCAT expr_op [0-6]
  expr_function := expr_if • [0-6]
  expr := expr_function • [0-6]
  Γ := expr • [0-6]
7
  . := "." • [6-7]
  expr_select := expr_simple . • attrpath [5-7]
  expr_select := expr_simple . • attrpath OR_KW expr_select [5-7]
  attrpath := • attrpath . attr [7-7]
  attrpath := • attrpath . string_attr [7-7]
  attrpath := • attr [7-7]
  attr := • ID [7-7]
  ID := • "ID" [7-7]
8
  ID := "ID" • [7-8]
  attr := ID • [7-8]
  attrpath := attr • [7-8]
  expr_select := expr_simple . attrpath • [5-8]
  expr_select := expr_simple . attrpath • OR_KW expr_select [5-8]
  attrpath := attrpath • . attr [7-8]
  attrpath := attrpath • . string_attr [7-8]
  expr_app := expr_select • [5-8]
  expr_op := expr_app • [5-8]
  expr_app := expr_app • expr_select [5-8]
  expr_op := expr_op OR expr_op • [1-8]
  expr_op := expr_op OR expr_op • [0-8]
  expr_op := expr_op • EQ expr_op [5-8]
  expr_op := expr_op • NEQ expr_op [5-8]
  expr_op := expr_op • < expr_op [5-8]
  expr_op := expr_op • LEQ expr_op [5-8]
  expr_op := expr_op • > expr_op [5-8]
  expr_op := expr_op • GEQ expr_op [5-8]
  expr_op := expr_op • AND expr_op [5-8]
  expr_op := expr_op • OR expr_op [5-8]
  expr_op := expr_op • IMPL expr_op [5-8]
  expr_op := expr_op • UPDATE expr_op [5-8]
  expr_op := expr_op • ? attrpath [5-8]
  expr_op := expr_op • + expr_op [5-8]
  expr_op := expr_op • - expr_op [5-8]
  expr_op := expr_op • * expr_op [5-8]
  expr_op := expr_op • / expr_op [5-8]
  expr_op := expr_op • CONCAT expr_op [5-8]
  expr_select := • expr_simple . attrpath [8-8]
  expr_select := • expr_simple . attrpath OR_KW expr_select [8-8]
  expr_select := • expr_simple OR_KW [8-8]
  expr_select := • expr_simple [8-8]
  expr_op := NOT expr_op • [0-8]
  expr_op := expr_op • EQ expr_op [1-8]
  expr_op := expr_op • NEQ expr_op [1-8]
  expr_op := expr_op • < expr_op [1-8]
  expr_op := expr_op • LEQ expr_op [1-8]
  expr_op := expr_op • > expr_op [1-8]
  expr_op := expr_op • GEQ expr_op [1-8]
  expr_op := expr_op • AND expr_op [1-8]
  expr_op := expr_op • OR expr_op [1-8]
  expr_op := expr_op • IMPL expr_op [1-8]
  expr_op := expr_op • UPDATE expr_op [1-8]
  expr_op := expr_op • ? attrpath [1-8]
  expr_op := expr_op • + expr_op [1-8]
  expr_op := expr_op • - expr_op [1-8]
  expr_op := expr_op • * expr_op [1-8]
  expr_op := expr_op • / expr_op [1-8]
  expr_op := expr_op • CONCAT expr_op [1-8]
  expr_if := expr_op • [0-8]
  expr_op := expr_op • EQ expr_op [0-8]
  expr_op := expr_op • NEQ expr_op [0-8]
  expr_op := expr_op • < expr_op [0-8]
  expr_op := expr_op • LEQ expr_op [0-8]
  expr_op := expr_op • > expr_op [0-8]
  expr_op := expr_op • GEQ expr_op [0-8]
  expr_op := expr_op • AND expr_op [0-8]
  expr_op := expr_op • OR expr_op [0-8]
  expr_op := expr_op • IMPL expr_op [0-8]
  expr_op := expr_op • UPDATE expr_op [0-8]
  expr_op := expr_op • ? attrpath [0-8]
  expr_op := expr_op • + expr_op [0-8]
  expr_op := expr_op • - expr_op [0-8]
  expr_op := expr_op • * expr_op [0-8]
  expr_op := expr_op • / expr_op [0-8]
  expr_op := expr_op • CONCAT expr_op [0-8]
  expr_simple := • ID [8-8]
  expr_function := expr_if • [0-8]
  ID := • "ID" [8-8]
  expr := expr_function • [0-8]
  Γ := expr • [0-8]
9
  ID := "ID" • [8-9]
  expr_simple := ID • [8-9]
  expr_select := expr_simple • . attrpath [8-9]
  expr_select := expr_simple • . attrpath OR_KW expr_select [8-9]
  expr_select := expr_simple • OR_KW [8-9]
  expr_select := expr_simple • [8-9]
  expr_app := expr_app expr_select • [5-9]
  expr_op := expr_app • [5-9]
  expr_app := expr_app • expr_select [5-9]
  expr_op := expr_op OR expr_op • [1-9]
  expr_op := expr_op OR expr_op • [0-9]
  expr_op := expr_op • EQ expr_op [5-9]
  expr_op := expr_op • NEQ expr_op [5-9]
  expr_op := expr_op • < expr_op [5-9]
  expr_op := expr_op • LEQ expr_op [5-9]
  expr_op := expr_op • > expr_op [5-9]
  expr_op := expr_op • GEQ expr_op [5-9]
  expr_op := expr_op • AND expr_op [5-9]
  expr_op := expr_op • OR expr_op [5-9]
  expr_op := expr_op • IMPL expr_op [5-9]
  expr_op := expr_op • UPDATE expr_op [5-9]
  expr_op := expr_op • ? attrpath [5-9]
  expr_op := expr_op • + expr_op [5-9]
  expr_op := expr_op • - expr_op [5-9]
  expr_op := expr_op • * expr_op [5-9]
  expr_op := expr_op • / expr_op [5-9]
  expr_op := expr_op • CONCAT expr_op [5-9]
  expr_select := • expr_simple . attrpath [9-9]
  expr_select := • expr_simple . attrpath OR_KW expr_select [9-9]
  expr_select := • expr_simple OR_KW [9-9]
  expr_select := • expr_simple [9-9]
  expr_op := NOT expr_op • [0-9]
  expr_op := expr_op • EQ expr_op [1-9]
  expr_op := expr_op • NEQ expr_op [1-9]
  expr_op := expr_op • < expr_op [1-9]
  expr_op := expr_op • LEQ expr_op [1-9]
  expr_op := expr_op • > expr_op [1-9]
  expr_op := expr_op • GEQ expr_op [1-9]
  expr_op := expr_op • AND expr_op [1-9]
  expr_op := expr_op • OR expr_op [1-9]
  expr_op := expr_op • IMPL expr_op [1-9]
  expr_op := expr_op • UPDATE expr_op [1-9]
  expr_op := expr_op • ? attrpath [1-9]
  expr_op := expr_op • + expr_op [1-9]
  expr_op := expr_op • - expr_op [1-9]
  expr_op := expr_op • * expr_op [1-9]
  expr_op := expr_op • / expr_op [1-9]
  expr_op := expr_op • CONCAT expr_op [1-9]
  expr_if := expr_op • [0-9]
  expr_op := expr_op • EQ expr_op [0-9]
  expr_op := expr_op • NEQ expr_op [0-9]
  expr_op := expr_op • < expr_op [0-9]
  expr_op := expr_op • LEQ expr_op [0-9]
  expr_op := expr_op • > expr_op [0-9]
  expr_op := expr_op • GEQ expr_op [0-9]
  expr_op := expr_op • AND expr_op [0-9]
  expr_op := expr_op • OR expr_op [0-9]
  expr_op := expr_op • IMPL expr_op [0-9]
  expr_op := expr_op • UPDATE expr_op [0-9]
  expr_op := expr_op • ? attrpath [0-9]
  expr_op := expr_op • + expr_op [0-9]
  expr_op := expr_op • - expr_op [0-9]
  expr_op := expr_op • * expr_op [0-9]
  expr_op := expr_op • / expr_op [0-9]
  expr_op := expr_op • CONCAT expr_op [0-9]
  expr_simple := • ID [9-9]
  expr_function := expr_if • [0-9]
  ID := • "ID" [9-9]
  expr := expr_function • [0-9]
  Γ := expr • [0-9]
10
  ID := "ID" • [9-10]
  expr_simple := ID • [9-10]
  expr_select := expr_simple • . attrpath [9-10]
  expr_select := expr_simple • . attrpath OR_KW expr_select [9-10]
  expr_select := expr_simple • OR_KW [9-10]
  expr_select := expr_simple • [9-10]
  . := • "." [10-10]
  expr_app := expr_app expr_select • [5-10]
  expr_op := expr_app • [5-10]
  expr_app := expr_app • expr_select [5-10]
  expr_op := expr_op OR expr_op • [1-10]
  expr_op := expr_op OR expr_op • [0-10]
  expr_op := expr_op • EQ expr_op [5-10]
  expr_op := expr_op • NEQ expr_op [5-10]
  expr_op := expr_op • < expr_op [5-10]
  expr_op := expr_op • LEQ expr_op [5-10]
  expr_op := expr_op • > expr_op [5-10]
  expr_op := expr_op • GEQ expr_op [5-10]
  expr_op := expr_op • AND expr_op [5-10]
  expr_op := expr_op • OR expr_op [5-10]
  expr_op := expr_op • IMPL expr_op [5-10]
  expr_op := expr_op • UPDATE expr_op [5-10]
  expr_op := expr_op • ? attrpath [5-10]
  expr_op := expr_op • + expr_op [5-10]
  expr_op := expr_op • - expr_op [5-10]
  expr_op := expr_op • * expr_op [5-10]
  expr_op := expr_op • / expr_op [5-10]
  expr_op := expr_op • CONCAT expr_op [5-10]
  expr_op := NOT expr_op • [0-10]
  expr_op := expr_op • EQ expr_op [1-10]
  expr_op := expr_op • NEQ expr_op [1-10]
  expr_op := expr_op • < expr_op [1-10]
  expr_op := expr_op • LEQ expr_op [1-10]
  expr_op := expr_op • > expr_op [1-10]
  expr_op := expr_op • GEQ expr_op [1-10]
  expr_op := expr_op • AND expr_op [1-10]
  expr_op := expr_op • OR expr_op [1-10]
  expr_op := expr_op • IMPL expr_op [1-10]
  expr_op := expr_op • UPDATE expr_op [1-10]
  expr_op := expr_op • ? attrpath [1-10]
  expr_op := expr_op • + expr_op [1-10]
  expr_op := expr_op • - expr_op [1-10]
  expr_op := expr_op • * expr_op [1-10]
  expr_op := expr_op • / expr_op [1-10]
  expr_op := expr_op • CONCAT expr_op [1-10]
  expr_if := expr_op • [0-10]
  expr_op := expr_op • EQ expr_op [0-10]
  expr_op := expr_op • NEQ expr_op [0-10]
  expr_op := expr_op • < expr_op [0-10]
  expr_op := expr_op • LEQ expr_op [0-10]
  expr_op := expr_op • > expr_op [0-10]
  expr_op := expr_op • GEQ expr_op [0-10]
  expr_op := expr_op • AND expr_op [0-10]
  expr_op := expr_op • OR expr_op [0-10]
  expr_op := expr_op • IMPL expr_op [0-10]
  expr_op := expr_op • UPDATE expr_op [0-10]
  expr_op := expr_op • ? attrpath [0-10]
  expr_op := expr_op • + expr_op [0-10]
  expr_op := expr_op • - expr_op [0-10]
  expr_op := expr_op • * expr_op [0-10]
  expr_op := expr_op • / expr_op [0-10]
  expr_op := expr_op • CONCAT expr_op [0-10]
  expr_function := expr_if • [0-10]
  expr := expr_function • [0-10]
  Γ := expr • [0-10]
11
  . := "." • [10-11]
  expr_select := expr_simple . • attrpath [9-11]
  expr_select := expr_simple . • attrpath OR_KW expr_select [9-11]
  attrpath := • attrpath . attr [11-11]
  attrpath := • attrpath . string_attr [11-11]
  attrpath := • attr [11-11]
  attr := • ID [11-11]
  ID := • "ID" [11-11]
12
  ID := "ID" • [11-12]
  attr := ID • [11-12]
  attrpath := attr • [11-12]
  expr_select := expr_simple . attrpath • [9-12]
  expr_select := expr_simple . attrpath • OR_KW expr_select [9-12]
  attrpath := attrpath • . attr [11-12]
  attrpath := attrpath • . string_attr [11-12]
  expr_app := expr_app expr_select • [5-12]
  expr_op := expr_app • [5-12]
  expr_app := expr_app • expr_select [5-12]
  expr_op := expr_op OR expr_op • [1-12]
  expr_op := expr_op OR expr_op • [0-12]
  expr_op := expr_op • EQ expr_op [5-12]
  expr_op := expr_op • NEQ expr_op [5-12]
  expr_op := expr_op • < expr_op [5-12]
  expr_op := expr_op • LEQ expr_op [5-12]
  expr_op := expr_op • > expr_op [5-12]
  expr_op := expr_op • GEQ expr_op [5-12]
  expr_op := expr_op • AND expr_op [5-12]
  expr_op := expr_op • OR expr_op [5-12]
  expr_op := expr_op • IMPL expr_op [5-12]
  expr_op := expr_op • UPDATE expr_op [5-12]
  expr_op := expr_op • ? attrpath [5-12]
  expr_op := expr_op • + expr_op [5-12]
  expr_op := expr_op • - expr_op [5-12]
  expr_op := expr_op • * expr_op [5-12]
  expr_op := expr_op • / expr_op [5-12]
  expr_op := expr_op • CONCAT expr_op [5-12]
  expr_op := NOT expr_op • [0-12]
  expr_op := expr_op • EQ expr_op [1-12]
  expr_op := expr_op • NEQ expr_op [1-12]
  expr_op := expr_op • < expr_op [1-12]
  expr_op := expr_op • LEQ expr_op [1-12]
  expr_op := expr_op • > expr_op [1-12]
  expr_op := expr_op • GEQ expr_op [1-12]
  expr_op := expr_op • AND expr_op [1-12]
  expr_op := expr_op • OR expr_op [1-12]
  expr_op := expr_op • IMPL expr_op [1-12]
  expr_op := expr_op • UPDATE expr_op [1-12]
  expr_op := expr_op • ? attrpath [1-12]
  expr_op := expr_op • + expr_op [1-12]
  expr_op := expr_op • - expr_op [1-12]
  expr_op := expr_op • * expr_op [1-12]
  expr_op := expr_op • / expr_op [1-12]
  expr_op := expr_op • CONCAT expr_op [1-12]
  expr_if := expr_op • [0-12]
  expr_op := expr_op • EQ expr_op [0-12]
  expr_op := expr_op • NEQ expr_op [0-12]
  expr_op := expr_op • < expr_op [0-12]
  expr_op := expr_op • LEQ expr_op [0-12]
  expr_op := expr_op • > expr_op [0-12]
  expr_op := expr_op • GEQ expr_op [0-12]
  expr_op := expr_op • AND expr_op [0-12]
  expr_op := expr_op • OR expr_op [0-12]
  expr_op := expr_op • IMPL expr_op [0-12]
  expr_op := expr_op • UPDATE expr_op [0-12]
  expr_op := expr_op • ? attrpath [0-12]
  expr_op := expr_op • + expr_op [0-12]
  expr_op := expr_op • - expr_op [0-12]
  expr_op := expr_op • * expr_op [0-12]
  expr_op := expr_op • / expr_op [0-12]
  expr_op := expr_op • CONCAT expr_op [0-12]
  EQ := • "EQ" [12-12]
  expr_function := expr_if • [0-12]
  expr := expr_function • [0-12]
  Γ := expr • [0-12]
13
  EQ := "EQ" • [12-13]
  expr_op := expr_op EQ • expr_op [5-13]
  expr_op := expr_op EQ • expr_op [1-13]
  expr_op := expr_op EQ • expr_op [0-13]
  expr_op := • expr_op EQ expr_op [13-13]
  expr_op := • expr_op NEQ expr_op [13-13]
  expr_op := • expr_op < expr_op [13-13]
  expr_op := • expr_op LEQ expr_op [13-13]
  expr_op := • expr_op > expr_op [13-13]
  expr_op := • expr_op GEQ expr_op [13-13]
  expr_op := • expr_op AND expr_op [13-13]
  expr_op := • expr_op OR expr_op [13-13]
  expr_op := • expr_op IMPL expr_op [13-13]
  expr_op := • expr_op UPDATE expr_op [13-13]
  expr_op := • expr_op ? attrpath [13-13]
  expr_op := • expr_op + expr_op [13-13]
  expr_op := • expr_op - expr_op [13-13]
  expr_op := • expr_op * expr_op [13-13]
  expr_op := • expr_op / expr_op [13-13]
  expr_op := • expr_op CONCAT expr_op [13-13]
  expr_op := • expr_app [13-13]
  expr_app := • expr_app expr_select [13-13]
  expr_app := • expr_select [13-13]
  expr_select := • expr_simple . attrpath [13-13]
  expr_select := • expr_simple . attrpath OR_KW expr_select [13-13]
  expr_select := • expr_simple OR_KW [13-13]
  expr_select := • expr_simple [13-13]
  expr_simple := • INT [13-13]
  INT := • "INT" [13-13]
14
  INT := "INT" • [13-14]
  expr_simple := INT • [13-14]
  expr_select := expr_simple • . attrpath [13-14]
  expr_select := expr_simple • . attrpath OR_KW expr_select [13-14]
  expr_select := expr_simple • OR_KW [13-14]
  expr_select := expr_simple • [13-14]
  . := • "." [14-14]
  OR_KW := • "OR_KW" [14-14]
  expr_app := expr_select • [13-14]
  expr_op := expr_app • [13-14]
  expr_app := expr_app • expr_select [13-14]
  expr_op := expr_op EQ expr_op • [5-14]
  expr_op := expr_op EQ expr_op • [1-14]
  expr_op := expr_op EQ expr_op • [0-14]
  expr_op := expr_op • EQ expr_op [13-14]
  expr_op := expr_op • NEQ expr_op [13-14]
  expr_op := expr_op • < expr_op [13-14]
  expr_op := expr_op • LEQ expr_op [13-14]
  expr_op := expr_op • > expr_op [13-14]
  expr_op := expr_op • GEQ expr_op [13-14]
  expr_op := expr_op • AND expr_op [13-14]
  expr_op := expr_op • OR expr_op [13-14]
  expr_op := expr_op • IMPL expr_op [13-14]
  expr_op := expr_op • UPDATE expr_op [13-14]
  expr_op := expr_op • ? attrpath [13-14]
  expr_op := expr_op • + expr_op [13-14]
  expr_op := expr_op • - expr_op [13-14]
  expr_op := expr_op • * expr_op [13-14]
  expr_op := expr_op • / expr_op [13-14]
  expr_op := expr_op • CONCAT expr_op [13-14]
  expr_select := • expr_simple . attrpath [14-14]
  expr_select := • expr_simple . attrpath OR_KW expr_select [14-14]
  expr_select := • expr_simple OR_KW [14-14]
  expr_select := • expr_simple [14-14]
  expr_op := expr_op OR expr_op • [1-14]
  expr_op := expr_op OR expr_op • [0-14]
  expr_op := expr_op • EQ expr_op [5-14]
  expr_op := expr_op • NEQ expr_op [5-14]
  expr_op := expr_op • < expr_op [5-14]
  expr_op := expr_op • LEQ expr_op [5-14]
  expr_op := expr_op • > expr_op [5-14]
  expr_op := expr_op • GEQ expr_op [5-14]
  expr_op := expr_op • AND expr_op [5-14]
  expr_op := expr_op • OR expr_op [5-14]
  expr_op := expr_op • IMPL expr_op [5-14]
  expr_op := expr_op • UPDATE expr_op [5-14]
  expr_op := expr_op • ? attrpath [5-14]
  expr_op := expr_op • + expr_op [5-14]
  expr_op := expr_op • - expr_op [5-14]
  expr_op := expr_op • * expr_op [5-14]
  expr_op := expr_op • / expr_op [5-14]
  expr_op := expr_op • CONCAT expr_op [5-14]
  expr_op := NOT expr_op • [0-14]
  expr_op := expr_op • EQ expr_op [1-14]
  expr_op := expr_op • NEQ expr_op [1-14]
  expr_op := expr_op • < expr_op [1-14]
  expr_op := expr_op • LEQ expr_op [1-14]
  expr_op := expr_op • > expr_op [1-14]
  expr_op := expr_op • GEQ expr_op [1-14]
  expr_op := expr_op • AND expr_op [1-14]
  expr_op := expr_op • OR expr_op [1-14]
  expr_op := expr_op • IMPL expr_op [1-14]
  expr_op := expr_op • UPDATE expr_op [1-14]
  expr_op := expr_op • ? attrpath [1-14]
  expr_op := expr_op • + expr_op [1-14]
  expr_op := expr_op • - expr_op [1-14]
  expr_op := expr_op • * expr_op [1-14]
  expr_op := expr_op • / expr_op [1-14]
  expr_op := expr_op • CONCAT expr_op [1-14]
  expr_if := expr_op • [0-14]
  expr_op := expr_op • EQ expr_op [0-14]
  expr_op := expr_op • NEQ expr_op [0-14]
  expr_op := expr_op • < expr_op [0-14]
  expr_op := expr_op • LEQ expr_op [0-14]
  expr_op := expr_op • > expr_op [0-14]
  expr_op := expr_op • GEQ expr_op [0-14]
  expr_op := expr_op • AND expr_op [0-14]
  expr_op := expr_op • OR expr_op [0-14]
  expr_op := expr_op • IMPL expr_op [0-14]
  expr_op := expr_op • UPDATE expr_op [0-14]
  expr_op := expr_op • ? attrpath [0-14]
  expr_op := expr_op • + expr_op [0-14]
  expr_op := expr_op • - expr_op [0-14]
  expr_op := expr_op • * expr_op [0-14]
  expr_op := expr_op • / expr_op [0-14]
  expr_op := expr_op • CONCAT expr_op [0-14]
  EQ := • "EQ" [14-14]
  NEQ := • "NEQ" [14-14]
  < := • "<" [14-14]
  LEQ := • "LEQ" [14-14]
  > := • ">" [14-14]
  GEQ := • "GEQ" [14-14]
  AND := • "AND" [14-14]
  OR := • "OR" [14-14]
  IMPL := • "IMPL" [14-14]
  UPDATE := • "UPDATE" [14-14]
  ? := • "?" [14-14]
  + := • "+" [14-14]
  - := • "-" [14-14]
  * := • "*" [14-14]
  / := • "/" [14-14]
  CONCAT := • "CONCAT" [14-14]
  expr_simple := • ID [14-14]
  expr_simple := • INT [14-14]
  expr_simple := • FLOAT [14-14]
  expr_simple := • " string_parts " [14-14]
  expr_simple := • IND_STRING_OPEN ind_string_parts IND_STRING_CLOSE [14-14]
  expr_simple := • path_start PATH_END [14-14]
  expr_simple := • path_start string_parts_interpolated PATH_END [14-14]
  expr_simple := • SPATH [14-14]
  expr_simple := • URI [14-14]
  expr_simple := • ( expr ) [14-14]
  expr_simple := • LET { binds } [14-14]
  expr_simple := • REC { binds } [14-14]
  expr_simple := • { binds } [14-14]
  expr_simple := • [ expr_list ] [14-14]
  expr_function := expr_if • [0-14]
  ID := • "ID" [14-14]
  INT := • "INT" [14-14]
  FLOAT := • "FLOAT" [14-14]
  " := • "\"" [14-14]
  IND_STRING_OPEN := • "IND_STRING_OPEN" [14-14]
  path_start := • PATH [14-14]
  path_start := • HPATH [14-14]
  SPATH := • "SPATH" [14-14]
  URI := • "URI" [14-14]
  ( := • "(" [14-14]
  LET := • "LET" [14-14]
  REC := • "REC" [14-14]
  { := • "{" [14-14]
  [ := • "[" [14-14]
  expr := expr_function • [0-14]
  PATH := • "PATH" [14-14]
  HPATH := • "HPATH" [14-14]
  Γ := expr • [0-14]