]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/commitdiff
Fix handling of uppercase AND/OR
authorOleg Broytman <phd@phdru.name>
Sun, 22 Jun 2014 00:14:55 +0000 (04:14 +0400)
committerOleg Broytman <phd@phdru.name>
Sun, 22 Jun 2014 00:14:55 +0000 (04:14 +0400)
parser/parser.py
parser/test_parser.py

index 68800acb55816336e8092c9c0ae2a6a1533d2fb7..cf463da5b63433082a0fd360b23586871232506e 100644 (file)
@@ -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 = '&'
 
index d13e6e965e5d797f19d21af187b96ede78b6c698..c6d353e5f81f2f91afe8c6b60e29425dd64685e2 100755 (executable)
@@ -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)