tag = {"#" ~ (LETTER|NUMBER|CONNECTOR_PUNCTUATION|DASH_PUNCTUATION)+} operation = _{and | or} and = {"&"} or = {"|"} unary_not = {"!"} expr = {term ~ (operation ~ term)*} term = _{unary_not* ~ tag | "(" ~ expr ~ ")"} tagsearch = _{SOI ~ expr ~ EOI} WHITESPACE = _{" " | "\t" | NEWLINE}