]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - parser/grammar
Allow '&&'
[phdru.name/cgi-bin/blog-ru/search-tags.git] / parser / grammar
index ade8b129eceb5b65576ee8edca20a6308fe2a09f..17d3098324c6117c5c509a4c27ece95030766876 100644 (file)
@@ -3,14 +3,14 @@
 # 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;
+#  TAG && TAG, TAG & TAG - search blog posts that contain both tags;
+#  TAG | TAG - search blog posts that contain any of the tags;
 # 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
+# and so on. This  is a simple 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.
+# it will be fixed by making the grammar more complex and stricter.
 
 NAME : '[a-z][a-z0-9_]+'
 
@@ -20,13 +20,11 @@ OR_OP : '|'
 
 NOT_OP : '!'
 
-SP0 : '[ \t]*'
-
 SP1 : '[ \t]+'
 
 expression : NAME
+           | expression AND_OP AND_OP expression
            | expression AND_OP expression
            | expression OR_OP expression
            | NOT_OP expression
            | '(' expression ')'
-           | SP0 expression SP0