U
    luf                     @   sp   d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddgZG dd deZG dd deZd	S )
z
    pygments.lexers.pawn
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for the Pawn languages.

    :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )
RegexLexer)TextCommentOperatorKeywordNameStringNumberPunctuation)get_bool_optSourcePawnLexer	PawnLexerc                N   @   s  e Zd ZdZdZdgZdgZdgZdZdZ	de
jd	fd
e
jdfde	 d e
jd	fde	 d e
jdfdefdefdefde
jfde
jfdefded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fdefd ejfd!ejfd"efgd#ed$fd%ejfd&efdefd'efgd(e
jfd)e
jfd*e
jd$fd+e
jfd,e
jfde
jd$fgd-e
jd.fd/e
jd$fd0e
fgd1Zd2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdId2dJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~hNZdd Zdd Z dS )r   z]
    For SourcePawn source code with preprocessor directives.

    .. versionadded:: 1.6
    Z
SourcePawnspz*.spztext/x-sourcepawnz(?:\s|//.*?\n|/\*.*?\*/)+\s*(?:/[*].*?[*]/\s*)*^#if\s+0if0^#macro^#if\s+0#\n\s+\\\n/(\\\n)?/(\n|(.|\n)*?[^\\]\n)z/(\\\n)?\*(.|\n)*?\*(\\\n)?/[{}]L?"string4L?'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])''(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*(\d+\.\d*|\.\d+|\d+[fF])[fF]?0x[0-9a-fA-F]+[LlUu]*0[0-7]+[LlUu]*
\d+[LlUu]*[~!%^&*+=|?:<>/-][()\[\],.;]zs(case|const|continue|native|default|else|enum|for|if|new|operator|public|return|sizeof|static|decl|struct|switch)\b(bool|Float)\b(true|false)\b[a-zA-Z_]\w*"#pop/\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})	[^\\"\n]+\\[^/\n]+/\*(.|\n)*?\*///.*?\n/	(?<=\\)\n^\s*#if.*?(?<!\\)\n#push^\s*#endif.*?(?<!\\)\n.*?\nrootr   r   r   ActionboolFloatZPluginr   anyZ	AdminFlagZOverrideTypeZOverrideRuleZImmunityTypeZGroupIdZAdminIdZAdmAccessModeZAdminCachePartZCookieAccessZ
CookieMenuZCookieMenuActionZNetFlowZConVarBoundsZQueryCookieZReplySourceZConVarQueryResultZConVarQueryFinishedZFunctionZIdentityZPluginStatusZ
PluginInfoZDBResultZ
DBBindTypeZ
DBPriorityZPropTypeZPropFieldTypeZMoveTypeZ
RenderModeZRenderFxZEventHookModeZ	EventHookFileTypeZFileTimeModeZPathTypeZ	ParamTypeZExecTypeZ
DialogTypeHandleZKvDataTypesZNominateResultZ	MapChangeZ	MenuStyleZ
MenuActionZ
MenuSourceZ
RegexErrorZSDKCallTypeZ
SDKLibraryZSDKFuncConfSourceZSDKTypeZSDKPassMethodZRayTypeZTraceEntityFilterZListenOverrideZ	SortOrderZSortTypeZ
SortFunc2DZAPLResZFeatureTypeZFeatureStatusZ	SMCResultZSMCErrorZTFClassTypeZTFTeamZTFCondZTFResourceTypeTimerZTopMenuActionZTopMenuObjectTypeZTopMenuPositionZTopMenuObjectZUserMsgc                 K   sF   t |dd| _t | _| jr4ddlm} | j| tj| f| d S )NZ	sourcemodTr   )	FUNCTIONS)	r   smhighlightingset
_functionsZ#pygments.lexers._sourcemod_builtinsr@   updater   __init__)selfoptionsr@    rH   8/tmp/pip-unpacked-wheel-7eq1ciah/pygments/lexers/pawn.pyrE   k   s     zSourcePawnLexer.__init__c                 c   sX   t | |D ]F\}}}|tkrF| jrF|| jkr6tj}n|| jkrFtj}|||fV  qd S )N)	r   get_tokens_unprocessedr   rA   SM_TYPESr   TyperC   ZBuiltin)rF   textindextokenvaluerH   rH   rI   rJ   u   s    


z&SourcePawnLexer.get_tokens_unprocessedN)!__name__
__module____qualname____doc__namealiases	filenames	mimetypes_ws_ws1r   Preprocr   Single	Multiliner
   r   Charr	   r;   HexOctIntegerr   r   rL   Constantr   EscapetokensrK   rE   rJ   rH   rH   rH   rI   r      s   



	

4                                                      
c                   @   sx  e Zd ZdZdZdgZdddgZdgZdZd	Z	d
e
jdfde
jdfde	 d e
jdfde	 d e
jdfdefdefdefde
jfde
jfdefded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fd!efd"ejfd#ejfd$efgd%ed&fd'ejfd(efdefd)efgd*e
jfd+e
jfd,e
jd&fd-e
jfd.e
jfde
jd&fgd/e
jd0fd1e
jd&fd2e
fgd3Zd4d5 Zd6S )7r   z:
    For Pawn source code.

    .. versionadded:: 2.0
    ZPawnZpawnz*.pz*.pwnz*.incztext/x-pawnz (?:\s|//.*?\n|/[*][\w\W]*?[*]/)+r   r   r   r   r   r   r   r   r   r   r   r   z/(\\\n)?\*[\w\W]*?\*(\\\n)?/r   r   r   r   r   r    r!   r"   r#   r$   r%   z(switch|case|default|const|new|static|char|continue|break|if|else|for|while|do|operator|enum|public|return|sizeof|tagof|state|goto)\br&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   c                 C   s   d| krdS dS )zvThis is basically C. There is a keyword which doesn't exist in C
        though and is nearly unique to this language.Ztagofg{Gz?NrH   )rM   rH   rH   rI   analyse_text   s    zPawnLexer.analyse_textN)rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r   r[   r   r\   r]   r
   r   r^   r	   r;   r_   r`   ra   r   r   rL   rb   r   rc   rd   re   rH   rH   rH   rI   r      sh   




	

4N)rT   Zpygments.lexerr   Zpygments.tokenr   r   r   r   r   r   r	   r
   Zpygments.utilr   __all__r   r   rH   rH   rH   rI   <module>   s   
(n