o
    \h^                     @   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i d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+d,eejejed-d.fd/eejejed-d0fd1eejejed-d2fd3eejejed-d4fd5eejejed6d.fd7eejejed6d0fd8eejejed6d2fd9eejejed6d4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d@eejejdAfdBeejejedCd;fdDeejejedCd=fdEeejejedCd?fdFeejejedCdAfdGeejejedHd;fdIeejejedHd=fdJeejejedHd?fdKeejejedHdAfdLefedMdNefdOefdPej fedQedRedSedTedUgdVdWedXfdYej!dZfd[ej!dZfdefed+gdXdWedXfd\edZfdefed+gdQe"d]d^d_efe"d`d^d_ej#fgde"dad^d_efe"d`d^d_ej#fgddbdc$ddde e%j&D  df eeedgfgdgdheee'e(efe)dZgdRe"didjd^dke*j+fdle*j+j,fe"dmdjd^dke*j-fgdSe"dnd^d_e*j.j/fgdTe"dod^d_e*j0j/fgdMdpe1j2fdqe1j2fdre1j3fdse1j4fdte1j5fdue1j6fgdUdve e*j7fdvefee*fgdee*j0dZfgd edSee*j.dZfe)dZgd#ee*j8dZfgd%ee*j9dZfgi d*dweeeefdxe*jfee*jfdyeeeefe)dZgd(dzeeejdZfdxe*jfd{ej#dZfee*jfe)dZgd-d|ej:fd}ej:fgd6ed-edCgdHd~ej:fgdCdej:fedHgdeejdeejdeejdeejd2dejdZfdej:fedgd4dejdZfdej:fedgd?dejdZfdej:fedgdAdejdZfdej:fedgd.dejdZfeddejfgd0dejdZfeddejfgd;dejdZfeddejfgd=dejdZfeddejfgi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   W/home/air/segue/gemini/backup/venv/lib/python3.10/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_rulesrootz\s+z&^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")z&^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')z\A#!.+$z#.*$z\\\nz\\keywordsz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)\bzexpr-keywordsbuiltins
magicfuncs	magicvarsnamer"   z[{([]z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>   borrowedbreakcontinuedelelifr?   exceptfinallyr@   globalrA   rB   passraisenonlocalreturntrywhilerC   rD   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))zsoft-keywords-innerz(\s+)([^\n_]*)(_\b))^
__import__abs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zipAnyType	CoroutineDTypeErrorIntListListLiteralScalarInt8UInt8Int16UInt16Int32UInt32Int64UInt64BFloat16Float16Float32Float64SIMDr   TensorTupleMovableCopyableCollectionElementz(?<!\.))prefixrE   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fstrings-singlezfstrings-doublezstrings-singlezstrings-double"z\\\\|\\"|\\\n'z\\\\|\\'|\\\nz"""z\nz'''c                 C   s&   t | drdS d| d d v 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uni	xid_startxid_continue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tokensr4  r   r   r   r    r   )   sj   ' 
  #  )  >!  b  p  uae
h   i`c     R      p      |       
        
        

        
                
                 $        (        +        
/        
0        
1        
2        3
        8
        =
        B
        G
        L
        Q
        V
        ])r#  rG  pygmentsr   r:  pygments.lexerr   r   r   r   r   r   r	   r
   pygments.tokenr   r   r   r   r   r   r   r   r   pygments.utilr   __all__r   r   r   r   r    <module>   s    
(,
