Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/pygments/lexers/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/pygments/lexers/__pycache__/sql.cpython-37.pyc

B

ʽ�\V{�@sdZddlZddlmZmZmZmZmZddlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZmZddlmZmZddlmZddlmZmZmZmZddlmZd	d
ddd
dddgZe� d�Z!e� dej"�Z#e� dej"�Z$e� d�Z%e� d�Z&e� dej"�Z'e� dej"�Z(e� d�Z)dd�Z*Gdd�de+�Z,Gdd	�d	e,e�Z-Gdd
�d
e,e�Z.Gdd �d e,e�Z/e� d!�Z0e� d"�Z1e� d#�Z2e� d$�Z1e� d%�Z3e� d&�Z4Gd'd(�d(e+�Z5Gd)d�de�Z6Gd*d�de�Z7Gd+d
�d
e�Z8Gd,d�de�Z9Gd-d�de�Z:Gd.d�de�Z;dS)/a�
    pygments.lexers.sql
    ~~~~~~~~~~~~~~~~~~~

    Lexers for various SQL dialects and related interactive sessions.

    Postgres specific lexers:

    `PostgresLexer`
        A SQL lexer for the PostgreSQL dialect. Differences w.r.t. the SQL
        lexer are:

        - keywords and data types list parsed from the PG docs (run the
          `_postgres_builtins` module to update them);
        - Content of $-strings parsed using a specific lexer, e.g. the content
          of a PL/Python function is parsed using the Python lexer;
        - parse PG specific constructs: E-strings, $-strings, U&-strings,
          different operators and punctuation.

    `PlPgsqlLexer`
        A lexer for the PL/pgSQL language. Adds a few specific construct on
        top of the PG SQL lexer (such as <<label>>).

    `PostgresConsoleLexer`
        A lexer to highlight an interactive psql session:

        - identifies the prompt and does its best to detect the end of command
          in multiline statement where not all the lines are prefixed by a
          prompt, telling them apart from the output;
        - highlights errors in the output and notification levels;
        - handles psql backslash commands.

    The ``tests/examplefiles`` contains a few test files with data to be
    parsed by these lexers.

    :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�Lexer�
RegexLexer�
do_insertions�bygroups�words)�Punctuation�
Whitespace�Error�Text�Comment�Operator�Keyword�Name�String�Number�Generic)�get_lexer_by_name�
ClassNotFound)�	iteritems)�KEYWORDS�	DATATYPES�PSEUDO_TYPES�PLPGSQL_KEYWORDS)�_tsql_builtins�
PostgresLexer�PlPgsqlLexer�PostgresConsoleLexer�SqlLexer�TransactSqlLexer�
MySqlLexer�SqliteConsoleLexer�RqlLexerz.*?
z\s+LANGUAGE\s+'?(\w+)'?z\bDO\bz\[[a-zA-Z_]\w*\]z`[a-zA-Z_]\w*`z\bgo\bz
\bdeclare\s+@z@[a-zA-Z_]\w*\bccs�d}t�|j|��|��d��}|dk	r>|�|�d��}n|tt�|jtd|�	�d�|�	����}|r�|�|d�d��}n8tt
�|jtd|�	�d�|�	����}|r�|�d�}|�	d�t|�d�fV|�	d�tj|�d�fV|�	d	�t|�d	�fV|�r.x:|�
|�d
��D]}|V�qWn|�	d
�t|�d
�fV|�	d�t|�d�fV|�	d�tj|�d�fV|�	d
�t|�d
�fVdS)z�Parse the content of a $-string using a lexer

    The lexer is chosen looking for a nearby LANGUAGE or assumed as
    plpgsql if inside a DO statement and no LANGUAGE has been found.
    N�d�r�����plpgsql������)�language_re�match�text�end�
_get_lexer�group�list�finditer�max�start�do_rerZ	Delimiter�get_tokens_unprocessed)�lexerr.�l�m�x�r=�D/opt/alt/python37/lib/python3.7/site-packages/pygments/lexers/sql.py�language_callbackHs, $$
r?cs(eZdZdZ�fdd�Zdd�Z�ZS)�PostgresBasea�Base class for Postgres-related lexers.

    This is implemented as a mixin to avoid the Lexer metaclass kicking in.
    this way the different lexer don't have a common Lexer ancestor. If they
    had, _tokens could be created on this ancestor and not updated for the
    other classes, resulting e.g. in PL/pgSQL parsed as SQL. This shortcoming
    seem to suggest that regexp lexers are not really subclassable.
    c's0||_x$tt|�j|f|��D]
}|VqWdS)N)r/�superr@r8)�selfr/�argsr<)�	__class__r=r>r8vsz#PostgresBase.get_tokens_unprocessedc	Cs�|��dkrtd|j�S|g}|�d�r:|�|dd��|�d�rV|�|dd��|�d�r||�d�r||�|dd��x4|D](}yt|f|j�Stk
r�Yq�Xq�WdSdS)N�sql�
postgresql�plr'�ur$)rF)�lowerr�options�
startswith�append�endswithr)rB�langZtriesr:r=r=r>r1}s



zPostgresBase._get_lexer)�__name__�
__module__�__qualname__�__doc__r8r1�
__classcell__r=r=)rDr>r@msr@c@s:eZdZdZdZddgZdgZejZ	de
fdejfdej
d	fd
d�dd
�eeD��dejfeedd�efdefdefdejfdejfdejfdeejej�dfdeejej�dfdefdefdejfdefgdej
d	fdej
dfd ej
fd!ej
fgd"ejfd#ejfd$ejdfgd%ejfd&ejfd'ejdfgd(�Z d)S)*rzM
    Lexer for the PostgreSQL dialect of SQL.

    .. versionadded:: 1.5
    zPostgreSQL SQL dialectrFZpostgresztext/x-postgresqlz\s+z--.*\n?z/\*zmultiline-comments�(�|ccs|]}|�dd�VqdS)� z\s+N)�replace)�.0�sr=r=r>�	<genexpr>�szPostgresLexer.<genexpr>z)\bz\b)�suffixz[+*/<>=~!@#%^&|`?-]+z::z\$\d+z&([0-9]*\.[0-9]*|[0-9]+)(e[+-]?[0-9]+)?z[0-9]+z((?:E|U&)?)(')�stringz((?:U&)?)(")zquoted-identz$(?s)(\$)([^$]*)(\$)(.*?)(\$)(\2)(\$)z	[a-z_]\w*z:(['"]?)[a-z]\w*\b\1z[;:()\[\]{},.]z\*/z#popz[^/*]+z[/*]z[^']+z''�'z[^"]+z""�")�rootzmultiline-commentsr\zquoted-identN)!rOrPrQrR�name�aliases�	mimetypes�re�
IGNORECASE�flagsr
r�Single�	Multiline�joinrrr�Builtinrrr
r�Variabler�Float�IntegerrrZAffixr?r�tokensr=r=r=r>r�s>
$


c@s�eZdZdZdZdgZdgZejZ	e
dd�eej
�D��Z
xPee
d�D]4\ZZedekrHeeed	d
�efe
de<[PqHWds�td��d
ejfdefdejfdejfge
ddd�<dS)rzR
    Handle the extra syntax in Pl/pgSQL language.

    .. versionadded:: 1.5
    zPL/pgSQLr&ztext/x-plpgsqlccs"|]\}}||dd�fVqdS)Nr=)rX�kr:r=r=r>rZ�szPlPgsqlLexer.<genexpr>r_r#z\b)r[rzSQL keywords not foundz\%[a-z]\w*\bz:=z\<\<[a-z]\w*\>\>z\#[a-z]\w*\bN)rOrPrQrRr`rarbrcrdre�dictrrrm�	enumerate�i�patternr
rrr�AssertionErrorrrir�Label�Pseudor=r=r=r>r�s"c@s�eZdZdZdZgZejZe	dd�e
ej�D��Zed�
dejdf�dedfd	efdejfd
ejfdejfdejfd
ejfged<dS)�PsqlRegexLexerz�
    Extend the PostgresLexer adding support specific for psql commands.

    This is not a complete psql lexer yet as it lacks prompt support
    and output rendering.
    z'PostgreSQL console - regexp based lexerccs"|]\}}||dd�fVqdS)Nr=)rXrnr:r=r=r>rZ�szPsqlRegexLexer.<genexpr>r_z\\[^\s]+zpsql-commandz\nz\s+z:(['"]?)[a-z]\w*\b\1z'(''|[^'])*'z	`([^`])*`z[^\s]+N)rOrPrQrRr`rarcrdrerorrrmrLr
rur
rrjrrfZBacktick�Symbolr=r=r=r>rv�srvz^(\S.*?)??[=\-\(\$\'\"][#>]z\s*\\z
;\s*(--.*?)?$z(\s*)(\\.+?)(\s+)$z(ERROR|FATAL):zS((?:DEBUG|INFO|NOTICE|WARNING|ERROR|FATAL|HINT|DETAIL|CONTEXT|LINE [0-9]+):)(.*?\n)c@s4eZdZdZdd�Zdd�Zdd�Zdd	�ZeZd
S)�	lookaheadz0Wrap an iterator and allow pushing back an item.cCst|�|_d|_dS)N)�iter�	_nextitem)rBr<r=r=r>�__init__s
zlookahead.__init__cCs|S)Nr=)rBr=r=r>�__iter__szlookahead.__iter__cCs
||_|S)N)rz)rBrqr=r=r>�sendszlookahead.sendcCs$|jdk	r|j}d|_|St|j�S)N)rz�nextry)rBZnir=r=r>�__next__s

zlookahead.__next__N)	rOrPrQrRr{r|r}rr~r=r=r=r>rxsrxc@s,eZdZdZdZdddgZdgZdd�Zd	S)
rz=
    Lexer for psql sessions.

    .. versionadded:: 1.5
    zPostgreSQL console (psql)Zpsqlzpostgresql-consolezpostgres-consoleztext/x-postgresql-psqlc
cs�tf|j�}tt�|��}�x�d}g}x�|D]�}|�d�rf|sftd	|j�}x|�|�D]
}|VqVWPt�	|�}	|	dk	r�|�
t|�dtj
|	��fgf�||t|	���d�7}n||7}t�	|�s�t�|�r,Pq,Wxt||�|��D]
}
|
Vq�Wtj}x�|D]�}t�	|�}	|	dk	�r$|�|�Pt�	|�}|dk	�r�|�d��d��s\|�d��d��rbtj}|�d�tj|�d�fV|�d�||�d�fVnd||fV�qWdSqWdS)
N��$�consolerr#�ERROR�FATALr')r�)rvrJrx�line_re�findallrKrr8�	re_promptr.rL�lenr�Promptr2�re_psql_command�re_end_command�searchr�Outputr}�
re_messager	r6ZStrong)
rB�datarE�lines�curcode�
insertions�liner9r<Zmprompt�itemZ	out_tokenZmmsgr=r=r>r82sL












z+PostgresConsoleLexer.get_tokens_unprocessedN)rOrPrQrRr`rarbr8r=r=r=r>r's

c@s�eZdZdZdZdgZdgZdgZej	Z
defdej
fdejd	fed
dd�efed
dd�ejfdefdejfdej
fdejfdefdefgdejd	fdejdfdejfdejfgd�Zdd�ZdS)rz
    Lexer for Structured Query Language. Currently, this lexer does
    not recognize any special syntax except ANSI SQL.
    �SQLrEz*.sqlz
text/x-sqlz\s+z--.*\n?z/\*zmultiline-comments(�ZABORTZABSZABSOLUTEZACCESSZADAZADDZADMINZAFTERZ	AGGREGATEZALIASZALLZALLOCATEZALTERZANALYSEZANALYZEZAND�ANYZAREZASZASCZ
ASENSITIVEZ	ASSERTIONZ
ASSIGNMENTZ
ASYMMETRIC�ATZATOMICZ
AUTHORIZATIONZAVGZBACKWARDZBEFOREZBEGINZBETWEENZBITVARZ
BIT_LENGTHZBOTHZBREADTHZBY�CZCACHE�CALLZCALLEDZCARDINALITYZCASCADEZCASCADEDZCASEZCASTZCATALOGZCATALOG_NAMEZCHAINZCHARACTERISTICSZCHARACTER_LENGTHZCHARACTER_SET_CATALOGZCHARACTER_SET_NAMEZCHARACTER_SET_SCHEMAZCHAR_LENGTHZCHECKZCHECKEDZ
CHECKPOINTZCLASSZCLASS_ORIGINZCLOBZCLOSEZCLUSTERZCOALSECEZCOBOLZCOLLATEZ	COLLATIONZCOLLATION_CATALOGZCOLLATION_NAMEZCOLLATION_SCHEMAZCOLUMNZCOLUMN_NAMEZCOMMAND_FUNCTIONZCOMMAND_FUNCTION_CODE�COMMENTZCOMMITZ	COMMITTEDZ
COMPLETIONZCONDITION_NUMBERZCONNECTZ
CONNECTIONZCONNECTION_NAMEZ
CONSTRAINTZCONSTRAINTSZCONSTRAINT_CATALOGZCONSTRAINT_NAMEZCONSTRAINT_SCHEMAZCONSTRUCTORZCONTAINSZCONTINUEZ
CONVERSIONZCONVERTZCOPYZ
CORRESPONTINGZCOUNTZCREATEZCREATEDBZ
CREATEUSERZCROSSZCUBEZCURRENTZCURRENT_DATEZCURRENT_PATHZCURRENT_ROLEZCURRENT_TIMEZCURRENT_TIMESTAMPZCURRENT_USERZCURSORZCURSOR_NAMEZCYCLEZDATAZDATABASEZDATETIME_INTERVAL_CODEZDATETIME_INTERVAL_PRECISIONZDAYZ
DEALLOCATEZDECLARE�DEFAULTZDEFAULTSZ
DEFERRABLEZDEFERREDZDEFINEDZDEFINERZDELETEZ	DELIMITERZ
DELIMITERSZDEREFZDESCZDESCRIBEZ
DESCRIPTORZDESTROYZ
DESTRUCTORZ
DETERMINISTICZDIAGNOSTICSZ
DICTIONARYZ
DISCONNECTZDISPATCHZDISTINCTZDOZDOMAINZDROPZDYNAMICZDYNAMIC_FUNCTIONZDYNAMIC_FUNCTION_CODEZEACH�ELSEZELSIF�ENCODINGZ	ENCRYPTEDZENDzEND-EXECZEQUALS�ESCAPEZEVERYZ	EXCEPTIONZEXCEPTZ	EXCLUDINGZ	EXCLUSIVEZEXECZEXECUTEZEXISTINGZEXISTSZEXPLAINZEXTERNALZEXTRACTZFALSEZFETCHZFINALZFIRSTZFORZFORCEZFOREIGNZFORTRANZFORWARDZFOUNDZFREEZFREEZEZFROMZFULLZFUNCTION�GZGENERALZ	GENERATEDZGETZGLOBALZGOZGOTOZGRANTZGRANTEDZGROUPZGROUPINGZHANDLERZHAVINGZ	HIERARCHYZHOLDZHOSTZIDENTITYZIFZIGNOREZILIKEZ	IMMEDIATEZ	IMMUTABLEZIMPLEMENTATIONZIMPLICIT�INZ	INCLUDINGZ	INCREMENTZINDEXZ
INDITCATORZINFIXZINHERITSZ
INITIALIZEZ	INITIALLYZINNERZINOUTZINPUTZINSENSITIVEZINSERTZINSTANTIABLEZINSTEADZ	INTERSECTZINTOZINVOKERZISZISNULLZ	ISOLATIONZITERATEZJOINZKEYZ
KEY_MEMBERZKEY_TYPEZLANCOMPILER�LANGUAGEZLARGEZLASTZLATERALZLEADING�LEFTZLENGTH�LESSZLEVELZLIKEZLIMITZLISTENZLOADZLOCALZ	LOCALTIMEZLOCALTIMESTAMPZLOCATIONZLOCATORZLOCKZLOWERZMAPZMATCH�MAXZMAXVALUEZMESSAGE_LENGTHZMESSAGE_OCTET_LENGTHZMESSAGE_TEXTZMETHODZMINZMINUTEZMINVALUEZMODZMODEZMODIFIESZMODIFYZMONTHZMOREZMOVEZMUMPSZNAMESZNATIONALZNATURALZNCHARZNCLOBZNEWZNEXTZNOZ
NOCREATEDBZNOCREATEUSERZNONEZNOTZNOTHINGZNOTIFYZNOTNULLZNULLZNULLABLEZNULLIFZOBJECTZOCTET_LENGTHZOFZOFFZOFFSETZOIDSZOLDZONZONLYZOPENZ	OPERATIONZOPERATORZOPTIONZOPTIONS�ORZORDERZ
ORDINALITYZOUTZOUTERZOUTPUTZOVERLAPSZOVERLAYZ
OVERRIDINGZOWNERZPADZ	PARAMETERZ
PARAMETERSZPARAMETER_MODEZPARAMATER_NAMEZPARAMATER_ORDINAL_POSITIONZPARAMETER_SPECIFIC_CATALOGZPARAMETER_SPECIFIC_NAMEZPARAMATER_SPECIFIC_SCHEMAZPARTIALZPASCALZPENDANTZPLACINGZPLIZPOSITIONZPOSTFIXZ	PRECISION�PREFIXZPREORDERZPREPAREZPRESERVEZPRIMARYZPRIORZ
PRIVILEGESZ
PROCEDURALZ	PROCEDUREZPUBLICZREADZREADSZRECHECKZ	RECURSIVEZREFZ
REFERENCESZREFERENCINGZREINDEXZRELATIVEZRENAMEZ
REPEATABLEZREPLACEZRESETZRESTARTZRESTRICTZRESULTZRETURNZRETURNED_LENGTHZRETURNED_OCTET_LENGTHZRETURNED_SQLSTATEZRETURNSZREVOKE�RIGHTZROLEZROLLBACKZROLLUPZROUTINEZROUTINE_CATALOGZROUTINE_NAMEZROUTINE_SCHEMAZROWZROWSZ	ROW_COUNTZRULEZ
SAVE_POINTZSCALEZSCHEMAZSCHEMA_NAMEZSCOPEZSCROLLZSEARCHZSECONDZSECURITYZSELECTZSELFZ	SENSITIVEZSERIALIZABLEZSERVER_NAMEZSESSIONZSESSION_USERZSETZSETOFZSETSZSHAREZSHOWZSIMILARZSIMPLEZSIZEZSOMEZSOURCE�SPACEZSPECIFICZSPECIFICTYPEZ
SPECIFIC_NAMEr�ZSQLCODEZSQLERRORZSQLEXCEPTIONZSQLSTATEZSQLWARNINIGZSTABLEZSTARTZSTATEZ	STATEMENTZSTATICZ
STATISTICSZSTDIN�STDOUTZSTORAGEZSTRICTZ	STRUCTUREZSTYPEZSUBCLASS_ORIGINZSUBLISTZ	SUBSTRINGZSUMZ	SYMMETRICZSYSIDZSYSTEMZSYSTEM_USERZTABLEZ
TABLE_NAMEz TEMP�TEMPLATEZ	TEMPORARYZ	TERMINATEZTHANZTHEN�	TIMESTAMPZ
TIMEZONE_HOURZTIMEZONE_MINUTEZTOZTOASTZTRAILINGZ
TRANSATIONZTRANSACTIONS_COMMITTEDZTRANSACTIONS_ROLLED_BACKZTRANSATION_ACTIVEZ	TRANSFORMZ
TRANSFORMSZ	TRANSLATEZTRANSLATIONZTREATZTRIGGERZTRIGGER_CATALOGZTRIGGER_NAMEZTRIGGER_SCHEMAZTRIMZTRUEZTRUNCATEZTRUSTEDZTYPEZUNCOMMITTEDZUNDERZUNENCRYPTEDZUNIONZUNIQUE�UNKNOWNZUNLISTENZUNNAMEDZUNNESTZUNTILZUPDATEZUPPER�USAGEZUSERZUSER_DEFINED_TYPE_CATALOGZUSER_DEFINED_TYPE_NAMEZUSER_DEFINED_TYPE_SCHEMAZUSINGZVACUUMZVALIDZ	VALIDATORZVALUES�VARIABLE�VERBOSE�VERSIONZVIEWZVOLATILEZWHENZWHENEVERZWHEREZWITHZWITHOUTZWORKZWRITEZYEARZZONEz\b)r[)�ARRAYZBIGINTZBINARYZBITZBLOBZBOOLEANZCHARZ	CHARACTERZDATEZDECZDECIMALZFLOATZINTZINTEGERZINTERVAL�NUMBERZNUMERICZREALZSERIALZSMALLINTZVARCHARZVARYINGZINT8ZSERIAL8ZTEXTz[+*/<>=~!@#%^&|`?-]z[0-9]+z'(''|[^'])*'z"(""|[^"])*"z[a-z_][\w$]*z[;:()\[\],.]z\*/z#popz[^/*]+z[/*])r_zmultiline-commentscCsdS)Ng{�G�z�?r=)r/r=r=r>�analyse_text�szSqlLexer.analyse_textN)rOrPrQrRr`ra�	filenamesrbrcrdrer
rrfrgrr
rrirrrlrrwrrmr�r=r=r=r>rqs8
J

c@s^eZdZdZdZddgZdgZdgZej	ej
BZdefde
jfd	e
jd
feej�efeejdd�ejfeejdd�ejfeejdd�ejfd
eeeej�feejdd�efdeeee�fdej fdej!fdej!fdej!fdej"fde#jfde#j$fde%fdej&fdej'fdeeje%�fdefdej'j(fgd	e
jd
fde
jdfde
jfde
jfgd �Z)d!d"�Z*d#S)$rz�
    Transact-SQL (T-SQL) is Microsoft's and Sybase's proprietary extension to
    SQL.

    The list of keywords includes ODBC and keywords reserved for future use..
    zTransact-SQLZtsqlzt-sqlz*.sqlztext/x-tsqlz\s+z
(?m)--.*?$\n?z/\*zmultiline-commentsz\b)r[z(goto)(\s+)(\w+\b)z(\[)([^]]+)(\])z0x[0-9a-f]+z[0-9]+\.[0-9]*(e[+-]?[0-9]+)?z\.[0-9]+(e[+-]?[0-9]+)?z[0-9]+e[+-]?[0-9]+z[0-9]+z'(''|[^'])*'z"(""|[^"])*"z[;(),.]z@@\w+z@\w+z(\w+)(:)z#?#?\w+z\?z\*/z#popz[^/*]+z[/*])r_zmultiline-commentscCs�d}t�|�rd}n�tt�|��}tt�|��}||}|dkrV|d|krV|d7}n"||krh|d7}n|dkrx|d7}t�|�dk	r�|d7}t�|�dk	r�|d7}|S)Nrg�?r#r'g�?g�������?g�������?)�tsql_declare_rer�r��name_between_backtick_rer��name_between_bracket_re�tsql_variable_re�
tsql_go_re)r/�rating�name_between_backtick_count�name_between_bracket_count�dialect_name_countr=r=r>r�s&


zTransactSqlLexer.analyse_textN)+rOrPrQrRr`rar�rbrcrd�UNICODErerrrfrgrrZ	OPERATORSrZOPERATOR_WORDS�WordZTYPESrZClassZ	FUNCTIONS�Functionrr
rtrrZHexrkrlrrwrrirjZMagicrmr�r=r=r=r>r�sD


c@s�eZdZdZdZdgZdgZejZ	de
fdejfdej
dfd	ejfd
ejfdejfdejfd
ejfdefdeeje
e�fdefdejfdejfdeeje
e�fdefdejfdefgdej
dfdej
dfdej
fdej
fgd�Zdd�ZdS)rz"
    Special lexer for MySQL.
    ZMySQLZmysqlztext/x-mysqlz\s+z(#|--\s+).*\n?z/\*zmultiline-commentsz[0-9]+z[0-9]*\.[0-9]+(e[+-][0-9]+)z'(\\\\|\\'|''|[^'])*'z"(\\\\|\\"|""|[^"])*"z`(\\\\|\\`|``|[^`])*`z[+*/<>=~!@#%^&|`?-]a\b(tinyint|smallint|mediumint|int|integer|bigint|date|datetime|time|bit|bool|tinytext|mediumtext|longtext|text|tinyblob|mediumblob|longblob|blob|float|double|double\s+precision|real|numeric|dec|decimal|timestamp|year|char|varchar|varbinary|varcharacter|enum|set)(\b\s*)(\()?a3\b(add|all|alter|analyze|and|as|asc|asensitive|before|between|bigint|binary|blob|both|by|call|cascade|case|change|char|character|check|collate|column|condition|constraint|continue|convert|create|cross|current_date|current_time|current_timestamp|current_user|cursor|database|databases|day_hour|day_microsecond|day_minute|day_second|dec|decimal|declare|default|delayed|delete|desc|describe|deterministic|distinct|distinctrow|div|double|drop|dual|each|else|elseif|enclosed|escaped|exists|exit|explain|fetch|flush|float|float4|float8|for|force|foreign|from|fulltext|grant|group|having|high_priority|hour_microsecond|hour_minute|hour_second|if|ignore|in|index|infile|inner|inout|insensitive|insert|int|int1|int2|int3|int4|int8|integer|interval|into|is|iterate|join|key|keys|kill|leading|leave|left|like|limit|lines|load|localtime|localtimestamp|lock|long|loop|low_priority|match|minute_microsecond|minute_second|mod|modifies|natural|no_write_to_binlog|not|numeric|on|optimize|option|optionally|or|order|out|outer|outfile|precision|primary|procedure|purge|raid0|read|reads|real|references|regexp|release|rename|repeat|replace|require|restrict|return|revoke|right|rlike|schema|schemas|second_microsecond|select|sensitive|separator|set|show|smallint|soname|spatial|specific|sql|sql_big_result|sql_calc_found_rows|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|starting|straight_join|table|terminated|then|to|trailing|trigger|undo|union|unique|unlock|unsigned|update|usage|use|using|utc_date|utc_time|utc_timestamp|values|varying|when|where|while|with|write|x509|xor|year_month|zerofill)\bz*\b(auto_increment|engine|charset|tables)\bz(true|false|null)z([a-z_]\w*)(\s*)(\()z	[a-z_]\w*z@[a-z0-9]*[._]*[a-z0-9]*z[;:()\[\],.]z\*/z#popz[^/*]+z[/*])r_zmultiline-commentscCsld}tt�|��}tt�|��}||}|dkrF|d|krF|d7}n"||krX|d7}n|dkrh|d7}|S)Nrr#r'g�?g�������?g�������?)r�r�r�r�)r/r�r�r�r�r=r=r>r��s

zMySqlLexer.analyse_textN) rOrPrQrRr`rarbrcrdrer
rrfrgrrlrkr�Doublerwrrr
ZTyperrurZConstantr�rjrmr�r=r=r=r>r;s<


c@s.eZdZdZdZdgZdgZdgZdd�ZdS)	r zO
    Lexer for example sessions using sqlite3.

    .. versionadded:: 0.11
    Z
sqlite3conZsqlite3z*.sqlite3-consoleztext/x-sqlite3-consolec	cs�tf|j�}d}g}x�t�|�D]�}|��}|�d�s@|�d�rv|�t|�dtj	|dd�fgf�||dd�7}q |r�xt
||�|��D]
}|Vq�Wd}g}|�d�r�|��tj
|fVq |��tj|fVq W|r�xt
||�|��D]
}|Vq�WdS)Nr�zsqlite> z   ...> r�zSQL error: )rrJr�r4r2rKrLr�rr�rr8r6�	Tracebackr�)rBr�rEr�r�r.r�r�r=r=r>r8�s,


z)SqliteConsoleLexer.get_tokens_unprocessedN)	rOrPrQrRr`rar�rbr8r=r=r=r>r �sc@sreZdZdZdZdgZdgZdgZej	Z
ddefdefd	e
fd
ejfdejfdefd
ejfdejfdefg	iZdS)r!zx
    Lexer for Relation Query Language.

    `RQL <http://www.logilab.org/project/rql>`_

    .. versionadded:: 2.0
    ZRQLZrqlz*.rqlz
text/x-rqlr_z\s+z�(DELETE|SET|INSERT|UNION|DISTINCT|WITH|WHERE|BEING|OR|AND|NOT|GROUPBY|HAVING|ORDERBY|ASC|DESC|LIMIT|OFFSET|TODAY|NOW|TRUE|FALSE|NULL|EXISTS)\bz
[+*/<>=%-]z)(Any|is|instance_of|CWEType|CWRelation)\bz[0-9]+z[A-Z_]\w*\??z'(''|[^'])*'z"(""|[^"])*"z[;:()\[\],.]N)rOrPrQrRr`rar�rbrcrdrer
r
rrrirrlrrfrrmr=r=r=r>r!�s")<rRrcZpygments.lexerrrrrrZpygments.tokenrrr	r
rrr
rrrrZpygments.lexersrrZ
pygments.utilrZ"pygments.lexers._postgres_builtinsrrrrr�__all__�compiler�rdr-r7r�r�r�r�r�r?�objectr@rrrvr�r�r�Zre_errorr�rxrrrrr r!r=r=r=r>�<module>'sJ4



%'8!




JwSZ(