summaryrefslogtreecommitdiff
path: root/sqlparse
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2009-07-12 09:28:05 +0200
committerAndi Albrecht <albrecht.andi@gmail.com>2009-07-12 09:28:05 +0200
commit9114ff791c224f8edfa6f1ff00ae57e8e3296f75 (patch)
tree4702e934c4f6d9639fb704329ecdb9973ae26d12 /sqlparse
parentd47657d07ab900604547efd0a4eb288775ad43b9 (diff)
downloadsqlparse-9114ff791c224f8edfa6f1ff00ae57e8e3296f75.tar.gz
Distinguish between operators that are part of a comparsion and others.
Diffstat (limited to 'sqlparse')
-rw-r--r--sqlparse/engine/grouping.py5
-rw-r--r--sqlparse/lexer.py3
-rw-r--r--sqlparse/tokens.py1
3 files changed, 6 insertions, 3 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py
index 1a0badf..c123d3c 100644
--- a/sqlparse/engine/grouping.py
+++ b/sqlparse/engine/grouping.py
@@ -100,7 +100,7 @@ def group_comparsion(tlist):
return (token.ttype in (T.String.Symbol, T.Name, T.Number,
T.Number.Integer, T.Literal)
or isinstance(token, (Identifier,)))
- _group_left_right(tlist, T.Operator, None, Comparsion,
+ _group_left_right(tlist, T.Operator.Comparsion, None, Comparsion,
check_left=_parts_valid, check_right=_parts_valid)
@@ -111,7 +111,8 @@ def group_case(tlist):
def group_identifier(tlist):
def _consume_cycle(tl, i):
- x = itertools.cycle((lambda y: y.match(T.Punctuation, '.'),
+ x = itertools.cycle((lambda y: (y.match(T.Punctuation, '.')
+ or y.ttype is T.Operator),
lambda y: y.ttype in (T.String.Symbol,
T.Name,
T.Wildcard)))
diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py
index 1cdb98c..a416c16 100644
--- a/sqlparse/lexer.py
+++ b/sqlparse/lexer.py
@@ -171,7 +171,8 @@ class Lexer:
(r"`(``|[^`])*`", Name),
(r"´(´´|[^´])*´", Name),
(r'@[a-zA-Z_][a-zA-Z0-9_]+', Name),
- (r'[+/<>=~!@#%^&|`?^-]', Operator),
+ (r'[<>=~!]+', Operator.Comparsion),
+ (r'[+/@#%^&|`?^-]+', Operator),
(r'[0-9]+', Number.Integer),
# TODO: Backslash escapes?
(r"'(''|[^'])*'", String.Single),
diff --git a/sqlparse/tokens.py b/sqlparse/tokens.py
index c66bb9b..5d1458a 100644
--- a/sqlparse/tokens.py
+++ b/sqlparse/tokens.py
@@ -58,6 +58,7 @@ String = Literal.String
Number = Literal.Number
Punctuation = Token.Punctuation
Operator = Token.Operator
+Comparsion = Operator.Comparsion
Wildcard = Token.Wildcard
Comment = Token.Comment
Assignment = Token.Assignement