From 710a8bc3e3cfc6a7497d5e71a1e53fe07d2bd927 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 22 Jun 2014 04:14:55 +0400 Subject: [PATCH] Fix handling of uppercase AND/OR --- parser/parser.py | 2 +- parser/test_parser.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) 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) -- 2.39.2