146 (r'[+*/<>=~!@#%^&|`?-]+', Operator), |
146 (r'[+*/<>=~!@#%^&|`?-]+', Operator), |
147 (r'::', Operator), # cast |
147 (r'::', Operator), # cast |
148 (r'\$\d+', Name.Variable), |
148 (r'\$\d+', Name.Variable), |
149 (r'([0-9]*\.[0-9]*|[0-9]+)(e[+-]?[0-9]+)?', Number.Float), |
149 (r'([0-9]*\.[0-9]*|[0-9]+)(e[+-]?[0-9]+)?', Number.Float), |
150 (r'[0-9]+', Number.Integer), |
150 (r'[0-9]+', Number.Integer), |
151 (r"(E|U&)?'(''|[^'])*'", String.Single), |
151 (r"(E|U&)?'", String.Single, 'string'), |
152 (r'(U&)?"(""|[^"])*"', String.Name), # quoted identifier |
152 (r'(U&)?"', String.Name, 'quoted-ident'), # quoted identifier |
153 (r'(?s)(\$[^$]*\$)(.*?)(\1)', language_callback), |
153 (r'(?s)(\$[^$]*\$)(.*?)(\1)', language_callback), |
154 (r'[a-z_]\w*', Name), |
154 (r'[a-z_]\w*', Name), |
155 |
155 |
156 # psql variable in SQL |
156 # psql variable in SQL |
157 (r""":(['"]?)[a-z]\w*\b\1""", Name.Variable), |
157 (r""":(['"]?)[a-z]\w*\b\1""", Name.Variable), |
161 'multiline-comments': [ |
161 'multiline-comments': [ |
162 (r'/\*', Comment.Multiline, 'multiline-comments'), |
162 (r'/\*', Comment.Multiline, 'multiline-comments'), |
163 (r'\*/', Comment.Multiline, '#pop'), |
163 (r'\*/', Comment.Multiline, '#pop'), |
164 (r'[^/*]+', Comment.Multiline), |
164 (r'[^/*]+', Comment.Multiline), |
165 (r'[/*]', Comment.Multiline) |
165 (r'[/*]', Comment.Multiline) |
|
166 ], |
|
167 'string': [ |
|
168 (r"[^']+", String.Single), |
|
169 (r"''", String.Single), |
|
170 (r"'", String.Single, '#pop'), |
|
171 ], |
|
172 'quoted-ident': [ |
|
173 (r'[^"]+', String.Name), |
|
174 (r'""', String.Name), |
|
175 (r'"', String.Name, '#pop'), |
166 ], |
176 ], |
167 } |
177 } |
168 |
178 |
169 |
179 |
170 class PlPgsqlLexer(PostgresBase, RegexLexer): |
180 class PlPgsqlLexer(PostgresBase, RegexLexer): |
378 'DATETIME_INTERVAL_CODE', 'DATETIME_INTERVAL_PRECISION', 'DAY', |
388 'DATETIME_INTERVAL_CODE', 'DATETIME_INTERVAL_PRECISION', 'DAY', |
379 'DEALLOCATE', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE', 'DEFERRED', |
389 'DEALLOCATE', 'DECLARE', 'DEFAULT', 'DEFAULTS', 'DEFERRABLE', 'DEFERRED', |
380 'DEFINED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS', 'DEREF', 'DESC', |
390 'DEFINED', 'DEFINER', 'DELETE', 'DELIMITER', 'DELIMITERS', 'DEREF', 'DESC', |
381 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC', |
391 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC', |
382 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISPATCH', 'DISTINCT', 'DO', |
392 'DIAGNOSTICS', 'DICTIONARY', 'DISCONNECT', 'DISPATCH', 'DISTINCT', 'DO', |
383 'DOMAIN', 'DROP', 'DYNAMIC', 'DYNAMIC_FUNCTION', 'DYNAMIC_FUNCTION_CODE', |
393 'DOMAIN', 'DROP', 'DYNAMIC', 'DYNAMIC_FUNCTION', 'DYNAMIC_FUNCTION_CODE', 'EACH', |
384 'EACH', 'ELSE', 'ENCODING', 'ENCRYPTED', 'END', 'END-EXEC', 'EQUALS', 'ESCAPE', 'EVERY', |
394 'ELSE', 'ELSIF', 'ENCODING', 'ENCRYPTED', 'END', 'END-EXEC', 'EQUALS', 'ESCAPE', 'EVERY', |
385 'EXCEPTION', 'EXCEPT', 'EXCLUDING', 'EXCLUSIVE', 'EXEC', 'EXECUTE', 'EXISTING', |
395 'EXCEPTION', 'EXCEPT', 'EXCLUDING', 'EXCLUSIVE', 'EXEC', 'EXECUTE', 'EXISTING', |
386 'EXISTS', 'EXPLAIN', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FETCH', 'FINAL', 'FIRST', 'FOR', |
396 'EXISTS', 'EXPLAIN', 'EXTERNAL', 'EXTRACT', 'FALSE', 'FETCH', 'FINAL', 'FIRST', 'FOR', |
387 'FORCE', 'FOREIGN', 'FORTRAN', 'FORWARD', 'FOUND', 'FREE', 'FREEZE', 'FROM', 'FULL', |
397 'FORCE', 'FOREIGN', 'FORTRAN', 'FORWARD', 'FOUND', 'FREE', 'FREEZE', 'FROM', 'FULL', |
388 'FUNCTION', 'G', 'GENERAL', 'GENERATED', 'GET', 'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GRANTED', |
398 'FUNCTION', 'G', 'GENERAL', 'GENERATED', 'GET', 'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GRANTED', |
389 'GROUP', 'GROUPING', 'HANDLER', 'HAVING', 'HIERARCHY', 'HOLD', 'HOST', 'IDENTITY', |
399 'GROUP', 'GROUPING', 'HANDLER', 'HAVING', 'HIERARCHY', 'HOLD', 'HOST', 'IDENTITY', 'IF', |
390 'IGNORE', 'ILIKE', 'IMMEDIATE', 'IMMUTABLE', 'IMPLEMENTATION', 'IMPLICIT', 'IN', |
400 'IGNORE', 'ILIKE', 'IMMEDIATE', 'IMMUTABLE', 'IMPLEMENTATION', 'IMPLICIT', 'IN', |
391 'INCLUDING', 'INCREMENT', 'INDEX', 'INDITCATOR', 'INFIX', 'INHERITS', 'INITIALIZE', |
401 'INCLUDING', 'INCREMENT', 'INDEX', 'INDITCATOR', 'INFIX', 'INHERITS', 'INITIALIZE', |
392 'INITIALLY', 'INNER', 'INOUT', 'INPUT', 'INSENSITIVE', 'INSERT', 'INSTANTIABLE', |
402 'INITIALLY', 'INNER', 'INOUT', 'INPUT', 'INSENSITIVE', 'INSERT', 'INSTANTIABLE', |
393 'INSTEAD', 'INTERSECT', 'INTO', 'INVOKER', 'IS', 'ISNULL', 'ISOLATION', 'ITERATE', 'JOIN', |
403 'INSTEAD', 'INTERSECT', 'INTO', 'INVOKER', 'IS', 'ISNULL', 'ISOLATION', 'ITERATE', 'JOIN', |
394 'KEY', 'KEY_MEMBER', 'KEY_TYPE', 'LANCOMPILER', 'LANGUAGE', 'LARGE', 'LAST', |
404 'KEY', 'KEY_MEMBER', 'KEY_TYPE', 'LANCOMPILER', 'LANGUAGE', 'LARGE', 'LAST', |