X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git;a=blobdiff_plain;f=parser%2Fgrammar;h=33326116c917ec5300f0df9b6ebbf95e44dfa65a;hp=7c34096e3bdb10aaee6557185dcca6c60fb6d893;hb=02dbb2a7f4d0804c56122cc7ca681224fe659abc;hpb=fc9a4ef6e9dcde7e48ca54609ba7c9e80a1f20a7 diff --git a/parser/grammar b/parser/grammar index 7c34096..3332611 100644 --- a/parser/grammar +++ b/parser/grammar @@ -8,7 +8,7 @@ # Parentheses are allowed to group expressions; for example: # TAG & (TAG | TAG) # !(TAG | TAG) -# Allowed operators: conjunction - & && +# Allowed operators: conjunction - & && AND and # disjunction - | || # negation - ! # This is a simple version of the grammar and it allows @@ -28,10 +28,26 @@ SP1 : '[ \t]+' expression : NAME | expression SP0 AND_OP AND_OP SP0 expression | expression SP0 AND_OP SP0 expression + | l_expression and_word r_expression | NOT_OP SP0 expression | expression SP0 OR_OP OR_OP SP0 expression | expression SP0 OR_OP SP0 expression - | '(' SP0 expression SP0 ')' + | expression_parens + +l_expression : expression_parens + | expression_sp + +r_expression : expression_parens + | sp_expression + +expression_parens : '(' SP0 expression SP0 ')' + +sp_expression : SP1 expression + +expression_sp : expression SP1 + +and_word : 'A' 'N' 'D' + | 'a' 'n' 'd' SP0 : SP1 | empty