a
    ÛËU_^(  ã                   @   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 g d¢ZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZdS )zÍ
    pygments.lexers.dylan
    ~~~~~~~~~~~~~~~~~~~~~

    Lexers for the Dylan language.

    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)ÚLexerÚ
RegexLexerÚbygroupsÚdo_insertionsÚdefault)
ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚGenericÚLiteral)Ú
DylanLexerÚDylanConsoleLexerÚDylanLidLexerc                   @   sÐ  e Zd ZdZdZdgZg d¢ZdgZej	Z
h d£Zh d£Zh d£Zh d	£Zd
Zdd„ Zdefdejfdeejeeeƒfedƒgdefdejfdejd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 d eej"eej#ƒfdeej"eej#ƒfde ej"fde$fd efd!e%fd"ej&d#fd$e'fed% e'fd&e d' ej(fd(e d( ej)j*fd)e ej+feefgd*ejfdejd+fd,ejd-fd.ejfgdej&d-fd/ej&fgded-fd0ej,fd1efd2efd3efgd4œZ-d5S )6r   z[
    For the `Dylan <http://www.opendylan.org/>`_ language.

    .. versionadded:: 0.7
    ZDylanZdylan)z*.dylanz*.dylz*.intrztext/x-dylan>%   ÚmoduleZslotzinline-onlyÚinstanceZconcreteZmacroÚmethodÚblockZdomainZvirtualZ	inheritedzeach-subclassZdynamicZsidewaysÚclassZconstantÚ	singletonZexcludeZfunctionZ	exceptionZ	interfaceZinlineZrequiredÚopenZabstractZsealedZhandlerZlibraryÚimportZprimaryÚkeywordzcompiler-sidewaysÚsubclasszcompiler-openÚthreadZvariableZgeneric>   ÚsignalZelseifZcreateZ
afterwardsZcaseÚinÚelseÚtoZdefineZbeginZunlessÚfinallyZwhenÚifÚforZuntilÚendZlocalÚfromZcleanupZletZaboveZbelowÚrenameZ	otherwiseZexportZbyZthenZuseZselectÚwhile>   z~=ú^ú+Ú*z>=ú&ú~ú=ú|ú>z<=ú-ú<z==z~==>ž   z	choose-byzfind-keyzobject-classzadd-newÚtailztype-for-copyZidentityzadd!ZlognotZmoduloztail-setterz	push-lastZ	remainderzcondition-format-argumentsZcomposeÚremoveZrcurryZpairzdo-handlersz	negative?ZlimitedZlogandZceilingZlcmÚfirstz
add-methodzsubsequence-positionzfunction-return-valueszhead-setterzodd?zshallow-copyzlast-setterzslot-initialized?zmerge-hash-codesÚlistznext-methodÚsortzsubtype?Zreduce1Zgcdzas-lowercase!zsorted-applicable-methodsZlogxorÚreverseÚsecondzeven?ZlogiorÚsizeZ
dimensionsZchoosez
check-typezconcatenate-aszfill!Zfloorzreturn-descriptionzsecond-setterÚrangeZmakezremove-duplicatesÚroundZthirdzpop-lastzelement-setterÚpushz	positive?Zrankztable-protocolZ	dimensionz	truncate/zevery?Úintersectionz#generic-function-mandatory-keywordszfirst-setterzrestart-queryzfunction-argumentszmember?zcondition-format-stringZdozfloor/zreplace-subsequence!ZdisjoinZcurryzany?zceiling/zkey-sequenceZarefZlastzfalse-orzas-lowercasezreplace-elements!z	instance?zsize-setterzreverse!Úaszsort!Z
complementÚabortzaref-setterÚerrorzfunction-specializersÚunionztype-error-expected-typezbackward-iteration-protocolzone-ofÚelementZconcatenatezreturn-queryZcerrorzremove!ÚreduceÚabszgeneric-function-methodszremove-methodzdefault-handlerÚalwaysr   z	integral?Únegativezthird-setterzcopy-sequenceZ
initializezas-uppercase!zfind-methodzreturn-allowed?zall-superclasseszadd-new!zmap-aszzero?ÚminZconjoinÚmapÚpopÚaddzlogbit?zrow-major-indexr   zkey-testÚtruncateZapplyztype-error-valuezapplicable-method?Zashz
type-unionÚheadzforward-iteration-protocolzas-uppercasezremove-key!zempty?zmap-intozobject-hashzremove-duplicates!zround/zdirect-subclassesZvectorÚmaxzdirect-superclassesÚvaluesÚbreakz\\?[\w!&*<>|^$%@\-+~?/=]+c                 c   sœ   t  | |¡D ]Š\}}}|tu rŠ| ¡ }|| jv r@|tj|fV  q|| jv rX|t|fV  q|| jv rr|tj|fV  q|| j	v rŠ|t
|fV  q|||fV  qd S )N)r   Úget_tokens_unprocessedr   ÚlowerÚbuiltinsÚBuiltinÚkeywordsr
   Ú	functionsÚ	operatorsr	   )ÚselfÚtextÚindexÚtokenÚvalueZlowercase_value© r^   ú7/usr/lib/python3/dist-packages/pygments/lexers/dylan.pyrR   ]   s     



z!DylanLexer.get_tokens_unprocessedú\s+ú//.*?\nz)([a-z0-9-]+)(:)([ \t]*)(.*(?:\n[ \t].+)*)Úcodez/\*Úcommentú"Ústringz/'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\\'\n])'z#b[01]+z#o[0-7]+z0[-+]?(\d*\.\d+(e[-+]?\d+)?|\d+(\.\d*)?e[-+]?\d+)z[-+]?\d+z#x[0-9a-f]+z(\?z6)(:)(token|name|variable|expression|body|case-body|\*)z9(\?)(:)(token|name|variable|expression|body|case-body|\*)z\?z,(=>|::|#\(|#\[|##|\?\?|\?=|\?|[(){}\[\],.;])z:=z#[tf]z#"r   z#[a-z0-9-]+ú:r3   r1   z\*z\$z[^*/]z#pushz\*/z#popz[*/]z[^\\"]+z,\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})z	[^\\"\n]+z\\\nz\\)Úrootrb   rc   r   re   N).Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚreÚ
IGNORECASEÚflagsrT   rV   rX   rW   Z
valid_namerR   r   r   ÚSingler   r   Ú	Attributer	   r   r   Z	MultilineZCharr   ZBinZOctZFloatZIntegerZHexZTagrU   r   r   ZSymbolr
   ZClassZVariableZGlobalZConstantZEscapeÚtokensr^   r^   r^   r_   r      s|   	$ÿõ

þÿ

¾E

ü
þû¤r   c                	   @   sX   e Zd ZdZdZddgZddgZdgZej	Z
dd	efd
ejfdeejeeeƒfgiZdS )r   zZ
    For Dylan LID (Library Interchange Definition) files.

    .. versionadded:: 1.6
    ZDylanLIDz	dylan-lidZlidz*.lidz*.hdpztext/x-dylan-lidrg   r`   ra   z"(.*?)(:)([ \t]*)(.*(?:\n[ \t].+)*)N)rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   r   r   rs   r   r   rt   r	   r   ru   r^   r^   r^   r_   r   Õ   s   ÿøÿr   c                   @   sD   e Zd ZdZdZddgZdgZdgZe 	d¡Z
e 	d¡Zd	d
„ ZdS )r   zä
    For Dylan interactive console output like:

    .. sourcecode:: dylan-console

        ? let a = 1;
        => 1
        ? a
        => 1

    This is based on a copy of the RubyConsoleLexer.

    .. versionadded:: 1.6
    zDylan sessionzdylan-consolez
dylan-replz*.dylan-consoleztext/x-dylan-consolez.*?
z\?| c           	   	   c   sÖ   t f i | j¤Ž}d}g }| j |¡D ]’}| ¡ }| j |¡}|d ur‚| ¡ }| t	|ƒdt
j|d |… fgf¡ |||d … 7 }q$|r¤t|| |¡ƒE d H  d}g }| ¡ t
j|fV  q$|rÒt|| |¡ƒE d H  d S )NÚ r   )r   ZoptionsÚ_line_reÚfinditerÚgroupÚ
_prompt_reÚmatchr&   ÚappendÚlenr   ZPromptr   rR   ÚstartZOutput)	rY   rZ   ZdylexerZcurcodeZ
insertionsr{   ÚlineÚmr&   r^   r^   r_   rR   	  s.    
ÿÿ
ÿz(DylanConsoleLexer.get_tokens_unprocessedN)rh   ri   rj   rk   rl   rm   rn   ro   rp   Úcompilerw   rz   rR   r^   r^   r^   r_   r   ò   s   

r   )rk   rp   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   Ú__all__r   r   r   r^   r^   r^   r_   Ú<module>   s   
0 A