a
    ;@b(                     @   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
    ZDylanZdylan)z*.dylanz*.dylz*.intrztext/x-dylan>%   	singletonZmacroimportZdynamicrequiredzcompiler-sidewaysZsealedZconstantZhandlerfunctionZvirtualopenZlibraryZabstractZexcludezcompiler-openkeywordvariableZprimaryblockZ	inheritedinstanceZconcrete	exceptionzeach-subclassZ	interfacemethodthreadclassZsidewayszinline-onlydomainsubclassmoduleZgenericZinlineZslot>   ZcaseendZ	otherwiseinZthenZselectZaboveZusewhilerenameZexportZ
afterwardstosignalZwhenZuntilfinallyZbelowZelseifZbyZbeginfromZdefineZcreateelseZunlessifforlocalZletZcleanup>   |z~=><=z==z<=^z>=*-+z~==&~>   elementzforward-iteration-protocolzaref-setterzas-uppercaseZrcurryZ	remainderzslot-initialized?Zapplyzfill!zremove-methodzfind-keyZcomposez	truncate/Zconjoinzfind-methodzconcatenate-aszmerge-hash-codeszobject-classztype-error-expected-typeZreduce1z	negative?zelement-setterzdirect-superclassesZlogiorz	integral?reducezeven?zadd-new!listzlogbit?ZmoduloZlimitedzapplicable-method?z
check-typez#generic-function-mandatory-keywordsZfloorzremove-duplicates!reverseerrorZdoz
type-unionzadd-newZlcmzsubsequence-positionZlogandidentityzreverse!ZlognotabortZconcatenatesortzfunction-argumentszround/zreplace-elements!zas-lowercasetailzdo-handlerszthird-setterzsubtype?thirdzmap-intoabszsort!z	choose-byZcurryzall-superclassesZcerrormapZlogxorheadminzodd?zreturn-queryzceiling/zempty?zgeneric-function-methodszfloor/Zgcdpopr   zremove-key!ztail-settervalueszadd!breakzfunction-return-valuesZ
initializezreturn-allowed?zkey-sequenceznext-methodzany?Zmakesizezcondition-format-stringintersectionZ	dimensionzevery?Zashzsorted-applicable-methodsztable-protocolrangezlast-setterzhead-setterZlastzfalse-ortruncatezreplace-subsequence!zmap-aszobject-hashzremove!zsecond-setterzdirect-subclasseszas-uppercase!Z
dimensionsZchoosezkey-testz	instance?zcondition-format-argumentszdefault-handlerZceilingunionzpop-lastzzero?zrow-major-indexzreturn-descriptionzsize-setterzshallow-copyZpairZvectormaxzrestart-queryZranknegativeroundzone-ofr*   z	push-lastzfunction-specializerszremove-duplicateszbackward-iteration-protocolpushalwaysZdisjoinzfirst-setteraddzmember?ztype-for-copyasZarefz	positive?ztype-error-valuez
add-methodzcopy-sequencezas-lowercase!secondZ
complementfirstremovez\\?[\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 rg   4lib/python3.9/site-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-]+:r3   r2   z\*z\$z[^*/]+z#pushz\*/z#popz[*/]z[^\\"]+z,\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})z	[^\\"\n]+z\\\nz\\)rootrj   rl   r   rn   N).__name__
__module____qualname____doc__namealiases	filenames	mimetypesre
IGNORECASEflagsr]   r_   ra   r`   Z
valid_namer[   r   r   Singler   r   	Attributer	   r   r   Z	MultilineZCharr   ZBinZOctZFloatZIntegerZHexZTagr^   r   r   ZSymbolr
   ZClassZVariableZGlobalZConstantZEscapetokensrg   rg   rg   rh   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
    ZDylanLIDz	dylan-lidZlidz*.lidz*.hdpztext/x-dylan-lidrp   ri   rk   z"(.*?)(:)([ \t]*)(.*(?:\n[ \t].+)*)N)rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r   r   r   r|   r   r}   r	   r   r~   rg   rg   rg   rh   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$|rt|||E d H  d}g }| t
j|fV  q$|rt|||E d H  d S )N r   )r   options_line_refinditergroup
_prompt_rematchr%   appendlenr   ZPromptr   r[   startZOutput)	rb   rc   ZdylexerZcurcodeZ
insertionsr   linemr%   rg   rg   rh   r[     s.    

z(DylanConsoleLexer.get_tokens_unprocessedN)rq   rr   rs   rt   ru   rv   rw   rx   ry   compiler   r   r[   rg   rg   rg   rh   r      s   

r   )rt   ry   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   r   __all__r   r   r   rg   rg   rg   rh   <module>   s   
4 A