diff options
Diffstat (limited to 'sqlparse')
| -rw-r--r-- | sqlparse/engine/grouping.py | 14 | ||||
| -rw-r--r-- | sqlparse/keywords.py | 3 | ||||
| -rw-r--r-- | sqlparse/sql.py | 6 |
3 files changed, 21 insertions, 2 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index 47e77ac..29f7a37 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -99,6 +99,16 @@ def group_for(tlist): sql.For, True) +def group_foreach(tlist): + _group_matching(tlist, T.Keyword, 'FOREACH', T.Keyword, 'END LOOP', + sql.For, True) + + +def group_begin(tlist): + _group_matching(tlist, T.Keyword, 'BEGIN', T.Keyword, 'END', + sql.Begin, True) + + def group_as(tlist): def _right_valid(token): @@ -369,5 +379,7 @@ def group(tlist): group_comparison, group_identifier_list, group_if, - group_for]: + group_for, + group_foreach, + group_begin]: func(tlist) diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index f1d76d0..1675d81 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -29,7 +29,7 @@ KEYWORDS = { 'BACKWARD': tokens.Keyword, 'BEFORE': tokens.Keyword, - 'BEGIN': tokens.Keyword.DML, + 'BEGIN': tokens.Keyword, 'BETWEEN': tokens.Keyword, 'BITVAR': tokens.Keyword, 'BIT_LENGTH': tokens.Keyword, @@ -163,6 +163,7 @@ KEYWORDS = { 'FINAL': tokens.Keyword, 'FIRST': tokens.Keyword, 'FORCE': tokens.Keyword, + 'FOREACH': tokens.Keyword, 'FOREIGN': tokens.Keyword, 'FORTRAN': tokens.Keyword, 'FORWARD': tokens.Keyword, diff --git a/sqlparse/sql.py b/sqlparse/sql.py index 9567aa5..cfd622b 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -629,3 +629,9 @@ class Function(TokenList): elif isinstance(t, Identifier): return [t,] return [] + + +class Begin(TokenList): + """A BEGIN/END block.""" + + __slots__ = ('value', 'ttype', 'tokens') |
