# Grammar rules for tag searching; BNF. # The grammar defines expressions in the following forms: # TAG - search blog posts that contain the tag; # !TAG - search blog posts that don't contain the tag; # TAG & TAG - search blog posts that contain both tags; # TAG | TAG - search blog posts that contain one of the tags or both; # Parentheses are allowed to group expressions: # TAG & (TAG | TAG) # !(TAG | TAG) # and so on. This is the first version of the grammar and it allows # rather stupid expressions, like !!TAG or ((TAG)); in the future # it will be fixed by making the grammar stricter and more complex. NAME : '[a-z][a-z0-9_]+' AND_OP : '&' OR_OP : '|' NOT_OP : '!' expression : NAME | expression AND_OP expression | NOT_OP expression | expression OR_OP expression | '(' expression ')'