role = @{ (ASCII_ALPHA | "_") ~ (ASCII_ALPHANUMERIC | "_" )* }
negate = @{"!"}
and_clause = { (( negate? ~ role) | ( negate? ~ "(" ~ or_clause ~ ")")) ~ ("," ~ (( negate? ~ role) | (negate? ~ "(" ~ or_clause ~ ")")))* }
or_clause = { and_clause ~ (";" ~ and_clause)*}
query = { SOI ~ ( or_clause)? ~ EOI }
WHITESPACE = _{ " " }