From: Oleg Broytman Date: Sun, 22 Jun 2014 00:14:55 +0000 (+0400) Subject: Fix handling of uppercase AND/OR X-Git-Tag: v0.3~2 X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git;a=commitdiff_plain;h=710a8bc3e3cfc6a7497d5e71a1e53fe07d2bd927 Fix handling of uppercase AND/OR --- diff --git a/parser/parser.py b/parser/parser.py index 68800ac..cf463da 100644 --- a/parser/parser.py +++ b/parser/parser.py @@ -6,7 +6,7 @@ literals = '()' tokens = ('NAME', 'AND_OP', 'OR_OP', 'NOT_OP', 'SP1') -t_NAME = '[a-z][a-z0-9_]*' +t_NAME = '([a-z][a-z0-9_]*)|AND|OR|NOT' t_AND_OP = '&' diff --git a/parser/test_parser.py b/parser/test_parser.py index d13e6e9..c6d353e 100755 --- a/parser/test_parser.py +++ b/parser/test_parser.py @@ -36,6 +36,9 @@ class TestParser(unittest.TestCase): self.assertEqual(parser.parse('xxx or yyy'), ('OR', ('NAME', 'xxx'), ('NAME', 'yyy')) ) + self.assertEqual(parser.parse('xxx OR yyy'), + ('OR', ('NAME', 'xxx'), ('NAME', 'yyy')) + ) def test_05_bad_expression(self): self.assertIs(parser.parse('!(xxx&yyy'), None)