B
    G¸
\$r  ã               @   sÔ  d Z ddlZddlmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZ ddlmZ d	d
ddddddgZe  d¡Z!e  dej"¡Z#e  dej"¡Z$dd„ Z%G dd„ de&ƒZ'G dd	„ d	e'eƒZ(G dd
„ d
e'eƒZ)G dd„ de'eƒZ*e  d¡Z+e  d¡Z,e  d¡Z-e  d¡Z,e  d ¡Z.e  d!¡Z/G d"d#„ d#e&ƒZ0G d$d„ deƒZ1G d%d„ deƒZ2G d&d„ deƒZ3G d'd„ deƒZ4G d(d„ deƒZ5G d)d„ deƒZ6dS )*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-2017 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\bc             c   s”  d}t  | j| ¡ | ¡ d … ¡}|dk	r>|  | d¡¡}n|tt  | jtd| 	¡ d ƒ| 	¡ … ¡ƒ}|r‚|  |d  d¡¡}n8tt
 | jtd| 	¡ d ƒ| 	¡ … ¡ƒ}|rº|  d¡}| 	d¡t| d¡fV  | 	d¡tj| d¡fV  | 	d	¡t| d	¡fV  |r.x:| | d
¡¡D ]}|V  qW n| 	d
¡t| d
¡fV  | 	d¡t| d¡fV  | 	d¡tj| d¡fV  | 	d¡t| d¡fV  dS )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_rer   Z	DelimiterÚget_tokens_unprocessed)Úlexerr.   ÚlÚmÚx© r=   ú2lib/python3.7/site-packages/pygments/lexers/sql.pyÚlanguage_callbackA   s,     $$
r?   c                   s(   e Zd ZdZ‡ fdd„Zdd„ Z‡  ZS )Ú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$tt| ƒj|f|žŽ D ]
}|V  qW d S )N)r/   Úsuperr@   r8   )Úselfr/   Úargsr<   )Ú	__class__r=   r>   r8   o   s    z#PostgresBase.get_tokens_unprocessedc          	   C   s¶   |  ¡ dkrtd| jŽS |g}| d¡r:| |dd … ¡ | d¡rV| |d d… ¡ | d¡r|| d¡r|| |dd… ¡ x4|D ](}yt|f| jŽS  tk
r¨   Y q‚X q‚W d S d S )NÚsqlÚ
postgresqlZplr'   Úur$   )rF   )Úlowerr   ÚoptionsÚ
startswithÚappendÚendswithr   )rB   ZlangZtriesr:   r=   r=   r>   r1   v   s    



zPostgresBase._get_lexer)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r8   r1   Ú__classcell__r=   r=   )rD   r>   r@   f   s   r@   c               @   s:  e Zd ZdZdZddgZdgZejZ	de
fdejfdejd	fd
d dd„ ee D ƒ¡ d ejfeeddefdefdefdejfdejfdejfdeejejƒdfdeejejƒdfdefdefdejfdefgdejd	fdejdfd ejfd!ejfgd"ejfd#ejfd$ejdfgd%ejfd&ejfd'ejdfgd(œZ d)S )*r   zM
    Lexer for the PostgreSQL dialect of SQL.

    .. versionadded:: 1.5
    zPostgreSQL SQL dialectrF   Zpostgresztext/x-postgresqlz\s+z--.*\n?z/\*zmultiline-commentsú(ú|c             c   s   | ]}|  d d¡V  qdS )ú z\s+N)Úreplace)Ú.0Úsr=   r=   r>   ú	<genexpr>ž   s   zPostgresLexer.<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""ú")Úrootzmultiline-commentsrZ   zquoted-identN)!rM   rN   rO   rP   ÚnameÚaliasesÚ	mimetypesÚreÚ
IGNORECASEÚflagsr
   r   ÚSingleÚ	MultilineÚjoinr   r   r   ÚBuiltinr   r   r   r   ÚVariabler   ÚFloatÚIntegerr   r   ZAffixr?   r   Útokensr=   r=   r=   r>   r      s>   
$


c               @   s¾   e Zd ZdZdZdgZdgZejZ	e
dd„ eejƒD ƒƒZxPeed ƒD ]4\ZZed ekrHeee d	d
efed e< [P qHW dsŒtdƒ‚dejfdefdejfdejfged dd…< dS )r   zR
    Handle the extra syntax in Pl/pgSQL language.

    .. versionadded:: 1.5
    zPL/pgSQLr&   ztext/x-plpgsqlc             c   s"   | ]\}}||d d … fV  qd S )Nr=   )rV   Úkr:   r=   r=   r>   rX   Ð   s    zPlPgsqlLexer.<genexpr>r]   r#   z\b)rY   r   zSQL keywords not foundz\%[a-z]\w*\bz:=z\<\<[a-z]\w*\>\>z\#[a-z]\w*\bN)rM   rN   rO   rP   r^   r_   r`   ra   rb   rc   Údictr   r   rk   Ú	enumerateÚiÚpatternr   r   r   r   ÚAssertionErrorr   rg   r   ÚLabelÚPseudor=   r=   r=   r>   r   Å   s"   c               @   sŠ   e Zd ZdZdZg ZejZe	dd„ e
ejƒD ƒƒZed  dejdf¡ dedfd	efdejfd
ejfdejfdejfdejfged< dS )Ú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 lexerc             c   s"   | ]\}}||d d … fV  qd S )Nr=   )rV   rl   r:   r=   r=   r>   rX   ò   s    zPsqlRegexLexer.<genexpr>r]   z\\[^\s]+zpsql-commandz\nz\s+z:(['"]?)[a-z]\w*\b\1z'(''|[^'])*'z	`([^`])*`z[^\s]+N)rM   rN   rO   rP   r^   r_   ra   rb   rc   rm   r   r   rk   rK   r   rs   r
   r   rh   r   rd   ZBacktickÚSymbolr=   r=   r=   r>   rt   æ   s   rt   z^(\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               @   s4   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ ZeZd
S )Ú	lookaheadz0Wrap an iterator and allow pushing back an item.c             C   s   t |ƒ| _ d | _d S )N)ÚiterÚ	_nextitem)rB   r<   r=   r=   r>   Ú__init__  s    
zlookahead.__init__c             C   s   | S )Nr=   )rB   r=   r=   r>   Ú__iter__  s    zlookahead.__iter__c             C   s
   || _ |S )N)rx   )rB   ro   r=   r=   r>   Úsend  s    zlookahead.sendc             C   s$   | j d k	r| j }d | _ |S t| jƒS )N)rx   Únextrw   )rB   Znir=   r=   r>   Ú__next__  s
    
zlookahead.__next__N)	rM   rN   rO   rP   ry   rz   r{   r}   r|   r=   r=   r=   r>   rv   
  s   rv   c               @   s,   e Zd ZdZdZdddgZdgZdd„ Zd	S )
r   z=
    Lexer for psql sessions.

    .. versionadded:: 1.5
    zPostgreSQL console (psql)Zpsqlzpostgresql-consolezpostgres-consoleztext/x-postgresql-psqlc             c   s´  t f | jŽ}tt |¡ƒ}x’d}g }x¬|D ]¤}| d¡rf|sftd	| jŽ}x| |¡D ]
}|V  qVW P t 	|¡}	|	d k	r²| 
t|ƒdtj|	 ¡ fgf¡ ||t|	 ¡ ƒd … 7 }n||7 }t 	|¡sÎt |¡r,P q,W xt|| |¡ƒD ]
}
|
V  qæW tj}x°|D ]¤}t 	|¡}	|	d k	r$| |¡ P t 	|¡}|d k	r–| d¡ d¡s\| d¡ d¡rbtj}| d¡tj| d¡fV  | d¡|| d¡fV  nd||fV  q W d S qW d S )
NÚ ú$Úconsoler   r#   ZERRORZFATALr'   )r€   )rt   rI   rv   Úline_reÚfindallrJ   r   r8   Ú	re_promptr.   rK   Úlenr   ÚPromptr2   Úre_psql_commandÚre_end_commandÚsearchr   ÚOutputr{   Ú
re_messager	   r6   ZStrong)rB   ÚdatarE   ÚlinesÚcurcodeÚ
insertionsÚliner9   r<   ZmpromptÚitemZ	out_tokenZmmsgr=   r=   r>   r8   +  sL    












z+PostgresConsoleLexer.get_tokens_unprocessedN)rM   rN   rO   rP   r^   r_   r`   r8   r=   r=   r=   r>   r      s
   
c               @   sº   e Zd ZdZdZdgZdgZdgZej	Z
defdejfdejd	fed
ddefedddejfdefdejfdejfdejfdefdefgdejd	fdejdfdejfdejfgdœZdS )r   z
    Lexer for Structured Query Language. Currently, this lexer does
    not recognize any special syntax except ANSI SQL.
    ÚSQLrE   z*.sqlz
text/x-sqlz\s+z--.*\n?z/\*zmultiline-comments(ò  ZABORTZABSZABSOLUTEZACCESSZADAZADDZADMINZAFTERZ	AGGREGATEZALIASZALLZALLOCATEZALTERZANALYSEZANALYZEZANDÚANYZAREZASZASCZ
ASENSITIVEZ	ASSERTIONZ
ASSIGNMENTZ
ASYMMETRICÚATZATOMICZAUTHORIZATIONZAVGZBACKWARDZBEFOREZBEGINZBETWEENZBITVARZ
BIT_LENGTHZBOTHZBREADTHZBYÚCZCACHEÚCALLZCALLEDZCARDINALITYZCASCADEZCASCADEDZCASEZCASTZCATALOGZCATALOG_NAMEZCHAINZCHARACTERISTICSZCHARACTER_LENGTHZCHARACTER_SET_CATALOGZCHARACTER_SET_NAMEZCHARACTER_SET_SCHEMAZCHAR_LENGTHZCHECKZCHECKEDZ
CHECKPOINTZCLASSZCLASS_ORIGINZCLOBZCLOSEZCLUSTERZCOALSECEZCOBOLZCOLLATEZ	COLLATIONZCOLLATION_CATALOGZCOLLATION_NAMEZCOLLATION_SCHEMAZCOLUMNZCOLUMN_NAMEZCOMMAND_FUNCTIONZCOMMAND_FUNCTION_CODEÚCOMMENTZCOMMITZ	COMMITTEDZ
COMPLETIONZCONDITION_NUMBERZCONNECTZ
CONNECTIONZCONNECTION_NAMEZ
CONSTRAINTZCONSTRAINTSZCONSTRAINT_CATALOGZCONSTRAINT_NAMEZCONSTRAINT_SCHEMAZCONSTRUCTORZCONTAINSZCONTINUEZ
CONVERSIONZCONVERTZCOPYZCORRESPONTINGZCOUNTZCREATEZCREATEDBZ
CREATEUSERZCROSSZCUBEZCURRENTZCURRENT_DATEZCURRENT_PATHZCURRENT_ROLEZCURRENT_TIMEZCURRENT_TIMESTAMPZCURRENT_USERZCURSORZCURSOR_NAMEZCYCLEZDATAZDATABASEZDATETIME_INTERVAL_CODEZDATETIME_INTERVAL_PRECISIONZDAYZ
DEALLOCATEZDECLAREZDEFAULTZDEFAULTSZ
DEFERRABLEZDEFERREDZDEFINEDZDEFINERZDELETEZ	DELIMITERZ
DELIMITERSZDEREFZDESCZDESCRIBEZ
DESCRIPTORZDESTROYZ
DESTRUCTORZDETERMINISTICZDIAGNOSTICSZ
DICTIONARYZ
DISCONNECTZDISPATCHZDISTINCTZDOZDOMAINZDROPZDYNAMICZDYNAMIC_FUNCTIONZDYNAMIC_FUNCTION_CODEZEACHÚELSEZELSIFÚENCODINGZ	ENCRYPTEDZENDzEND-EXECZEQUALSZESCAPEZEVERYZ	EXCEPTIONZEXCEPTZ	EXCLUDINGZ	EXCLUSIVEZEXECZEXECUTEZEXISTINGZEXISTSZEXPLAINZEXTERNALZEXTRACTZFALSEZFETCHZFINALZFIRSTZFORZFORCEZFOREIGNZFORTRANZFORWARDZFOUNDZFREEZFREEZEZFROMZFULLZFUNCTIONÚGZGENERALZ	GENERATEDZGETZGLOBALZGOZGOTOZGRANTZGRANTEDZGROUPZGROUPINGZHANDLERZHAVINGZ	HIERARCHYZHOLDZHOSTZIDENTITYZIFZIGNOREZILIKEZ	IMMEDIATEZ	IMMUTABLEZIMPLEMENTATIONZIMPLICITÚINZ	INCLUDINGZ	INCREMENTZINDEXZ
INDITCATORZINFIXZINHERITSZ
INITIALIZEZ	INITIALLYZINNERZINOUTZINPUTZINSENSITIVEZINSERTZINSTANTIABLEZINSTEADZ	INTERSECTZINTOZINVOKERZISZISNULLZ	ISOLATIONZITERATEZJOINZKEYZ
KEY_MEMBERZKEY_TYPEZLANCOMPILERZLANGUAGEZLARGEZLASTZLATERALZLEADINGZLEFTZLENGTHÚLESSZLEVELZLIKEZLIMITZLISTENZLOADZLOCALZ	LOCALTIMEZLOCALTIMESTAMPZLOCATIONZLOCATORZLOCKZLOWERZMAPZMATCHÚMAXZMAXVALUEZMESSAGE_LENGTHZMESSAGE_OCTET_LENGTHZMESSAGE_TEXTZMETHODZMINZMINUTEZMINVALUEZMODZMODEZMODIFIESZMODIFYZMONTHZMOREZMOVEZMUMPSZNAMESZNATIONALZNATURALZNCHARZNCLOBZNEWZNEXTZNOZ
NOCREATEDBZNOCREATEUSERZNONEZNOTZNOTHINGZNOTIFYZNOTNULLZNULLZNULLABLEZNULLIFZOBJECTZOCTET_LENGTHZOFZOFFZOFFSETZOIDSZOLDZONZONLYZOPENZ	OPERATIONZOPERATORZOPTIONZOPTIONSÚORZORDERZ
ORDINALITYZOUTZOUTERZOUTPUTZOVERLAPSZOVERLAYZ
OVERRIDINGZOWNERZPADZ	PARAMETERZ
PARAMETERSZPARAMETER_MODEZPARAMATER_NAMEZPARAMATER_ORDINAL_POSITIONZPARAMETER_SPECIFIC_CATALOGZPARAMETER_SPECIFIC_NAMEZPARAMATER_SPECIFIC_SCHEMAZPARTIALZPASCALZPENDANTZPLACINGZPLIZPOSITIONZPOSTFIXZ	PRECISIONZPREFIXZPREORDERZPREPAREZPRESERVEZPRIMARYZPRIORZ
PRIVILEGESZ
PROCEDURALZ	PROCEDUREZPUBLICZREADZREADSZRECHECKZ	RECURSIVEZREFZ
REFERENCESZREFERENCINGZREINDEXZRELATIVEZRENAMEZ
REPEATABLEZREPLACEZRESETZRESTARTZRESTRICTZRESULTZRETURNZRETURNED_LENGTHZRETURNED_OCTET_LENGTHZRETURNED_SQLSTATEZRETURNSZREVOKEZRIGHTZROLEZROLLBACKZROLLUPZROUTINEZROUTINE_CATALOGZROUTINE_NAMEZROUTINE_SCHEMAZROWZROWSZ	ROW_COUNTZRULEZ
SAVE_POINTZSCALEZSCHEMAZSCHEMA_NAMEZSCOPEZSCROLLZSEARCHZSECONDZSECURITYZSELECTZSELFZ	SENSITIVEZSERIALIZABLEZSERVER_NAMEZSESSIONZSESSION_USERZSETZSETOFZSETSZSHAREZSHOWZSIMILARZSIMPLEZSIZEZSOMEZSOURCEZSPACEZSPECIFICZSPECIFICTYPEZSPECIFIC_NAMEr‘   ZSQLCODEZSQLERRORZSQLEXCEPTIONZSQLSTATEZSQLWARNINIGZSTABLEZSTARTZSTATEZ	STATEMENTZSTATICZ
STATISTICSZSTDINZSTDOUTZSTORAGEZSTRICTZ	STRUCTUREZSTYPEZSUBCLASS_ORIGINZSUBLISTZ	SUBSTRINGZSUMZ	SYMMETRICZSYSIDZSYSTEMZSYSTEM_USERZTABLEZ
TABLE_NAMEz TEMPÚTEMPLATEZ	TEMPORARYZ	TERMINATEZTHANZTHENÚ	TIMESTAMPZTIMEZONE_HOURZTIMEZONE_MINUTEZTOZTOASTZTRAILINGZ
TRANSATIONZTRANSACTIONS_COMMITTEDZTRANSACTIONS_ROLLED_BACKZTRANSATION_ACTIVEZ	TRANSFORMZ
TRANSFORMSZ	TRANSLATEZTRANSLATIONZTREATZTRIGGERZTRIGGER_CATALOGZTRIGGER_NAMEZTRIGGER_SCHEMAZTRIMZTRUEZTRUNCATEZTRUSTEDZTYPEZUNCOMMITTEDZUNDERZUNENCRYPTEDZUNIONZUNIQUEZUNKNOWNZUNLISTENZUNNAMEDZUNNESTZUNTILZUPDATEZUPPERZUSAGEZUSERZUSER_DEFINED_TYPE_CATALOGZUSER_DEFINED_TYPE_NAMEZUSER_DEFINED_TYPE_SCHEMAZUSINGZVACUUMZVALIDZ	VALIDATORZVALUESZVARIABLEÚVERBOSEZVERSIONZVIEWZVOLATILEZWHENZWHENEVERZWHEREZWITHZWITHOUTZWORKZWRITEZYEARZZONEz\b)rY   )ZARRAYZBIGINTZBINARYZBITZBLOBZBOOLEANZCHARZ	CHARACTERZDATEZDECZDECIMALZFLOATZINTZINTEGERZINTERVALÚNUMBERZNUMERICZREALZSERIALZSMALLINTZVARCHARZVARYINGZINT8ZSERIAL8ZTEXTz[+*/<>=~!@#%^&|`?-]z[0-9]+z'(''|[^'])*'z"(""|[^"])*"z[a-z_][\w$]*z[;:()\[\],.]z\*/z#popz[^/*]+z[/*])r]   zmultiline-commentsN)rM   rN   rO   rP   r^   r_   Ú	filenamesr`   ra   rb   rc   r
   r   rd   re   r   r   r   rg   r   r   rj   r   ru   r   rk   r=   r=   r=   r>   r   j  s6   
J

c               @   sV  e Zd ZdZdZddgZdgZdgZej	ej
B Zdefdejfd	ejd
feejƒefeejddejfeejddejfeejddejfdeeeejƒfeejddefdeeeeƒfdej fdej!fdej!fdej!fdej"fde#jfde#j$fde%fdej&fdej'fdeeje%ƒfdefdej'j(fgd	ejd
fdejdfdejfdejfgd œZ)d!S )"r   z«
    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-SQLZtsqlzt-sqlz*.sqlztext/x-tsqlz\s+z(?m)--.*?$\n?z/\*zmultiline-commentsz\b)rY   z(goto)(\s+)(\w+\b)z(\[)([^]]+)(\])z0x[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]   zmultiline-commentsN)*rM   rN   rO   rP   r^   r_   r¢   r`   ra   rb   ÚUNICODErc   r   r   rd   re   r   r   Z	OPERATORSr   ZOPERATOR_WORDSZWordZTYPESr   ZClassZ	FUNCTIONSÚFunctionr   r   rr   r   r   ZHexri   rj   r   ru   r   rg   rh   ZMagicrk   r=   r=   r=   r>   r   Þ  sB   


c               @   sä   e Zd ZdZdZdgZdgZejZ	de
fdejfdejdfd	ejfd
ejfdejfdejfdejfdefdeeje
eƒfdefdejfdejfdeeje
eƒfdefdejfdefgdejdfdejdfdejfdejfgdœZdS )r   z"
    Special lexer for MySQL.
    ZMySQLZmysqlztext/x-mysqlz\s+z(#|--\s+).*\n?z/\*zmultiline-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]   zmultiline-commentsN)rM   rN   rO   rP   r^   r_   r`   ra   rb   rc   r
   r   rd   re   r   rj   ri   r   ÚDoubleru   r   r   r   ZTyper   rs   r   ZConstantr¤   rh   rk   r=   r=   r=   r>   r     s:   


c               @   s.   e Zd ZdZdZdgZdgZdgZdd„ ZdS )	r    zO
    Lexer for example sessions using sqlite3.

    .. versionadded:: 0.11
    Z
sqlite3conZsqlite3z*.sqlite3-consoleztext/x-sqlite3-consolec          	   c   sþ   t f | jŽ}d}g }xÀt |¡D ]²}| ¡ }| d¡s@| d¡rv| t|ƒdtj	|d d… fgf¡ ||dd … 7 }q |r¢xt
|| |¡ƒD ]
}|V  qŒW d}g }| d¡rÀ| ¡ tj|fV  q | ¡ tj|fV  q W |rúxt
|| |¡ƒD ]
}|V  qìW d S )Nr~   zsqlite> z   ...> r   é   zSQL error: )r   rI   r   r4   r2   rJ   rK   r„   r   r…   r   r8   r6   Z	Tracebackr‰   )rB   r‹   rE   r   rŽ   r.   r   r   r=   r=   r>   r8   k  s,    


z)SqliteConsoleLexer.get_tokens_unprocessedN)	rM   rN   rO   rP   r^   r_   r¢   r`   r8   r=   r=   r=   r>   r    _  s   c               @   sr   e Zd ZdZdZdgZdgZdgZej	Z
ddefdefd	efd
ejfdejfdefdejfdejfdefg	iZdS )r!   zx
    Lexer for Relation Query Language.

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

    .. versionadded:: 2.0
    ZRQLZrqlz*.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)rM   rN   rO   rP   r^   r_   r¢   r`   ra   rb   rc   r
   r   r   r   rg   r   rj   r   rd   r   rk   r=   r=   r=   r>   r!   ‡  s"   )7rP   ra   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   r   Zpygments.lexersr   r   Zpygments.utilr   Z"pygments.lexers._postgres_builtinsr   r   r   r   r   Ú__all__Úcompiler   rb   r-   r7   r?   Úobjectr@   r   r   rt   rƒ   r†   r‡   Zre_errorrŠ   rv   r   r   r   r   r    r!   r=   r=   r=   r>   Ú<module>'   s@   4
%'8!




Jt8I(