U
    YSh^                     @   s   d Z ddlZddlmZ ddlmZmZmZ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 ddlmZ dgZG dd deZdS )	z
    pygments.lexers.mojo
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Mojo and related languages.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)	unistring)
RegexLexerbygroupscombineddefaultincludethisusingwords)	CommentKeywordNameNumberOperatorPunctuationStringText
Whitespaceshebang_matches	MojoLexerc                &   @   s  e Zd ZdZdZdZddgZddgZdd	gZd
Z	de
j de
j dZdd Zdd Zdefdeeejejfdeeejejfdejfdejfdefdefededdeeedfdeeedfdeeedfd eeedfd!eeed"fd#eeed$fd%eeed$fd&eejed'fd(eejed)fed*gd+eejejed,d-fd.eejejed,d/fd0eejejed,d1fd2eejejed,d3fd4eejejed5d-fd6eejejed5d/fd7eejejed5d1fd8eejejed5d3fd9eejejd:fd;eejejd<fd=eejejd>fd?eejejd@fdAeejejedBd:fdCeejejedBd<fdDeejejedBd>fdEeejejedBd@fdFeejejedGd:fdHeejejedGd<fdIeejejedGd>fdJeejejedGd@fdKefedLdMefdNefdOej fedPedQedRedSedTgdUedVfdWej!dXfdYej!dXfdefed*gdUedVfdZedXfdefed*ge"d[d\d]efe"d^d\d]ej#fge"d_d\d]efe"d^d\d]ej#fgd`da$dbdc e%j&D  dd eeedefgdfeee'e(efe)dXge"dgdhd\die*j+fdje*j+j,fe"dkdhd\die*j-fge"dld\d]e*j.j/fge"dmd\d]e*j0j/fgdne1j2fdoe1j2fdpe1j3fdqe1j4fdre1j5fdse1j6fgdte e*j7fdtefee*fgee*j0dXfgedRee*j.dXfe)dXgee*j8dXfgee*j9dXfgdueeeefdve*jfee*jfdweeeefe)dXgdxeeejdXfdve*jfdyej#dXfee*jfe)dXgdzej:fd{ej:fged,edBgd|ej:fgd}ej:fedGgeejeejeejeejd~ejdXfdej:fedgdejdXfdej:fedgd~ejdXfdej:fedgdejdXfdej:fedgdejdXfeddejfgdejdXfeddejfgdejdXfeddejfgdejdXfeddejfgd#Z;dd Z<dS )r   z0
    For Mojo source code (version 24.2.1).
    Mojozhttps://docs.modular.com/mojo/mojou   🔥z*.mojou   *.🔥ztext/x-mojozapplication/x-mojoz2.18[z][z]*c                 C   s&   dt jfdt jfd| fd| fd| fgS )NzH%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsaux%]zg\{((\w+)((\.\w+)|(\[[^\]]+\]))*)?(\![sra])?(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?\}z[^\\\'"%{\n]+[\'"\\]z%|(\{{1,2})r   Interpolttype r   G/root/rtd-docs/venv/lib/python3.8/site-packages/pygments/lexers/mojo.pyinnerstring_rules=   s    	zMojoLexer.innerstring_rulesc                 C   s"   dt jfdt jdfd| fd| fgS )Nz\}z\{expr-inside-fstringz[^\\\'"{}\n]+r   r   r   r   r   r    fstring_rulesV   s
    
zMojoLexer.fstring_rulesz\s+z&^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")z&^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')z\A#!.+$z#.*$z\\\nz\\keywordssoft-keywordsz(alias)(\s+)varnamez
(var)(\s+)z
(def)(\s+)funcnamez	(fn)(\s+)z(class)(\s+)	classnamez(struct)(\s+)
structnamez(trait)(\s+)z(from)(\s+)
fromimportz(import)(\s+)importexprz(?i)(rf|fr)(""")rfstringescapetdqfz(?i)(rf|fr)(''')tsqfz(?i)(rf|fr)(")dqfz(?i)(rf|fr)(')sqfz([fF])(""")fstringescapez([fF])(''')z	([fF])(")z	([fF])(')z(?i)(rb|br|r)(""")tdqsz(?i)(rb|br|r)(''')tsqsz(?i)(rb|br|r)(")dqsz(?i)(rb|br|r)(')sqsz([uU]?)(""")stringescapez([uU]?)(''')z
([uU]?)(")z
([uU]?)(')z([bB])(""")bytesescapez([bB])(''')z	([bB])(")z	([bB])(')z[^\S\n]+numbersz!=|==|<<|>>|:=|[-~+/*%=<>&^|.]z([]{}:\(\),;[])+z(in|is|and|or|not)\bexpr-keywordsbuiltins
magicfuncs	magicvarsnamez[{([]expr-inside-fstring-innerz(=\s*)?(\![sraf])?\}z#popz(=\s*)?(\![sraf])?:z[])}])	z	async forz
async withawaitelseforiflambdayield
yield fromz\b)suffix)TrueFalseNone)assertasyncr@   ZborrowedbreakcontinuedelelifrA   exceptfinallyrB   globalrC   rD   passraisenonlocalreturntrywhilerE   rF   aswithz6(^[ \t]*)(match|case)\b(?![ \t]*(?:[:,;=^&|@~)\]}]|(?:|c                 c   s   | ]}|d    r|V  qdS )r   N)islower).0kr   r   r    	<genexpr>M  s      zMojoLexer.<genexpr>z)\b))soft-keywords-innerz(\s+)([^\n_]*)(_\b))^
__import__absZaiterallanybinbool	bytearray
breakpointbytescallablechrclassmethodcompilecomplexdelattrdictdirdivmod	enumerateevalfilterfloatformat	frozensetgetattrglobalshasattrhashhexidinputint
isinstance
issubclassiterlenlistlocalsmapmax
memoryviewminnextobjectoctopenordpowprintpropertyrangereprreversedroundsetsetattrslicesortedstaticmethodstrsumsupertupletypevarszipZAnyType	CoroutineZDTypeErrorZIntListZListLiteralZScalarZInt8ZUInt8ZInt16ZUInt16ZInt32ZUInt32ZInt64ZUInt64ZBFloat16ZFloat16ZFloat32ZFloat64ZSIMDr   ZTensorTupleZMovableZCopyableZCollectionElementz(?<!\.))prefixrG   z+(?<!\.)(self|Ellipsis|NotImplemented|cls)\b)r   )^__abs____add__
__aenter__	__aexit__	__aiter____and__	__anext__	__await____bool__	__bytes____call____complex____contains____del____delattr__
__delete____delitem____dir__
__divmod__	__enter____eq____exit__	__float____floordiv__
__format____ge____get____getattr____getattribute____getitem____gt____hash____iadd____iand____ifloordiv____ilshift____imatmul____imod____imul__	__index____init____instancecheck____int__
__invert____ior____ipow____irshift____isub____iter____itruediv____ixor____le____len____length_hint__
__lshift____lt__
__matmul____missing____mod____mul____ne____neg____new____next____or____pos____pow____prepare____radd____rand____rdivmod____repr____reversed____rfloordiv____rlshift____rmatmul____rmod____rmul____ror__	__round____rpow____rrshift__
__rshift____rsub____rtruediv____rxor____set____setattr____setitem____str____sub____subclasscheck____truediv____xor__)__annotations__	__bases__	__class____closure____code____defaults____dict____doc____file____func____globals____kwdefaults__
__module____mro____name____objclass____qualname____self__	__slots____weakref__zT(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)([eE][+-]?\d(?:_?\d)*)?z!\d(?:_?\d)*[eE][+-]?\d(?:_?\d)*j?z0[oO](?:_?[0-7])+z0[bB](?:_?[01])+z0[xX](?:_?[a-fA-F0-9])+z\d(?:_?\d)*@z(\s+)(as)(\s+)z\.z(\s*)(,)(\s*)z(\s+)(import)\bzNone\bz\{\{z\}\}z0\\([\\abfnrtv"\']|\n|x[a-fA-F0-9]{2}|[0-7]{1,3})z,\\(N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"z\\\\|\\"|\\\nfstrings-double'z\\\\|\\'|\\\nfstrings-singlestrings-doublestrings-singlez"""z\nz''')#rootr,   r"   r?   r:   r$   r%   ra   r;   r<   r=   r9   r>   r&   r'   r(   r)   r+   r*   r-   r2   r8   r7   r  r  r!  r   r0   r1   r5   r6   r.   r/   r3   r4   c                 C   s&   t | drdS d| d d kr"dS dS )Nzmojo?g      ?zimport i  g?r   r   )textr   r   r    analyse_text  s
    
zMojoLexer.analyse_textN)=r  r  r  r  r>   urlaliases	filenames	mimetypesversion_addeduniZ	xid_startZxid_continueZuni_namer!   r#   r   r   r   AffixDocr   HashbangSingler   r   	NamespaceDoubler   r   r   r   Wordr   r
   Constantjoinkeywordkwlistr	   r   r   r   BuiltinPseudo	ExceptionFunctionMagicVariabler   FloatOctBinHexInteger	DecoratorClassStructEscapetokensr$  r   r   r   r    r   )   sD  )f
	!'aeh
u`cj 













        ])r  r4  pygmentsr   r*  Zpygments.lexerr   r   r   r   r   r   r	   r
   Zpygments.tokenr   r   r   r   r   r   r   r   r   Zpygments.utilr   __all__r   r   r   r   r    <module>   s   
(
,