diff options
| author | Andi Albrecht <albrecht.andi@gmail.com> | 2009-07-12 09:28:05 +0200 |
|---|---|---|
| committer | Andi Albrecht <albrecht.andi@gmail.com> | 2009-07-12 09:28:05 +0200 |
| commit | 9114ff791c224f8edfa6f1ff00ae57e8e3296f75 (patch) | |
| tree | 4702e934c4f6d9639fb704329ecdb9973ae26d12 /sqlparse | |
| parent | d47657d07ab900604547efd0a4eb288775ad43b9 (diff) | |
| download | sqlparse-9114ff791c224f8edfa6f1ff00ae57e8e3296f75.tar.gz | |
Distinguish between operators that are part of a comparsion and others.
Diffstat (limited to 'sqlparse')
| -rw-r--r-- | sqlparse/engine/grouping.py | 5 | ||||
| -rw-r--r-- | sqlparse/lexer.py | 3 | ||||
| -rw-r--r-- | sqlparse/tokens.py | 1 |
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 |
