(* https://bottlecaps.de/rr/ui *)

Definition
      ::= PropertyName ( '=' Value )? ( ',' PropertyName ( '=' Value )? )*
Query ::= PropertyQuery ( ',' PropertyQuery )*
PropertyQuery ::= '-' PropertyName
        | '?'? ( PropertyName (( '=' | '!=' ) Value)?)
Value    ::= NumberLiteral
        | StringLiteral
StringLiteral ::= QuotedString | UnquotedString
QuotedString     ::= '"' [^"]* '"'
        | "'" [^']* "'"
UnquotedString ::= [^{space},]+
NumberLiteral
     ::= '0' ( [0-7]* | 'x' [0-9A-Fa-f]+ )
        | '-'? [1-9] [0-9]+
PropertyName
         ::= [A-Z] [A-Z0-9_]* ( '.' [A-Z] [A-Z0-9_]* )*
