Grid Quarter Selection

It is necessary to select a quarter (or subregion) resulting from the Grid rule. Instead of a single label, a list of expressions paired with labels are now allowed – when expression matches a given quarter – label is selected. At the end there should be a label without expression to guarantee a label for for a quarter that has not been matched by the other expressions.

For instance instead of:

Park ->(…){ ParkQuarter }

It is possible to have:

Park ->(…){ ParkQuarter | 0, 1, Quarter2 | odd, 1, Quarter3 }

In other words we replace label with label_list:

label_list = label_expr ( ‘|’ label_expr )*
label_expr = label | x_idx_expr ‘,’ y_idx_expr ‘,’ label
x_idx_expr, y_idx_expr =  [‘!’] idx_expr
idx_expr = NUM | ‘odd’ | ‘border’

Where index expression is either a number or a constant label which corresponds to multiple indexing of being either odd, on the boundary. We could also have a negation of an expression. However negation applies to individual axes, for instance “!x, !y, Label” negates both x and y.