o
    ‡ÎÖa¯(  ã                   @   s¸   d Z ddl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G dd„ deƒZG dd„ deƒZG dd„ deƒZdS )zÓ
    pygments.lexers.esoteric
    ~~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for esoteric languages.

    :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    )Ú
RegexLexerÚincludeÚwordsÚbygroups)
ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚErrorÚ
Whitespace)ÚBrainfuckLexerÚBefungeLexerÚRedcodeLexerÚCAmkESLexerÚ
CapDLLexerÚ
AheuiLexerc                   @   s†   e Zd ZdZdZddgZddgZdgZdej	fd	ej
fd
ejfdefgdedfdefedƒgdedfdedfedƒgdœZdd„ ZdS )r   ze
    Lexer for the esoteric `BrainFuck <http://www.muppetlabs.com/~breadbox/bf/>`_
    language.
    Ú	BrainfuckÚ	brainfuckÚbfz*.bfz*.bzapplication/x-brainfuckz[.,]+z[+-]+z[<>]+z[^.,+\-<>\[\]]+z\[Úloopz\]Úcommonz#pushz#pop)r   Úrootr   c                 C   s�   d}d}t dt| ƒƒ}| d|… D ]}|dks|dkr|d7 }|dks'|dkr+|d7 }q|d	| kr4d
S |d	| kr<d
S d}d| v rF|d7 }|S )z]It's safe to assume that a program which mostly consists of + -
        and < > is brainfuck.r   é   Nú+ú-é   ú<ú>g      Ð?g      ð?z[-]g      à?)ÚmaxÚlen)ÚtextÚplus_minus_countÚgreater_less_countÚrange_to_checkÚcÚresult© r*   ú:/usr/lib/python3/dist-packages/pygments/lexers/esoteric.pyÚanalyse_text2   s"   €zBrainfuckLexer.analyse_textN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr
   ÚTagÚBuiltinÚVariabler   r	   r   r   Útokensr,   r*   r*   r*   r+   r      s*    ûýýór   c                   @   s€   e Zd ZdZdZdgZdgZdgZddefde	fd	e
jfd
e
jfdefde
jfdejfdejfdefdefdefdefgiZdS )r   z{
    Lexer for the esoteric `Befunge <http://en.wikipedia.org/wiki/Befunge>`_
    language.

    .. versionadded:: 0.7
    ÚBefungeÚbefungez	*.befungezapplication/x-befunger   z[0-9a-f]z	[+*/%!`-]z[<>^v?\[\]rxjk]z	[:\\$.,n]z[|_mw]z[{}]z".*?"z\'.z[#;]z[pg&~=@iotsy]z[()A-Z]ú\s+N)r-   r.   r/   r0   r1   r2   r3   r4   r   r   r
   r7   r6   r	   r5   r   ÚDoubleÚSingler   r   r8   r*   r*   r*   r+   r   L   s*    ôÿr   c                   @   sÞ   e Zd ZdZdZddgZddgZddeee	j
eƒfd	efd
e	fde	fdefdefeddd�efeddd�ejfdejfeddd�ejfdee	j
ee	j
ƒfdee	j
ee	j
ƒfdejfdefdejfdefdejfdefgiZdS )r   z�
    Basic lexer for the input language for the
    `CAmkES <https://sel4.systems/CAmkES/>`_ component platform.

    .. versionadded:: 2.1
    ÚCAmkESÚcamkesÚidl4z*.camkesz*.idl4r   ú^(\s*)(#.*)(\n)r;   ú/\*(.|\n)*?\*/z//.*$z[\[(){},.;\]]z[~!%^&*+=|?:<>/-])"ÚassemblyÚ	attributeÚ	componentÚcompositionÚconfigurationÚ
connectionÚ	connectorÚconsumesÚcontrolÚdataportÚDataportÚ	DataportsÚemitsÚeventÚEventÚEventsÚexportÚfromÚgroupÚhardwareÚhasÚ	interfaceÚ	InterfaceÚmaybeÚ	procedureÚ	ProcedureÚ
ProceduresÚprovidesÚtemplateÚthreadÚthreadsÚtoÚusesÚwithú\b©Úsuffix)ÚboolÚbooleanÚBufÚcharÚ	characterÚdoubleÚfloatÚinÚinoutÚintÚint16_6Úint32_tÚint64_tÚint8_tÚintegerÚmutexÚoutÚrealÚrefinÚ	semaphoreÚsignedÚstringÚstructÚuint16_tÚuint32_tÚuint64_tÚuint8_tÚ	uintptr_tÚunsignedÚvoidz%[a-zA-Z_]\w*_(priority|domain|buffer))Údma_poolÚfrom_accessÚ	to_accessz#(import)(\s+)((?:<[^>]*>|"[^"]*");)z$(include)(\s+)((?:<[^>]*>|"[^"]*");)ú0[xX][\da-fA-F]+z-?[\d]+z-?[\d]+\.[\d]+z"[^"]*"z[Tt]rue|[Ff]alsez[a-zA-Z_]\w*N)r-   r.   r/   r0   r1   r2   r3   r   r   r   ÚPreprocr   r   r   r	   ÚTypeÚReservedr   ÚHexÚFloatr   r
   r6   r8   r*   r*   r*   r+   r   j   sT    
ÿùù	úú	
ÿÿÿÍÿr   c                   @   s´   e Zd ZdZdZdgZdgZddeee	j
eƒfdefde	fd	e	fd
efdefeddd�efeddd�ejfeddd�ejfdejfdefeddd�efeddd�efdefgiZdS )r   a=  
    Basic lexer for
    `CapDL <https://ssrg.nicta.com.au/publications/nictaabstracts/Kuz_KLW_10.abstract.pml>`_.

    The source of the primary tool that reads such specifications is available
    at https://github.com/seL4/capdl/tree/master/capDL-tool. Note that this
    lexer only supports a subset of the grammar. For example, identifiers can
    shadow type names, but these instances are currently incorrectly
    highlighted as types. Supporting this would need a stateful lexer that is
    considered unnecessarily complex for now.

    .. versionadded:: 2.2
    ÚCapDLÚcapdlz*.cdlr   rA   r;   rB   z
(//|--).*$z[<>\[(){},:;=\]]z\.\.)ÚarchÚarm11ÚcapsÚchild_ofÚia32ÚirqÚmapsÚobjectsre   rf   )ÚaepÚ	asid_poolÚcnodeÚepÚframeÚ	io_deviceÚio_portsÚio_ptÚnotificationÚpdÚptÚtcbÚutÚvcpu)ÚasidÚaddrÚbadgeÚcachedÚdomÚdomainIDÚelfÚfault_epÚGÚguardÚ
guard_sizeÚinitÚipÚprioÚspÚRÚRGÚRXÚRWÚRWGÚRWXÚWÚWGÚWXÚlevelÚmaskedÚmaster_replyÚpaddrÚportsÚreplyÚuncachedr‰   z\d+(\.\d+)?(k|M)?)Úbits)ÚcspaceÚvspaceÚ
reply_slotÚcaller_slotÚipc_buffer_slotz[a-zA-Z_][-@\.\w]*N)r-   r.   r/   r0   r1   r2   r3   r   r   r   rŠ   r   r   r	   r‹   rŒ   r   r�   r
   r8   r*   r*   r*   r+   r   ®   sP    ÿÿÿþþüûÿÿÜÿr   c                   @   s‚   e Zd ZdZdZdgZdgZdZdZdde	fd	e
jfd
d e¡ ejfd
d e¡ ejfdefdefdefdefdejfg	iZdS )r   z‚
    A simple Redcode lexer based on ICWS'94.
    Contributed by Adam Blinkinsop <blinks@acm.org>.

    .. versionadded:: 0.8
    ÚRedcodeÚredcodez*.cw)ÚDATÚMOVÚADDÚSUBÚMULÚDIVÚMODÚJMPÚJMZÚJMNÚDJNÚCMPÚSLTÚSPLÚORGÚEQUÚEND)ÚAÚBÚABÚBAÚFÚXÚIr   r;   z;.*$z\b(%s)\bú|z[A-Za-z_]\w+z[-+*/%]z[#$@<>]z[.,]z[-+]?\d+N)r-   r.   r/   r0   r1   r2   r3   ÚopcodesÚ	modifiersr   r   r=   Újoinr
   ÚFunctionÚ	Decoratorr   r   r   ÚIntegerr8   r*   r*   r*   r+   r   ê   s&    òÿr   c                   @   s4   e Zd ZdZdZdgZdgZddefdefgiZ	dS )	r   z|
    Aheui_ Lexer.

    Aheui_ is esoteric language based on Korean alphabets.

    .. _Aheui: http://aheui.github.io/

    ÚAheuiÚaheuiz*.aheuir   uá  [ë‚˜-ë‚³ëƒ�-ëƒ«ë„ˆ-ë„£ë…€-ë…›ë…¸-ë†“ë‡¨-ëˆŸë‰´-ë‹‡ë‹¤-ë‹¿ëŒœ-ëŒ·ë�”-ë�¯ëŽŒ-ëŽ§ë�„-ë�Ÿë�´-ë‘«ë“€-ë”“ë”°-ë•‹ë•¨-ë–ƒë– -ë–»ë—˜-ë—³ë˜�-ë˜«ëš€-ëš·ëœŒ-ë�Ÿë�¼-ëž—ëž´-ëŸ�ëŸ¬-ë ‡ë ¤-ë ¿ë¡œ-ë¡·ë£Œ-ë¤ƒë¥˜-ë¦«ë§ˆ-ë§£ë¨€-ë¨›ë¨¸-ë©“ë©°-ëª‹ëª¨-ë«ƒë¬˜-ë­�ë®¤-ë¯·ë°”-ë°¯ë±Œ-ë±§ë²„-ë²Ÿë²¼-ë³—ë³´-ë´�ëµ¤-ë¶›ë·°-ë¹ƒë¹ -ë¹»ëº˜-ëº³ë»�-ë»«ë¼ˆ-ë¼£ë½€-ë½›ë¾°-ë¿§ì€¼-ì‚�ì‚¬-ìƒ‡ìƒ¤-ìƒ¿ì„œ-ì„·ì…”-ì…¯ì†Œ-ì†§ì‡¼-ìˆ³ìŠˆ-ì‹›ì‹¸-ìŒ“ìŒ°-ì�‹ì�¨-ìŽƒìŽ -ìŽ»ì�˜-ì�³ì‘ˆ-ì‘¿ì“”-ì”§ìž�-ìž«ìŸˆ-ìŸ£ì €-ì ›ì ¸-ì¡“ì¡°-ì¢‹ì£ -ì¤—ì¥¬-ì¦¿ì°¨-ì±ƒì± -ì±»ì²˜-ì²³ì³�-ì³«ì´ˆ-ì´£ìµ¸-ì¶¯ì¸„-ì¹—ì¹´-ìº�ìº¬-ì»‡ì»¤-ì»¿ì¼œ-ì¼·ì½”-ì½¯ì¿„-ì¿»í��-í‚£íƒ€-íƒ›íƒ¸-í„“í„°-í…‹í…¨-í†ƒí† -í†»íˆ�-í‰‡íŠœ-í‹¯íŒŒ-íŒ§í�„-í�Ÿí�¼-íŽ—íŽ´-í��í�¬-í�‡í‘œ-í’“í“¨-í”»í•˜-í•³í–�-í–«í—ˆ-í—£í˜€-í˜›í˜¸-í™“íš¨-í›Ÿíœ´-íž‡]Ú.N)
r-   r.   r/   r0   r1   r2   r3   r   r   r8   r*   r*   r*   r+   r     s    	ðîÿr   N)r0   Úpygments.lexerr   r   r   r   Úpygments.tokenr   r   r   r	   r
   r   r   r   r   r   Ú__all__r   r   r   r   r   r   r*   r*   r*   r+   Ú<module>   s    
09D<$