B
    `                 @   s  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 ddd	d
ddddddddddg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-2021 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Literal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
 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.
    ZGASZgasasmz*.sz*.Sz
text/x-gasz"(\\"|[^"])*"z[\w$.@-]z(?:[a-zA-Z$_]z*|\.z+)z(?:0[xX][a-fA-F0-9]+|#?-?\d+)%
whitespace:z\.zdirective-argszlock|rep(n?z)?|data\d+zinstruction-argsz[\r\n]+@z#popz([;#]|//).*?\nz/[*].*?[*]/z/[*].*?\n[\w\W]*?[*]/punctuationz([a-z0-9]+)( )(<)(z)(>)z)([-+])($z
$'(.|\\')'z\nz\s+z/[*][\w\W]*?[*]/z[-*,.()\[\]!:]+)rootzdirective-argszinstruction-argsr&   r)   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 r0   [/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/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   Single	Multiliner   Hexr   Chartokensr2   r0   r0   r0   r1   r      sd   






c             C   sR  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	 | | 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 )+)( *)(.*?)$z )+)$z	\t\.\.\.$z	(\t\t\t)(z +:)( )([^\t]+)(\t)(.*?)([-+])(0xz+)$z+:)( )([^\t]+)(\t)(.*?)$z[^\n]+\n)r   r   r@   r   r   r   r   rH   rB   r   ZPropertyrC   r   )Z	asm_lexerZhex_rer0   r0   r1   _objdump_lexer_tokensm   s6    



rL   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``.
    Zobjdumpz	*.objdumpztext/x-objdumpN)r3   r4   r5   r6   r7   r8   r9   r:   rL   r   rJ   r0   r0   r0   r1   r      s   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| d S )N)super__init__r   r   )selfoptions)	__class__r0   r1   rN      s    zDObjdumpLexer.__init__)
r3   r4   r5   r6   r7   r8   r9   r:   rN   __classcell__r0   r0   )rQ   r1   r      s   c                   s>   e Zd ZdZdZdddgZdddgZdgZ fd	d
Z  Z	S )r   zB
    For the output of ``objdump -Sr`` on compiled C++ files.
    zcpp-objdumpzc++-objdumbzcxx-objdumpz*.cpp-objdumpz*.c++-objdumpz*.cxx-objdumpztext/x-cpp-objdumpc                s   t  jttf| d S )N)rM   rN   r	   r   )rO   rP   )rQ   r0   r1   rN      s    zCppObjdumpLexer.__init__)
r3   r4   r5   r6   r7   r8   r9   r:   rN   rR   r0   r0   )rQ   r1   r      s   

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| d S )N)rM   rN   r
   r   )rO   rP   )rQ   r0   r1   rN      s    zCObjdumpLexer.__init__)
r3   r4   r5   r6   r7   r8   r9   r:   rN   rR   r0   r0   )rQ   r1   r      s   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
    ZHSAILZhsailZhsaz*.hsailztext/x-hsailz"[^"]*?"z[a-zA-Z_][\w.]*z[0-9]+z(\$(c|s|d|q))z(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&   commentsr(   z:?keyword&r%   z0[xX][a-fA-F0-9]+z\d+z[=<>{}\[\]()*.,:;!]|x\bz(\n|\s)+z	/\*.*?\*/z//.*?\nZkernargz+\$(full|base|small|large|default|zero|near))module	extensionZpragmaprogZindirect	signaturedeclkernelfunctionZenablebreakexceptionsZenabledetectexceptionsZmaxdynamicgroupsizeZmaxflatgridsizeZmaxflatworkgroupsizeZrequireddimZrequiredgridsizeZrequiredworkgroupsizeZrequirenopartialworkgroupsz\b)suffixz_(|_kernargz(nop|imagefence)\b)ZcleardetectexceptclockZcuidZ	debugtrapZ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cmpZ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_casZ_addZ_andZ_exchZ_maxZ_minZ_orZ_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_widthZ_height_depthZ_arrayZ_channelorderZ_channeltypeZquerysamplerZ_coordZ_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_satz	i[1-9]\d*)r+   r&   rT   rU   N)(r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   Zregister_numberr?   Z	alignQualZ	widthQualZ	allocQualZroundingModZdatatypeModfloatZhexfloatZ	ieeefloatr   r   r   r@   rE   	AnonymousGlobalr   rH   FloatrD   r   r   r   rG   rF   r   Typer   rJ   r0   r0   r0   r1   r      s`   


$c               @   s   e Zd ZdZdZdgZdgZdgZ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.
    ZLLVMZllvmz*.llztext/x-llvmz"[^"]*?"z([-a-zA-Z$._][\w\-$.]*|rS   r&   z\s*:rU   r%   r(   z%\d+z@\d+z#\d+!z!\d+zc?z0[xX][a-fA-F0-9]+z,-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?z[=<>{}\[\]()*.,!]|x\bz(\n|\s)+z;.*?\n(f  acq_relacquireri   Z	addrspaceZaddrspacecastZafnaliasZaliaseealignZ	alignLog2Z
alignstackr   Z	allocsizeZallOnesZalwaysinlineZ	amdgpu_csZ	amdgpu_esZ	amdgpu_gsZ	amdgpu_hsZamdgpu_kernelZ	amdgpu_lsZ	amdgpu_psZ	amdgpu_vsro   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blockaddressr   ZbranchFunnelbuiltinZbyArgbyteZ	byteArrayZbyvalcr   ZcalleeZcallerZcallsZcatchZcatchpadZcatchretZcatchswitchccccc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_preemptableZdsoLocaleqexactZ
exactmatchZextern_weakZexternalZexternally_initializedZextractelementZextractvalueZfaddfalsefastZfastccZfcmpZfdivZfencefilterflagsZfmulZfpextZfptosiZfptouiZfptruncfreezeZfremfromZfsubZ	funcFlagsr]   gcZgetelementptrZghcccr   ZguidgvhashZhhvm_cccZhhvmcc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
landingpadlargestlinkageZlinkonceZlinkonce_odrZliveloadZlocal_unnamed_addrZlocaldynamicZ	localexecZlshrrr   metadatars   ZminsizerW   	monotonicZmsp430_intrccrv   ZmusttailZnakedr7   ZnandneZnestZninfZnnanZnoaliasZ	nobuiltinZ	nocaptureZ
nocf_checkZnoduplicateZnoduplicatesZnoimplicitfloatZnoinlinenoneZnonlazybindZnonnullZ	norecurseZ	noRecurseZ	noredzoneZnoreturnZnotailZnotEligibleToImportZnounwindZnswZnsznullZnuwoeqoffsetogeogtoleoltoneopaqueZoptforfuzzingZoptnoneZoptsizerp   ordpathZpersonalityphiZpoison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_threadZsdivsectionselectseq_cstZsextsgesgtZshadowcallstackrn   ZshufflevectorZ
sideeffectZsignextZsingleZ
singleImplZsingleImplNameZsitofpZsizeM1ZsizeM1BitWidthslesltZsource_filenameZspeculatableZ	spir_funcZspir_kernelZsremZsretZsspZsspreqZ	sspstrongstoreZstrictfprm   Z	summariessummaryZswiftccZ
swifterrorZ	swiftselfswitchZ	syncscopetailtargetZthread_localtotokenZtripletruerh   typeZtypeCheckedLoadConstVCallsZtypeCheckedLoadVCallsZtypeidZ
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_argvariableZvFuncIdZvirtualConstPropvoidZvolatileZweakZweak_odrZwebkit_jsccZwin64ccZwithinZwpdResZwpdResolutionsZ	writeonlyZx86_64_sysvccZx86_fastcallccZ
x86_intrccZx86_mmxZx86_regcallccZx86_stdcallccZx86_thiscallccZx86_vectorcallccZxchgrq   ZzeroextZzeroinitializerZzextZimmargZ
willreturnz\b)r^   )r   ZhalfZbfloatr   doubleZfp128Zx86_fp80Z	ppc_fp128labelr   r   z	i[1-9]\d*)r+   r&   rU   N)r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   r   r   r@   rE   r   r   r   r   r   r   r   r   r   r   rJ   r0   r0   r0   r1   r   X  s:   




9
c               @   s  e 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	jdfde	jdfedd 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	d)fd*ed+fd%ed&fgd,e
jjfd-e
jfd*ed+fd%ed&fgd.e	jfd/e	jfded&fd%ed&fgd0efd1efed2e	fd3e
fd4e
fd5efededd6efd7efded&fgd8ejfgd9ejfgd:e
jjfgd;
Zd<S )=r   z
    For LLVM MIR examples without the YAML wrapper.

    For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.

    .. versionadded:: 2.6
    zLLVM-MIR Bodyzllvm-mir-body)liveins
successorsr'   )r^   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:: *mmoz;.*z[a-zA-Z0-9_]+z	[(), \n]+z(?=.)z#popr   z *:(?!:))z#pop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)r3   r4   r5   r6   r7   r8   r9   r:   r   r   r   r@   rE   r   r   Builtinr   rF   r   r   r   r   ZMagicr   r   rD   r   rJ   r0   r0   r0   r1   r     s~   













c               @   s  e 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   a  
    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.

    For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html.

    .. versionadded:: 2.6
    zLLVM-MIRzllvm-mirz*.mirz#.*z--- \|$llvm_irz---llvm_mirz[^-#]+|.z(\.\.\.|(?=---))z#popz((?:.|\n)+?)(?=(\.\.\.|---))zname:r7   )	alignmentr'   )r^   r>   )Z	legalizedZregBankSelectedZtracksRegLivenessselectedZexposesReturnsTwiceboolean)Z	registersstackZ
fixedStackr   Z	frameInfoZmachineFunctionInfoz	body: *\|llvm_mir_bodyz.+z\nz[^\n]+z *(true|false)z *[0-9]+z#pop:2z((?:.|\n)+?)(?=\.\.\.|---)z(?!\.\.\.|---)((?:.|\n)+))r+   r   r   r7   r   r>   r   N)r3   r4   r5   r6   r7   r8   r9   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r0   r0   r0   r1   r   V  s>   
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 j!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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.
    ZNASMZnasmz*.asmz*.ASMztext/x-nasmg      ?z[a-z$._?][\w$.?#@~]*z,(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)z[0-7]+qz[01]+bz[0-9]+z\.e?z/"(\\"|[^"\n])*"|'(\\'|[^'\n])*'|`(\\`|[^`\n])*`z(?:res|d)[bwdqt]|timeszpr[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]zseg|wrt|strictzbyte|[dq]?wordz(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE)\s+z^\s*%preprocr&   r'   z(%s)(\s+)(equ)zinstruction-argsz[\r\n]+r)   z#popz[^;\n]+z;.*?\nz\nz[ \t]+z;.*z[,():\[\]]+z[&|^<>+*/%~-]+z[$]+)r+   zinstruction-argsr   r&   r)   c             C   s   t d| t jrdS d S )NPROCF)r,   match
IGNORECASE)r/   r0   r0   r1   r2     s    zNasmLexer.analyse_textN)4r3   r4   r5   r6   r7   r8   r9   r:   priorityr=   hexnoctnbinndecnfloatnr;   declkwr?   wordopr   
directivesr,   r   	MULTILINEr   r   Preprocr   r   r@   r   rC   r   DeclarationrB   r   r   r   rH   OctBinr   rD   r   rE   rF   r   r   Wordr   rJ   r2   r0   r0   r0   r1   r     sh   




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)r3   r4   r5   r6   r7   r8   r9   r:   rL   r   rJ   r0   r0   r0   r1   r      s   c               @   s  e Zd ZdZdZdgZdddg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j!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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#fd$e#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!   z3
    For Tasm (Turbo Assembler) assembly code.
    ZTASMZtasmz*.asmz*.ASMz*.tasmztext/x-tasmz[@a-z$._?][\w$.?#@~]*z,(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)z[0-7]+qz[01]+bz[0-9]+z\.e?z/"(\\"|[^"\n])*"|'(\\'|[^'\n])*'|`(\\`|[^`\n])*`z(?:res|d)[bwdqt]|timeszor[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]zseg|wrt|strictzbyte|[dq]?wordzBITS|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]+z^\s*%r   r&   r'   zinstruction-argsz(%s)(\s+)(%s)z[\r\n]+r)   z(\\\s*)(;.*)([\r\n])z#popz[^;\n]+z;.*?\nz\nz[\n\r]z\\[\n\r]z[ \t]+z;.*z[,():\[\]]+z[&|^<>+*=/%~-]+z[$]+)r+   zinstruction-argsr   r&   r)   c             C   s   t d| t jrdS d S )Nr   T)r,   r   I)r/   r0   r0   r1   r2   X  s    zTasmLexer.analyse_textN)4r3   r4   r5   r6   r7   r8   r9   r:   r=   r   r   r   r   r  r;   r  r?   r  r   r  datatyper,   r   r  r   r   r  r   r   r@   r   r   rC   r  rB   r   r   r   rH   r  r	  r   rD   r   rE   rF   r   r   r
  r   rJ   r2   r0   r0   r0   r1   r!   	  sl   






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 assemblerZca65z*.sr+   z;.*z\s+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\bz\d+z%[01]+z[#,.:()=\[\]]z[a-z_.@$][\w.@$]*c             C   s   t d|t jrdS d S )Nz^\s*;g?)r,   r-   r  )rO   r/   r0   r0   r1   r2     s    zCa65Lexer.analyse_textN)r3   r4   r5   r6   r7   r8   r9   r,   r   r   r   rF   r   r   r@   r   ZPseudor   r   rI   r   rH   rD   r	  r   rJ   r2   r0   r0   r0   r1   r"   ^  s*   c            $   @   s  e Zd ZdZdZdgZddgZdg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*g$Zd+d,d-d.d/d0d1d2d3d4d5d6d7d8gZ	d9Z
d:e
 d; e
 d< Zd=Zd>Zd?d@e dA ZdBe
 dC ZdDZdEdF ZedGdHe ejfedH ejfeejdIfdJe ejdKfdLefgeejfeejfeefgeefedMgdNefdOedPfedQedGgdLedPfdRedPfedGgdSefdTedUfedQedVgdSefedMeefedVgdWefdXefdYefgdZZd[S )\r#   zf
    For DCPU-16 Assembly.

    Check http://0x10c.com/doc/dcpu-16.txt

    .. versionadded:: 2.4
    ZDASM16Zdasm16z*.dasm16z*.dasmztext/x-dasm16ZSETZADDZSUBZMULZMLIZDIVZDVIZMODZMDIANDZ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Zr  JSPPCZEXPOPZPEEKZPUSHz[a-zA-Z0-9_$@.]z(?:[a-zA-Z$_]z*|\.z+)z[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)z0b[01_]+z(?i)(r_   rS   z'\\?'z"(\\"|[^"])*"c             c   s8   | d}| | jkrtjntj}| ||fV  d S )Nr   )r   upper	REGISTERSr   rE   r@   start)lexerr   identklassr0   r0   r1   guess_identifier  s    
zDasm16Lexer.guess_identifierr&   r'   zinstruction-argsz\.z	data-argsz[\r\n]+numericz\+z\]z#popr   z;.*?$r   z\[derefzinstruction-linez\nz\s+z;.*?\n)r+   r!  r   r"  zinstruction-linezinstruction-argsz	data-argsr&   N)r3   r4   r5   r6   r7   r8   r9   r:   ZINSTRUCTIONSr  r<   r=   r>   Zbinary_numberjoinZinstructionZsingle_charr;   r   r   r   r@   rB   r   r   rD   r   r   r   rJ   r0   r0   r0   r1   r#     sv   

)*r6   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   rL   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r0   r0   r0   r1   <module>	   s4   $0S1 q QTU'