From: Oleg Broytman Date: Mon, 11 Jul 2016 18:16:57 +0000 (+0300) Subject: Fix negative lookahead in grammar syntax X-Git-Tag: v0.5~6 X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git;a=commitdiff_plain;h=4102600cf242f72781c8fee326802e9bb2267c25 Fix negative lookahead in grammar syntax --- diff --git a/parser/grammar.ebnf b/parser/grammar.ebnf index 4a702ed..ce21b64 100644 --- a/parser/grammar.ebnf +++ b/parser/grammar.ebnf @@ -19,7 +19,7 @@ start = expression $ ; -expression = expression1 !&or_op | or_expression ; +expression = expression1 !or_op | or_expression ; or_expression = expression1 or_op expression ; @@ -29,9 +29,9 @@ not_expression = not_op expression3 ; parens_expression = '(' expression ')' ; -expression1 = expression2 !&and_op | and_expression ; +expression1 = expression2 !and_op | and_expression ; -expression2 = !¬_op expression3 | not_expression ; +expression2 = !not_op expression3 | not_expression ; expression3 = parens_expression | name ; diff --git a/parser/parser.py b/parser/parser.py index 4984f18..a1dd034 100755 --- a/parser/parser.py +++ b/parser/parser.py @@ -17,7 +17,7 @@ from grako.parsing import graken, Parser from grako.util import re, RE_FLAGS, generic_main # noqa -__version__ = (2016, 7, 10, 22, 31, 57, 6) +__version__ = (2016, 7, 11, 18, 15, 20, 0) __all__ = [ 'TagsParser', @@ -62,8 +62,7 @@ class TagsParser(Parser): with self._option(): self._expression1_() with self._ifnot(): - with self._if(): - self._or_op_() + self._or_op_() with self._option(): self._or_expression_() self._error('no available options') @@ -97,8 +96,7 @@ class TagsParser(Parser): with self._option(): self._expression2_() with self._ifnot(): - with self._if(): - self._and_op_() + self._and_op_() with self._option(): self._and_expression_() self._error('no available options') @@ -108,8 +106,7 @@ class TagsParser(Parser): with self._choice(): with self._option(): with self._ifnot(): - with self._if(): - self._not_op_() + self._not_op_() self._expression3_() with self._option(): self._not_expression_()