B
    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 dddg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-2022 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ZdgZdddgZdgZe	j
Zd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-h%Zd.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLhZdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[dQhZd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddEd)dddddddddddddddddddddddhZdZdd Zdefdejfdeejeeefedgdefde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dWe dY 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dej-fdefdefdefgd Z.d!S ("  r   z<
    For the Dylan language.

    .. versionadded:: 0.7
    ZDylanzhttp://www.opendylan.org/Zdylanz*.dylanz*.dylz*.intrztext/x-dylansubclassZabstractblockZconcreteZconstantclasszcompiler-openzcompiler-sidewaysdomainZdynamiczeach-subclassZ	exceptionZexcludeZfunctionZgenericZhandlerZ	inheritedZinlinezinline-onlyinstanceZ	interfaceimportkeywordZlibraryZmacromethodmoduleopenZprimaryrequiredZsealedZsidewaysZ	singletonZslotZthreadvariableZvirtualZaboveZ
afterwardsZbeginZbelowZbyZcaseZcleanupZcreateZdefineelseZelseifendZexportfinallyforfromifinZletZlocalZ	otherwiserenameZselectsignalZthentoZunlessZuntilZuseZwhenwhile~+-*|^=z==z~=z~==<z<=>z>=&abortabsaddzadd!z
add-methodzadd-newzadd-new!zall-superclassesalwayszany?zapplicable-method?ZapplyZarefzaref-setteraszas-lowercasezas-lowercase!zas-uppercasezas-uppercase!Zashzbackward-iteration-protocolbreakZceilingzceiling/Zcerrorz
check-typeZchoosez	choose-byZ
complementZcomposeZconcatenatezconcatenate-aszcondition-format-argumentszcondition-format-stringZconjoinzcopy-sequenceZcurryzdefault-handlerZ	dimensionZ
dimensionszdirect-subclasseszdirect-superclassesZdisjoinZdozdo-handlerselementzelement-setterzempty?errorzeven?zevery?zfalse-orzfill!zfind-keyzfind-methodfirstzfirst-setterZfloorzfloor/zforward-iteration-protocolzfunction-argumentszfunction-return-valueszfunction-specializersZgcdz#generic-function-mandatory-keywordszgeneric-function-methodsheadzhead-setteridentityZ
initializez	instance?z	integral?intersectionzkey-sequencezkey-testZlastzlast-setterZlcmZlimitedlistZlogandzlogbit?ZlogiorZlognotZlogxorZmakemapzmap-aszmap-intomaxzmember?zmerge-hash-codesminZmodulonegativez	negative?znext-methodzobject-classzobject-hashzodd?zone-ofZpairpopzpop-lastz	positive?pushz	push-lastrangeZrankZrcurryreduceZreduce1Z	remainderremovezremove!zremove-duplicateszremove-duplicates!zremove-key!zremove-methodzreplace-elements!zreplace-subsequence!zrestart-queryzreturn-allowed?zreturn-descriptionzreturn-queryreversezreverse!roundzround/zrow-major-indexsecondzsecond-setterzshallow-copysizezsize-setterzslot-initialized?sortzsort!zsorted-applicable-methodszsubsequence-positionzsubtype?ztable-protocoltailztail-setterZthirdzthird-settertruncatez	truncate/ztype-error-expected-typeztype-error-valueztype-for-copyz
type-unionunionvaluesZvectorzzero?z\\?[\w!&*<>|^$%@\-+~?/=]+c             c   s   xt | |D ]\}}}|tkr| }|| jkrB|tj|fV  q|| jkrZ|t|fV  q|| jkrt|tj|fV  q|| j	kr|t
|fV  q|||fV  qW d S )N)r   get_tokens_unprocessedr   lowerbuiltinsBuiltinkeywordsr
   	functions	operatorsr	   )selftextindextokenvalueZlowercase_value ra   4lib/python3.7/site-packages/pygments/lexers/dylan.pyrU   ]   s     



z!DylanLexer.get_tokens_unprocessedz\s+z//.*?\nz)([a-z0-9-]+)(:)([ \t]*)(.*(?:\n[ \t].+)*)codez(//.*?)(\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#"z#[a-z0-9-]+:z\*z\$z[^*/]+z#pushz\*/z#popz[*/]z[^\\"]+z,\\([\\abfnrtv"\']|x[a-f0-9]{2,4}|[0-7]{1,3})z	[^\\"\n]+z\\\nz\\)rootrc   rd   r   rf   N)/__name__
__module____qualname____doc__nameZurlaliases	filenames	mimetypesre
IGNORECASEflagsrW   rY   r[   rZ   Z
valid_namerU   r   r   Singler   r   	Attributer	   r   r   Z	MultilineZCharr   ZBinZOctZFloatZIntegerZHexZTagrX   r   r   ZSymbolr
   ZClassZVariableZGlobalZConstantZEscapetokensra   ra   ra   rb   r      s   



















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-lidrh   z\s+z(//.*?)(\n)z"(.*?)(:)([ \t]*)(.*(?:\n[ \t].+)*)N)ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   r   r   r   rt   r   ru   r	   r   rv   ra   ra   ra   rb   r      s   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 | j}d}g }x| j|D ]}| }| j|}|d k	r| }|t	|dt
j|d | fgf |||d  7 }q"|rt|||E d H  d}g }| t
j|fV  q"W |rt|||E d H  d S )N r   )r   options_line_refinditergroup
_prompt_rematchr"   appendlenr   ZPromptr   rU   startZOutput)	r\   r]   ZdylexerZcurcodeZ
insertionsr}   linemr"   ra   ra   rb   rU   	  s(    
z(DylanConsoleLexer.get_tokens_unprocessedN)ri   rj   rk   rl   rm   rn   ro   rp   rq   compilery   r|   rU   ra   ra   ra   rb   r      s   

)rl   rq   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   r   __all__r   r   r   ra   ra   ra   rb   <module>	   s   4
 B