o
    ‡ÎÖa¥(  ã                   @   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 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-2021 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Ú
Whitespace)Ú
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ejeƒ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d0ej&fgded.fd1ej,fd2efd3efd4efgd5œZ-d6S )7r   z[
    For the `Dylan <http://www.opendylan.org/>`_ language.

    .. versionadded:: 0.7
    ÚDylanÚdylan)z*.dylanz*.dylz*.intrztext/x-dylan>%   úinline-onlyúcompiler-openúeach-subclassúcompiler-sidewaysÚopenÚslotÚblockÚclassÚmacroÚdomainÚimportÚinlineÚmethodÚmoduleÚsealedÚthreadÚdynamicÚexcludeÚgenericÚhandlerÚkeywordÚlibraryÚprimaryÚvirtualÚabstractÚconcreteÚconstantÚfunctionÚinstanceÚrequiredÚsidewaysÚsubclassÚvariableÚ	exceptionÚ	inheritedÚ	interfaceÚ	singleton>   ÚbyÚifÚinÚtoÚendÚforÚletÚuseÚcaseÚelseÚfromÚthenÚwhenÚaboveÚbeginÚbelowÚlocalÚuntilÚwhileÚcreateÚdefineÚelseifÚexportÚrenameÚselectÚsignalÚunlessÚcleanupÚfinallyÚ	otherwiseÚ
afterwards>   ú<=ú==ú>=ú~=ú~==Ú*ú&ú+ú-ú<ú=ú>ú^ú|ú~>ž   úadd!úany?úodd?úeven?úfill!úsort!úzero?úempty?úevery?úfloor/úmap-asúone-ofúround/úadd-newúlogbit?úmember?úremove!úadd-new!úceiling/úfalse-orúfind-keyúkey-testúmap-intoúpop-lastúreverse!úsubtype?ú	choose-byú	instance?ú	integral?ú	negative?ú	positive?ú	push-lastú	truncate/ú
add-methodú
check-typeú
type-unionúaref-setterúdo-handlersúfind-methodúhead-setterúlast-setterúnext-methodúobject-hashúremove-key!úsize-setterútail-setterúas-lowercaseúas-uppercaseúfirst-setterúkey-sequenceúobject-classúreturn-queryúshallow-copyúthird-setterúas-lowercase!úas-uppercase!úcopy-sequenceúremove-methodúrestart-queryúsecond-setterútype-for-copyúconcatenate-asúelement-setterútable-protocolúdefault-handlerúreturn-allowed?úrow-major-indexúall-superclassesúmerge-hash-codesútype-error-valueúdirect-subclassesúremove-duplicatesúreplace-elements!úslot-initialized?úapplicable-method?úfunction-argumentsúremove-duplicates!úreturn-descriptionúdirect-superclassesúreplace-subsequence!úsubsequence-positionúfunction-specializersúfunction-return-valuesúcondition-format-stringúgeneric-function-methodsútype-error-expected-typeúsorted-applicable-methodsúcondition-format-argumentsúforward-iteration-protocolúbackward-iteration-protocolú#generic-function-mandatory-keywordsÚasÚdoÚabsÚaddÚashÚgcdÚlcmÚmapÚmaxÚminÚpopÚarefÚheadÚlastÚlistÚmakeÚpairÚpushÚrankÚsizeÚsortÚtailÚabortÚapplyÚbreakÚcurryÚerrorÚfirstÚfloorÚrangeÚroundÚthirdÚunionÚalwaysÚcerrorÚchooseÚlogandÚlogiorÚlognotÚlogxorÚmoduloÚrcurryÚreduceÚremoveÚsecondrU   ÚvaluesÚvectorÚceilingÚcomposeÚconjoinÚdisjoinÚelementÚlimitedÚreduce1ÚreverseÚidentityÚnegativeÚtruncateÚ	dimensionÚ	remainderr;   Ú
complementÚ
dimensionsÚ
initializeÚconcatenateÚintersectionz\\?[\w!&*<>|^$%@\-+~?/=]+c                 c   sž   � t  | |¡D ]E\}}}|tu rF| ¡ }|| jv r!|tj|fV  q|| jv r-|t|fV  q|| jv r:|tj|fV  q|| j	v rF|t
|fV  q|||fV  qd S )N)r   Úget_tokens_unprocessedr   ÚlowerÚbuiltinsÚBuiltinÚkeywordsr
   Ú	functionsÚ	operatorsr	   )ÚselfÚtextÚindexÚtokenÚvalueÚlowercase_value© r  ú7/usr/lib/python3/dist-packages/pygments/lexers/dylan.pyr  \   s$   €



ñz!DylanLexer.get_tokens_unprocessedú\s+z//.*?\nz)([a-z0-9-]+)(:)([ \t]*)(.*(?:\n[ \t].+)*)Úcodeú(//.*?)(\n)z/\*Ú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-]+ú:rd   rf   z\*z\$z[^*/]+z#pushz\*/z#popz[*/]z[^\\"]+z,\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})z	[^\\"\n]+z\\\nz\\)Úrootr  r  r+   r  N).Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesÚreÚ
IGNORECASEÚflagsr  r
  r  r  Ú
valid_namer  r   r   ÚSingler   r   Ú	Attributer	   r   r   Ú	MultilineÚCharr   ÚBinÚOctÚFloatÚIntegerÚHexÚTagr	  r   r   ÚSymbolr
   ÚClassÚVariableÚGlobalÚConstantÚEscapeÚtokensr  r  r  r  r      s~    	$ÿõ

þÿ

¾E

ü
þû
¤r   c                	   @   s^   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ejeƒ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
    ÚDylanLIDz	dylan-lidÚlidz*.lidz*.hdpztext/x-dylan-lidr  r  r  z"(.*?)(:)([ \t]*)(.*(?:\n[ \t].+)*)N)r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r   r   r   r)  r   r*  r	   r   r9  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 di | j¤Ž}d}g }| j |¡D ]I}| ¡ }| j |¡}|d urB| ¡ }| t	|ƒdt
j|d |… fgf¡ |||d … 7 }q|rSt|| |¡ƒE d H  d}g }| ¡ t
j|fV  q|rlt|| |¡ƒE d H  d S d S )NÚ r   r  )r   ÚoptionsÚ_line_reÚfinditerÚgroupÚ
_prompt_reÚmatchr@   ÚappendÚlenr   ÚPromptr   r  ÚstartÚOutput)	r  r  ÚdylexerÚcurcodeÚ
insertionsrB  ÚlineÚmr@   r  r  r  r    s2   €
ÿ
ÿÿÿz(DylanConsoleLexer.get_tokens_unprocessedN)r  r  r  r   r!  r"  r#  r$  r%  Úcompiler>  rA  r  r  r  r  r  r   ñ   s    

r   )r   r%  Úpygments.lexerr   r   r   r   r   Úpygments.tokenr   r   r	   r
   r   r   r   r   r   r   r   Ú__all__r   r   r   r  r  r  r  Ú<module>   s    
4 A