docs: def _create_update_expression():
      """ Create the grammar for an update expression """
      ine = (
          Word("if_not_exists")
          + Suppress("(")
          + var
          + Suppress(",")
          + var_val
          + Suppress(")")
      )
      list_append = (
          Word("list_append")
          + Suppress("(")
          + var_val
          + Suppress(",")
          + var_val
          + Suppress(")")
      )
      fxn = Group(ine | list_append).setResultsName("set_function")
      # value has to come before var to prevent parsing TRUE/FALSE as variables
      path = value | fxn | var
      set_val = (path + oneOf("+ -") + path) | path
      set_cmd = Group(var + Suppress("=") + set_val)
      set_expr = (Suppress(upkey("set")) + delimitedList(set_cmd)).setResultsName(
          "set_expr"
      )
      add_expr = (
          Suppress(upkey("add")) + delimitedList(Group(var + value))
      ).setResultsName("add_expr")
      delete_expr = (
          Suppress(upkey("delete")) + delimitedList(Group(var + value))
      ).setResultsName("delete_expr")
      remove_expr = (Suppress(upkey("remove")) + delimitedList(var)).setResultsName(
          "remove_expr"
      )
      return OneOrMore(set_expr | add_expr | delete_expr | remove_expr).setResultsName(
          "update"
      )