X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=parser%2Fbuild_ast.py;h=42bf9207b14e67314d9f0f31f1e94dd6e420caa8;hb=85b18364aea83224a966dc129c9e0b9afc832a9a;hp=de87f84b3a08c8784da9a9f4c31d272fe9cd6644;hpb=3eadd8423e41b70e89854bd63e0e9875e259978c;p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git diff --git a/parser/build_ast.py b/parser/build_ast.py index de87f84..42bf920 100644 --- a/parser/build_ast.py +++ b/parser/build_ast.py @@ -2,20 +2,16 @@ from parser import TagsSemantics as _TagsSemantics class TagsSemantics(_TagsSemantics): - def expression(self, ast): - if isinstance(ast, str): # name - return ast - if isinstance(ast, unicode): # name - return str(ast) - if isinstance(ast, list): - ast = tuple(ast) - elif not isinstance(ast, tuple): - raise TypeError("Expected a list, got %r %s" % (type(ast), ast)) - if len(ast) == 3: - return (ast[1], ast[0], ast[2]) - return ast - - def expression_parens(self, ast): + def or_expression(self, ast): + return ('OR', ast[0], ast[2]) + + def and_expression(self, ast): + return ('AND', ast[0], ast[2]) + + def not_expression(self, ast): + return ('NOT', ast[1]) + + def parens_expression(self, ast): return ('PARENS', ast[1]) def name(self, ast):