From 47606d9636fd6076cee67d444207aa66d30abfbe Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Fri, 6 Jun 2014 19:47:56 +0400 Subject: [PATCH] Ignore spaces --- parser/grammar | 7 ++++++- parser/parser.py | 2 ++ parser/test_parser.py | 11 ++++++----- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/parser/grammar b/parser/grammar index 7ded1c2..ade8b12 100644 --- a/parser/grammar +++ b/parser/grammar @@ -20,8 +20,13 @@ OR_OP : '|' NOT_OP : '!' +SP0 : '[ \t]*' + +SP1 : '[ \t]+' + expression : NAME | expression AND_OP expression - | NOT_OP expression | expression OR_OP expression + | NOT_OP expression | '(' expression ')' + | SP0 expression SP0 diff --git a/parser/parser.py b/parser/parser.py index 7caa2e2..2fcf716 100644 --- a/parser/parser.py +++ b/parser/parser.py @@ -14,6 +14,8 @@ t_OR_OP = r'\|' t_NOT_OP = '!' +t_ignore = '[ \t]+' + def t_error(t): """Avoid warnings on stderr""" diff --git a/parser/test_parser.py b/parser/test_parser.py index 3e54f5c..804505f 100755 --- a/parser/test_parser.py +++ b/parser/test_parser.py @@ -18,14 +18,15 @@ class TestParser(unittest.TestCase): self.assertEqual(parser.parse('!(xxx&yyy)'), ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy')))) ) - - def test_05_bad_expression(self): - self.assertIs(parser.parse('!(xxx&yyy'), None) - - def test_06_expression2(self): + self.assertEqual(parser.parse('!(xxx & yyy)'), + ('NOT', ('PARENS', ('AND', ('NAME', 'xxx'), ('NAME', 'yyy')))) + ) self.assertEqual(parser.parse('!xxx&yyy&zzz|ooo'), ('OR', ('AND', ('AND', ('NOT', ('NAME', 'xxx')), ('NAME', 'yyy')), ('NAME', 'zzz')), ('NAME', 'ooo')) ) + def test_05_bad_expression(self): + self.assertIs(parser.parse('!(xxx&yyy'), None) + if __name__ == "__main__": unittest.main() -- 2.39.2