a
    lc                     @   sp  d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZm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mZmZ g dZG dd	 d	eZd
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"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(G d$d% d%eZ)dS )&z
    pygments.lexers.asm
    ~~~~~~~~~~~~~~~~~~~

    Lexers for assembly languages.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerincludebygroupsusingwordsDelegatingLexerdefault)CppLexerCLexer)DLexer)
TextNameNumberStringCommentPunctuationOtherKeywordOperator
Whitespace)GasLexerObjdumpLexerDObjdumpLexerCppObjdumpLexerCObjdumpLexer
HsailLexer	LlvmLexerLlvmMirBodyLexerLlvmMirLexer	NasmLexerNasmObjdumpLexer	TasmLexer	Ca65LexerDasm16Lexerc                   @   s  e Zd ZdZdZddgZddgZdgZdZd	Z	d
e	 d e	 d Z
dZde
 d Zede
d ejfde
 ejdfdejfe
ejdfdefge
ejfeefde
 ejfeejfeejfdedfdejdfdejfdejdfededgde
 d eejeeejefde
 d e d eejeeejeejefe
ejfeejfeejfd e ejfd!ejfdedfdejdfdejfdejdfededgd"efd#efdejfd$ejfgd%efgd&Z d'd( Z!d)S )*r   z'
    For Gas (AT&T) assembly code.
    GASgasasm*.sz*.Sz
text/x-gas"(\\"|[^"])*"z[\w$.@-](?:[a-zA-Z$_]*|\.+)z(?:0[xX][a-fA-F0-9]+|#?-?\d+)%\b
whitespace:\.directive-argszlock|rep(n?z)?|data\d+instruction-args[\r\n]+@#popz([;#]|//).*?\nz/[*].*?[*]/z/[*].*?\n[\w\W]*?[*]/punctuationz([a-z0-9]+)( )(<)(z)(>)z)([-+])($z
$'(.|\\')'\n\s+z/[*][\w\W]*?[*]/z[-*,.()\[\]!:]+)rootr1   r2   r.   r6   c                 C   s,   t d| t jrdS t d| t jr(dS d S )Nz^\.(text|data|section)Tz^\.\w+g?)researchMtext r@   O/var/www/html/django/DPS/env/lib/python3.9/site-packages/pygments/lexers/asm.pyanalyse_textf   s    zGasLexer.analyse_textN)"__name__
__module____qualname____doc__namealiases	filenames	mimetypesstringchar
identifiernumberregisterr   r   Label	AttributeFunctionr   Constantr   r   IntegerVariabler   r   Single	Multiliner   Hexr   ChartokensrB   r@   r@   r@   rA   r      sx   
	




<r   c                 C   sp  d}ddt tjtttfdt ttjtfd| d t tjtttj	ttjtfd| d t tjtttj	tfd| d	 | | d
 t ttjttjtt
| fd| d t ttjtt
| fd| d	 | | d t ttjttjttfd| d	 | | d t ttjttjfdtfd| d | d t ttjttjttjttjfd| d t ttjttjttjfdtfgiS )z;
    Common objdump lexer tokens to wrap an ASM lexer.
    z[0-9A-Za-z]r:   z(.*?)(:)( +file format )(.*?)$z"(Disassembly of section )(.*?)(:)$(z++)( )(<)(.*?)([-+])(0[xX][A-Za-z0-9]+)(>:)$z+)( )(<)(.*?)(>:)$z( *)(z+:)(\t)((?:z )+)( *	)([a-zA-Z].*?)$z+:)( *\t)([a-zA-Z].*?)$z )+)( *)(.*?)$z )+)$z	\t\.\.\.$z	(\t\t\t)(z +:)( )([^\t]+)(\t)(.*?)([-+])(0xz+)$z+:)( )([^\t]+)(\t)(.*?)$z[^\n]+\n)r   r   rP   r   r   r   r   rX   r   rR   r   PropertyrS   r   )Z	asm_lexerZhex_rer@   r@   rA   _objdump_lexer_tokensm   s`    





r]   c                   @   s.   e Zd ZdZdZdgZdgZdgZee	Z
dS )r   z,
    For the output of ``objdump -dr``.
    objdumpz	*.objdumpztext/x-objdumpN)rC   rD   rE   rF   rG   rH   rI   rJ   r]   r   rZ   r@   r@   r@   rA   r      s   r   c                       s6   e Zd ZdZdZdgZdgZdgZ fddZ  Z	S )r   z@
    For the output of ``objdump -Sr`` on compiled D files.
    z	d-objdumpz*.d-objdumpztext/x-d-objdumpc                    s   t  jttfi | d S N)super__init__r   r   selfoptions	__class__r@   rA   ra      s    zDObjdumpLexer.__init__
rC   rD   rE   rF   rG   rH   rI   rJ   ra   __classcell__r@   r@   re   rA   r      s   r   c                       s:   e Zd ZdZdZg dZg dZdgZ fddZ  Z	S )r   zB
    For the output of ``objdump -Sr`` on compiled C++ files.
    cpp-objdump)ri   zc++-objdumbzcxx-objdump)z*.cpp-objdumpz*.c++-objdumpz*.cxx-objdumpztext/x-cpp-objdumpc                    s   t  jttfi | d S r_   )r`   ra   r	   r   rb   re   r@   rA   ra      s    zCppObjdumpLexer.__init__rg   r@   r@   re   rA   r      s   r   c                       s6   e Zd ZdZdZdgZdgZdgZ fddZ  Z	S )r   z@
    For the output of ``objdump -Sr`` on compiled C files.
    z	c-objdumpz*.c-objdumpztext/x-c-objdumpc                    s   t  jttfi | d S r_   )r`   ra   r
   r   rb   re   r@   rA   ra      s    zCObjdumpLexer.__init__rg   r@   r@   re   rA   r      s   r   c                   @   s\  e Zd ZdZdZddgZdgZdgZdZdZ	d	Z
d
e
 d ZdZdZdZdZdZdZdZdZededeefde	 d ejfeejjfedde	 ejjfde	 ejfeejfdejfeejfeejfdejfdefgde fgde!j"fd e!j#fgd!e e$j%fd"e$fe&d#d$d%e$fee$fee$fd&e d' e d( e$fd)e$fd*e$fe&d+e$fd,e$fg
d-Z'd.S )/r   z=
    For HSAIL assembly code.

    .. versionadded:: 2.2
    HSAILhsailhsaz*.hsailztext/x-hsail"[^"]*?"z[a-zA-Z_][\w.]*[0-9]+z(\$(c|s|d|q)z)\bz(align\(\d+\))z(width\((\d+|all)\))z(alloc\(agent\))z ((_ftz)?(_up|_down|_zero|_near))z_(u8x4|s8x4|u16x2|s16x2|u8x8|s8x8|u16x4|s16x4|u32x2|s32x2|u8x16|s8x16|u16x8|s16x8|u32x4|s32x4|u64x2|s64x2|f16x2|f16x4|f16x8|f32x2|f32x4|f64x2|u8|s8|u16|s16|u32|s32|u64|s64|b128|b8|b16|b32|b64|b1|f16|f32|f64|roimg|woimg|rwimg|samp|sig32|sig64)z ((\d+\.)|(\d*\.\d+))[eE][+-]?\d+zL0[xX](([0-9a-fA-F]+\.[0-9a-fA-F]*)|([0-9a-fA-F]*\.[0-9a-fA-F]+))[pP][+-]?\d+z?0((h|H)[0-9a-fA-F]{4}|(f|F)[0-9a-fA-F]{8}|(d|D)[0-9a-fA-F]{16})r.   commentsr4   z:?keyword&r,   0[xX][a-fA-F0-9]+\d+z[=<>{}\[\]()*.,:;!]|x\bz(\n|\s)+z	/\*.*?\*/z//.*?\nZkernargz+\$(full|base|small|large|default|zero|near))module	extensionZpragmaprogZindirect	signaturedeclZkernelfunctionZenablebreakexceptionsZenabledetectexceptionsZmaxdynamicgroupsizeZmaxflatgridsizeZmaxflatworkgroupsizeZrequireddimZrequiredgridsizeZrequiredworkgroupsizeZrequirenopartialworkgroupsr-   suffixz_(|)_kernargz(nop|imagefence)\b)ZcleardetectexceptclockZcuidZ	debugtrapdimZgetdetectexceptZgroupbaseptrZkernargbaseptrZlaneidZmaxcuidZ	maxwaveidZpacketidZsetdetectexceptZwaveidZworkitemflatabsidZworkitemflatidZnullptrabsZbitrevZcurrentworkgroupsizeZcurrentworkitemflatidZfractZncosnegZnexp2Znlog2ZnrcpZnrsqrtZnsinZnsqrtZ
gridgroupsZgridsizenotsqrtZworkgroupidZworkgroupsizeZworkitemabsidZ
workitemidceilfloorZrinttruncaddZbitmaskZborrowZcarrycopysigndivremsubshlZshrandorxorZunpackhiZunpacklomaxminfmaZmadZ
bitextractZ	bitselectshuffleZcmovZbitalignZ	bytealignZlerpZnfmamulZmulhiZmul24hiZmul24Zmad24Zmad24hiZ	bitinsertcombineexpandZldaZmovpackunpackZpackcvtZ	unpackcvtZsadZsementpZftosZstofcmpldst_eqZ_neZ_ltZ_leZ_gtZ_geZ_equZ_neuZ_ltuZ_leuZ_gtuZ_geuZ_numZ_nanZ_seqZ_sneZ_sltZ_sleZ_sgtZ_sgeZ_snumZ_snanZ_sequZ_sneuZ_sltuZ_sleuZ_sgtuZ_sgeuatomicZ_ldZ_stZ_cas_addZ_andZ_exch_max_minZ_or_subZ_wrapdecZ_wrapincZ_xorretcvtZ	_readonlyr~   Z_globalbrZcbrZsbrZ_scacqZ_screlZ_scarZ_rlxZ_waveZ_wgZ_agentZ_systemZldimageZstimageZ_v2Z_v3Z_v4Z_1dZ_2dZ_3dZ_1daZ_2daZ_1dbZ_2ddepthZ	_2dadepth_width_height_depthZ_arrayZ_channelorderZ_channeltypeZquerysamplerZ_coord_filterZ_addressingZbarrierZwavebarrierZinitfbarZjoinfbarZwaitfbarZ
arrivefbarZ	leavefbarZreleasefbarZldfZactivelaneidZactivelanecountZactivelanemaskZactivelanepermutecallZscallZicallallocaZpacketcompletionsigZaddqueuewriteindexZcasqueuewriteindexZldqueuereadindexZstqueuereadindexreadonlyglobalprivategroupZspillargZ_upiZ_downiZ_zeroiZ_neariZ_upi_satZ
_downi_satZ
_zeroi_satZ
_neari_satZ_supiZ_sdowniZ_szeroiZ_sneariZ	_supi_satZ_sdowni_satZ_szeroi_satZ_sneari_satZ_ppZ_psZ_sp_ssZ_s_pZ_pp_satZ_ps_satZ_sp_satZ_ss_satZ_s_satZ_p_sat	i[1-9]\d*)r:   r.   ro   rp   N)(rC   rD   rE   rF   rG   rH   rI   rJ   rK   rM   Zregister_numberrO   Z	alignQualZ	widthQualZ	allocQualZroundingModZdatatypeModfloatZhexfloatZ	ieeefloatr   r   r   rP   rU   	AnonymousGlobalr   rX   FloatrT   r   r   r   rW   rV   r   Typer   rZ   r@   r@   r@   rA   r      sn   
	%(r   c                   @   s  e Zd ZdZdZdZdgZdgZdgZdZ	de	 d	 Z
d
e
 d Zeded ejfedde
 ejfde
 ejjfdejjfdejjfdejjfde
 ejfdejjfde	 efdefdefdefgdefdefgedddefedejfd ejfgd!Zd"S )#r   z!
    For LLVM assembly code.
    LLVMz"https://llvm.org/docs/LangRef.htmlllvmz*.llztext/x-llvmrm   z([-a-zA-Z$._][\w\-$.]*|r}   r[   z|(\d+))r.   z\s*:rp   r,   r4   z%\d+z@\d+z#\d+!z!\d+zc?rr   z,-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?z[=<>{}\[\]()*.,!]|x\bz	(\n|\s+)+;.*?\n(  Zaarch64_sve_vector_pcsZaarch64_vector_pcsacq_relacquirer   Z	addrspaceZaddrspacecastZafnaliasZaliaseealignZ	alignLog2Z
alignstackr   Z	allocsizeZallOnesZalwaysinlineZalwaysInlineZ	amdgpu_csZ	amdgpu_esZ
amdgpu_gfxZ	amdgpu_gsZ	amdgpu_hsZamdgpu_kernelZ	amdgpu_lsZ	amdgpu_psZ	amdgpu_vsr   anyZanyregccZ	appendingZarcpZ
argmemonlyargsZarm_aapcs_vfpccZarm_aapcsccZ
arm_apcsccZashrr&   r   Z	atomicrmw
attributesZavailable_externallyZ
avr_intrccZavr_signalccbitZbitcastZbitMaskZblockaddressZ
blockcountr   ZbranchFunnelbuiltinZbyArgZbyrefbyteZ	byteArrayZbyvalcr   ZcallbrZcalleeZcallerZcallsZcanAutoHideZcatchZcatchpadZcatchretZcatchswitchcccccZcfguard_checkcccleanupZ
cleanuppadZ
cleanupretZcmpxchgZcoldZcoldccZcomdatcommonZconstantZcontractZ
convergentcriticalZcxx_fast_tlsccZ
datalayoutZdeclarer   ZdefineZdeplibsZdereferenceableZdereferenceable_or_nullZdistinctZ	dllexportZ	dllimportZ	dso_localZdso_local_equivalentZdso_preemptableZdsoLocaleqexactZ
exactmatchZextern_weakZexternalZexternally_initializedZextractelementZextractvalueZfaddfalsefastZfastccZfcmpZfdivZfencefilterflagsZfmulZfnegZfpextZfptosiZfptouiZfptruncfreezeZfremfromZfsubZ	funcFlagsry   gcZgetelementptrZghcccr   ZguidgvhashZhhvm_cccZhhvmccZhiddenZhotZhotnessZicmpZifuncZinaccessiblemem_or_argmemonlyZinaccessiblememonlyZinallocaZinboundsZindirZ
indirectbrinfoZinitialexecinlineZ
inlineBitsZ
inlinehintZinrangeZinregZinsertelementZinsertvalueZinstsZintel_ocl_biccZinteldialectZinternalZinttoptrZinvokeZ	jumptablekindZ
landingpadZlargestlinkageZlinkonceZlinkonce_odrliveloadZlocal_unnamed_addrZlocaldynamicZ	localexecZlshrr   metadatar   Zminsizert   	monotonicZmsp430_intrccr   ZmustprogressZmusttailZnakedrG   ZnandnenestZninfZnnanZnoaliasZ	nobuiltinZ
nocallbackZ	nocaptureZ
nocf_checkZnoduplicateZnoduplicatesZnofreeZnoimplicitfloatZnoinlineZnoInlineZnomergenoneZnonlazybindZnonnullZ	noprofileZ	norecurseZ	noRecurseZ	noredzoneZnoreturnZnosyncZnotailZnotEligibleToImportZnoundefZnounwindZnswZnsznullZnull_pointer_is_validZnuwoeqoffsetogeogtoleoltoneopaqueZoptforfuzzingZoptnoneZoptsizer   ordparamparams	partitionpathZpersonalityphiZpoisonZpreallocatedprefixZpreserve_allccZpreserve_mostccr   ZprologueZ	protectedZptrtointZ
ptx_deviceZ
ptx_kernelZreadnoneZreadNoner   ZreadOnlyZreassocrefsZrelbfreleaseZresByArgresumer   ZreturnDoesNotAliasreturnedZreturns_twiceZ	safestackZsamesizeZsanitize_addressZsanitize_hwaddressZsanitize_memoryZsanitize_memtagZsanitize_threadZsdivsectionselectseq_cstZsextsgesgtZshadowcallstackr   ZshufflevectorZ
sideeffectZsignextsingleZ
singleImplZsingleImplNameZsitofpZsizeM1ZsizeM1BitWidthslesltZsource_filenameZspeculatableZspeculative_load_hardeningZ	spir_funcZspir_kernelZsremZsretsspZsspreqZ	sspstrongstoreZstrictfpr   Z	summariessummaryZswiftccZ
swifterrorZ	swiftselfswitchZ	syncscopetailZtailcctargetZthread_localtotokenZtripletruer   typeZtypeCheckedLoadConstVCallsZtypeCheckedLoadVCallsZtypeidZtypeidCompatibleVTableZ
typeIdInfoZtypeTestAssumeConstVCallsZtypeTestAssumeVCallsZtypeTestResZ	typeTestsZudivZuequgeugtZuitofpuleultZumaxZuminZundefZuneZuniformRetValZuniqueRetValunknownZunnamed_addrZuno	unorderedZunreachableZunsatZunwindZuremZuselistorderZuselistorder_bbZuwtableZva_argZvarFlagsvariableZvcall_visibilityZvFuncIdZvirtFuncZvirtualConstPropvoidZvolatileZvscaleZvTableFuncsZweakZweak_odrZwebkit_jsccZwin64ccZwithinZwpdResZwpdResolutionsZ	writeonlyxZx86_64_sysvccZx86_fastcallccZ
x86_intrccx86_mmxZx86_regcallccZx86_stdcallccZx86_thiscallccZx86_vectorcallccZxchgr   ZzeroextZzeroinitializerZzextZimmargZ
willreturnr-   rz   )r  ZhalfZbfloatr   doubleZfp128Zx86_fp80Z	ppc_fp128labelr   r  Zx86_amxr  r   )r:   r.   rp   N)rC   rD   rE   rF   rG   urlrH   rI   rJ   rK   rM   Zblock_labelr   r   rP   rU   r   r   r   r   r   r   r   r   r   r   rZ   r@   r@   r@   rA   r   \  sL   




TTWr   c                   @   s  e Zd ZdZdZdZdgZg Zg Ze	ddde
fdejfd	ejfd
ejfdefdefdejdfeddejjfe	ddddejfe	ddddejfdejfdefdejfdejfe	de
fdee
jedfde
jdfed d!eeed"fd#efd$efd%efged d&ed'fged(d&ed'fgd)eee
d*fd+eeed,fd&ed'fgd-eeejjfd.eeejfd+eeed,fd&ed'fgd/eee
jfd0eee
jfded'fd&ed'fgd1efd2efe	d3e
fd4efd5efd6efed edd7efd8efded'fgd9ejfgd:ejfgd;ejjfgd<
Zd=S )>r   zT
    For LLVM MIR examples without the YAML wrapper.

    .. versionadded:: 2.6
    zLLVM-MIR Body%https://llvm.org/docs/MIRLangRef.htmlzllvm-mir-body)liveins
successorsr/   rz   z4bb\.[0-9]+(\.[a-zA-Z0-9_.-]+)?( \(address-taken\))?:z5bb\.[0-9]+ \(%[a-zA-Z0-9_.-]+\)( \(address-taken\))?:z%bb\.[0-9]+(\.\w+)?z%stack\.[0-9]+(\.\w+\.addr)?z%subreg\.\w+z%[a-zA-Z0-9_]+ *vregr   zintrinsic\(\@[a-zA-Z0-9_.]+\))
r   r   r   r   r   r   r
  r	  r  r  z	intpred\(z\))r   r{   )
r   r   r   r   r   r   r
  r	  r  r  zfloatpred\(z\$\w+=a  (G_ANYEXT|G_[SZ]EXT|G_SEXT_INREG|G_TRUNC|G_IMPLICIT_DEF|G_PHI|G_FRAME_INDEX|G_GLOBAL_VALUE|G_INTTOPTR|G_PTRTOINT|G_BITCAST|G_CONSTANT|G_FCONSTANT|G_VASTART|G_VAARG|G_CTLZ|G_CTLZ_ZERO_UNDEF|G_CTTZ|G_CTTZ_ZERO_UNDEF|G_CTPOP|G_BSWAP|G_BITREVERSE|G_ADDRSPACE_CAST|G_BLOCK_ADDR|G_JUMP_TABLE|G_DYN_STACKALLOC|G_ADD|G_SUB|G_MUL|G_[SU]DIV|G_[SU]REM|G_AND|G_OR|G_XOR|G_SHL|G_[LA]SHR|G_[IF]CMP|G_SELECT|G_GEP|G_PTR_MASK|G_SMIN|G_SMAX|G_UMIN|G_UMAX|G_[US]ADDO|G_[US]ADDE|G_[US]SUBO|G_[US]SUBE|G_[US]MULO|G_[US]MULH|G_FNEG|G_FPEXT|G_FPTRUNC|G_FPTO[US]I|G_[US]ITOFP|G_FABS|G_FCOPYSIGN|G_FCANONICALIZE|G_FMINNUM|G_FMAXNUM|G_FMINNUM_IEEE|G_FMAXNUM_IEEE|G_FMINIMUM|G_FMAXIMUM|G_FADD|G_FSUB|G_FMUL|G_FMA|G_FMAD|G_FDIV|G_FREM|G_FPOW|G_FEXP|G_FEXP2|G_FLOG|G_FLOG2|G_FLOG10|G_FCEIL|G_FCOS|G_FSIN|G_FSQRT|G_FFLOOR|G_FRINT|G_FNEARBYINT|G_INTRINSIC_TRUNC|G_INTRINSIC_ROUND|G_LOAD|G_[ZS]EXTLOAD|G_INDEXED_LOAD|G_INDEXED_[ZS]EXTLOAD|G_STORE|G_INDEXED_STORE|G_ATOMIC_CMPXCHG_WITH_SUCCESS|G_ATOMIC_CMPXCHG|G_ATOMICRMW_(XCHG|ADD|SUB|AND|NAND|OR|XOR|MAX|MIN|UMAX|UMIN|FADD|FSUB)|G_FENCE|G_EXTRACT|G_UNMERGE_VALUES|G_INSERT|G_MERGE_VALUES|G_BUILD_VECTOR|G_BUILD_VECTOR_TRUNC|G_CONCAT_VECTORS|G_INTRINSIC|G_INTRINSIC_W_SIDE_EFFECTS|G_BR|G_BRCOND|G_BRINDIRECT|G_BRJT|G_INSERT_VECTOR_ELT|G_EXTRACT_VECTOR_ELT|G_SHUFFLE_VECTOR)\bz6(COPY|PHI|INSERT_SUBREG|EXTRACT_SUBREG|REG_SEQUENCE)\b)ZkilledZimplicitz(i[0-9]+)( +)constantintz(half|float|double) +constantfloatintegerz(::)( *)mmo;.*z[a-zA-Z0-9_]+z	[(), \n]+z(?=.)r5   r   z( *)(:(?!:)))r5   vreg_bank_or_classz( *)(\()	vreg_typez( *)(_)z( *)([a-zA-Z0-9_]+)z( *)([sp][0-9]+)z( *)(<[0-9]+ *x *[sp][0-9]+>)z\(z +)r   r   onZintor   r   r   r   r   r   r   z%ir\.[a-zA-Z0-9_.-]+z%ir-block\.[a-zA-Z0-9_.-]+z[-+],z\), \(z-?[0-9]+z-?[0-9]+\.[0-9]+(e[+-][0-9]+)?z\@[a-zA-Z0-9_.]+)
r:   r  r  r  r   r!  r  r  r   r   N)rC   rD   rE   rF   rG   r  rH   rI   rJ   r   r   r   rP   rU   r   r   Builtinr   rV   r   r   r   r   r   r   Magicr   r   rT   r   rZ   r@   r@   r@   rA   r     s   



K	


r   c                   @   s  e Zd ZdZdZdZdgZdgZdefde	dfd	e	d
fde
fgde	dfdeeefgdefde	dfde	dfeddde	dfeddde	dfeddde	fde	dfde
fdefg	defedgdejfedgdefedgde	dfd eeefd!eeefgd"Zd#S )$r   an  
    Lexer for the overall LLVM MIR document format.

    MIR is a human readable serialization format that's used to represent LLVM's
    machine specific intermediate representation. It allows LLVM's developers to
    see the state of the compilation process at various points, as well as test
    individual pieces of the compiler.

    .. versionadded:: 2.6
    zLLVM-MIRr  zllvm-mirz*.mir#.*z--- \|$llvm_irz---llvm_mirz[^-#]+|.z(\.\.\.|(?=---))r5   z((?:.|\n)+?)(?=(\.\.\.|---))zname:rG   )Z	alignmentr/   rz   rN   )Z	legalizedZregBankSelectedZtracksRegLivenessselectedZexposesReturnsTwiceboolean)Z	registersstackZ
fixedStackr  Z	frameInfoZmachineFunctionInfoz	body: *\|llvm_mir_bodyz.+r8   z[^\n]+z *(true|false)z *[0-9]+z#pop:2z((?:.|\n)+?)(?=\.\.\.|---)z(?!\.\.\.|---)((?:.|\n)+))r:   r'  r(  rG   r*  rN   r,  N)rC   rD   rE   rF   rG   r  rH   rI   r   r   r   r   r   r   r   r   r   r   r$  r   r   rZ   r@   r@   r@   rA   r   v  sb   
r   c                   @   s  e Zd ZdZdZdgZddgZdgZdZdZ	d	Z
d
ZdZdZed e ZdZdZdZdZdZdZejejB Zdejdfede	d ejfde	 eeje e!j"dfee!dfee!j"dfe	ej#dfde fgee$fe
e%j&fee%j'fee%j(fee%j)fee%j*fedeej+fe	ej,fde dfedgdejfdej-dfdejdfgde fd e fd!ej-fd"ej-fgd#e.fd$e/fd%e!jfee/j0fee!j1fgd&Z2d'd( Z3d)S )*r   z)
    For Nasm (Intel) assembly code.
    NASMnasm*.asm*.ASMztext/x-nasmg      ?z[a-z$._?][\w$.?#@~]*,(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)[0-7]+q[01]+brn   \.e?/"(\\"|[^"\n])*"|'(\\'|[^'\n])*'|`(\\`|[^`\n])*`(?:res|d)[bwdqt]|timeszt(r[0-9][0-5]?[bwd]?|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7])\bseg|wrt|strictbyte|[dq]?wordz(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE)(?=\s)^\s*%preprocr.   r/   z(%s)(\s+)(equ)r2   r3   r6   r5   [^;\n]+r   r8   [ \t]+r  r&  [,():\[\]]+z[&|^<>+*/%~-]+[$]+r:   r2   r:  r.   r6   c                 C   s   t d| t jrdS d S )NPROCF)r;   match
IGNORECASEr>   r@   r@   rA   rB     s    zNasmLexer.analyse_textN)4rC   rD   rE   rF   rG   rH   rI   rJ   priorityrM   hexnoctnbinndecnfloatnrK   declkwrO   wordopr  
directivesr;   rB  	MULTILINEr   r   Preprocr   r   rP   r   rS   r   r   DeclarationrR   r   r   rX   OctBinr   rT   r$  rU   rV   r   r   Wordr   rZ   rB   r@   r@   r@   rA   r     sx   




.r   c                   @   s.   e Zd ZdZdZdgZdgZdgZee	Z
dS )r    zO
    For the output of ``objdump -d -M intel``.

    .. versionadded:: 2.0
    zobjdump-nasmz*.objdump-intelztext/x-nasm-objdumpN)rC   rD   rE   rF   rG   rH   rI   rJ   r]   r   rZ   r@   r@   r@   rA   r      s   r    c                   @   s  e Zd ZdZdZdgZg dZdgZdZdZ	dZ
d	Zd
Zed e ZdZdZdZdZdZdZdZejejB Zdejdfeded ejfeedfdeef eej e!ej"dfeej"dfeej#dfde!fgee$fe	e%j&fe
e%j'fee%j(fee%j)fee%j*fedeej+feej,fdee-e!ej.e!fde!dfedgdejfdej.dfdejdfgd e!fd!ee-e!fd"e!fd#ej.fgd$e/fd%e0fd&ej fee0j1feej2fgd'Z3d(d) Z4d*S )+r!   z3
    For Tasm (Turbo Assembler) assembly code.
    TASMtasm)r/  r0  z*.tasmztext/x-tasmz[@a-z$._?][\w$.?#@~]*r1  r2  r3  rn   r4  r5  r6  zs(r[0-9][0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7])\br7  r8  zBITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|ENDS|COMMON|CPU|GROUP|UPPERCASE|INCLUDE|EXPORT|LIBRARY|MODULE|PROC|ENDP|USES|ARG|DATASEG|UDATASEG|END|IDEAL|P386|MODEL|ASSUME|CODESEG|SIZEzdb|dd|dw|T[A-Z][a-z]+r9  r:  r.   r/   r2   z(%s)(\s+)(%s)r3   r6   z(\\)(\s*)(;.*)([\r\n])r5   r;  r   r8   z[\n\r]z(\\)([\n\r])r<  r  r=  z[&|^<>+*=/%~-]+r>  r?  c                 C   s   t d| t jrdS d S )Nr@  T)r;   rA  Ir>   r@   r@   rA   rB   x  s    zTasmLexer.analyse_textN)5rC   rD   rE   rF   rG   rH   rI   rJ   rM   rD  rE  rF  rG  rH  rK   rI  rO   rJ  r  rK  datatyper;   rB  rL  r   r   rM  r   r   rP   r   r   rS   r   rN  rR   r   r   rX   rO  rP  r   rT   r$  rU   r   rV   r   r   rQ  r   rZ   rB   r@   r@   r@   rA   r!   )  sz   





0r!   c                   @   s   e Zd ZdZdZdgZdgZejZ	dde
jfdefdejfd	efd
ejfdefdefdejfdejfdejfdejfdefdefgiZdd ZdS )r"   z@
    For ca65 assembler sources.

    .. versionadded:: 1.6
    zca65 assemblerca65r'   r:   r  r9   z[a-z_.@$][\w.@$]*:z((ld|st)[axy]|(in|de)[cxy]|asl|lsr|ro[lr]|adc|sbc|cmp|cp[xy]|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor|bit)\bz\.\w+z[-+~*/^&|!<>=]z	"[^"\n]*.z	'[^'\n]*.z\$[0-9a-f]+|[0-9a-f]+h\brs   z%[01]+z[#,.:()=\[\]]z[a-z_.@$][\w.@$]*c                 C   s   t d|t jrdS d S )Nz^\s*;g?)r;   r<   rL  )rc   r?   r@   r@   rA   rB     s    zCa65Lexer.analyse_textN)rC   rD   rE   rF   rG   rH   rI   r;   rB  r   r   rV   r   r   rP   r   Pseudor   r   rY   r   rX   rT   rP  r   rZ   rB   r@   r@   r@   rA   r"   ~  s0   r"   c                   @   sn  e Zd ZdZdZdZdgZddgZdgZg dZ	g d	Z
d
Zde d e d ZdZdZdde	 d Zde d ZdZdd Zedde ejfed ejfeejdfde ejdfdefgeejfeejfeefgeefedgdefd ed!fed"edgded!fd#ed!fedgd$efd%ed&fed"ed'gd$efedeefed'gd(efd)efd*efgd+Zd,S )-r#   z:
    For DCPU-16 Assembly.

    .. versionadded:: 2.4
    DASM16z http://0x10c.com/doc/dcpu-16.txtdasm16z*.dasm16z*.dasmztext/x-dasm16)$ZSETZADDZSUBZMULZMLIZDIVZDVIZMODZMDIANDBORZXORZSHRZASRZSHLZIFBZIFCZIFEZIFNZIFGZIFAZIFLZIFUZADXZSBXZSTIZSTDZJSRINTZIAGZIASZRFIZIAQZHWNZHWQZHWI)ABCXYZrT  JSPPCZEXPOPZPEEKZPUSHz[a-zA-Z0-9_$@.]r)   r*   r+   z[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)z0b[01_]+z(?i)(r|   r}   z'\\?'r(   c                 c   s8   | d}| | jv rtjntj}| ||fV  d S )Nr   )r   upper	REGISTERSr   rU   rP   start)lexerrA  identklassr@   r@   rA   guess_identifier  s    
zDasm16Lexer.guess_identifierr.   r/   r2   r0   	data-argsr3   numericz\+z\]r5   r   z;.*?$r#  z\[derefinstruction-liner8   r9   r   )r:   rp  r   rq  rr  r2   ro  r.   N)rC   rD   rE   rF   rG   r  rH   rI   rJ   ZINSTRUCTIONSri  rL   rM   rN   Zbinary_numberjoinZinstructionZsingle_charrK   rn  r   r   rP   rR   r   r   rT   r   r   r   rZ   r@   r@   r@   rA   r#     sl   	

r#   )*rF   r;   Zpygments.lexerr   r   r   r   r   r   r   Zpygments.lexers.c_cppr	   r
   Zpygments.lexers.dr   Zpygments.tokenr   r   r   r   r   r   r   r   r   r   __all__r   r]   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r@   r@   r@   rA   <module>   s0   
$0S5   PUU'