U
    ]gx                     @   s   d Z ddlZddl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mZ ddgZG dd deZG dd deZdS )	z
    pygments.lexers.haxe
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Haxe and related stuff.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexer
RegexLexerincludebygroupsdefault)
TextCommentOperatorKeywordNameStringNumberPunctuationGeneric
Whitespace	HaxeLexer	HxmlLexerc                m   @   s  e Zd ZdZdZdZdddgZddgZd	d
dgZdZ	dZ
dZde d ZdZde
 d e ZejejB Zg Zdd Zededdejdfdejdfdejdfdejfdejd fd!ejd"fd#ejd$fd%ejd&fd'ed(fgd)efd*ejfd+ejfd,efgd-ejd.fd/ej fd0e d ejd1fed2gd3ejd4fd5ej fd6ejfgd7ej!d4fd5ej fd6ej!fgd8e ejfd9ejd4fgedee"jfd:e#d;fe$d4gedee"jfd<efd:e#d;fd=ejd1fe$d4gedd<ed4fee"jd4fgedee"jfd:e#d;fe$d4gd)efd3ejd>fd7ej!d?fe$d4gd)efd@ej%fdAej%dBfeej%d4fdCe&j'fdDe&j'fdEe&j'fdFe&j'fdGe dH e&j'fdIe&j(fdJe&j)fd3ejd>fd7ej!d?fgd)efdKej%d4fe$dLgd)efeej%dMfe$d4gd)efd@ej%fdAej%dNfeej%dOfdCe&j'dOfdDe&j'dOfdEe&j'dOfdFe&j'dOfdGe dH e&j'dOfdIe&j(dOfdJe&j)dOfd3ejdPfd7ej!dQfgede$dRgeddSe#dTfgeddAe#dUfe$d4geddVejdWfdXe#fe$d4geddYe"j*dZfgedd[e"j*d4fe$d4gedee"j*d4fgeddAe"j*d\fe$d4geddKe"j*d4fe$d]geddKe"j*d4fdXe#d\fgede$d^gedd_e+d`fgede$dagededd9e#d4fee"dbfgeddAe#dcfe$ddgede$degeddfejdWfdXe#fe$d4geddSe#d4fgedd9e#d4fgededd9e#d4fdgejfe$dhgeddiejdjfdkejdlfgedee"j,dmfe$dmgededne$d4gedee"j,dmfgeddKe#d4fdoe#fee"dpfgeddKe#d4fdXe#dqfgeddAe#drfe$d4geddsed4feed4fgede$dtgeddYe"j*dufdve+fdAe#dwfdxejfdyejdzfdSe#d{fd|ej-d}fd~ed}fdedfdedfdejdfdedfdedfdedfdedfdedfdedfdefdedfdedfded4fde d e"dfee"d}fdCe&j'd}fdDe&j'd}fdEe&j'd}fdFe&j'd}fdGe dH e&j'd}fdIe&j(d}fdJe&j)d}fd3ejdfd7ej!dfdej.d}fde#dfg#edde+fee+dfdedfdoe+dfde d e/e#e"fde#dfdAe#dfe$d4g	ededd[e#dfdejfdejdfd!ejdfd#ejdfd%ejdfe$dg	dSe#dTfed"geddAe#dfe$dgeddXe#dfe$d4geddedfe$d4gede$dgeddedfgeddAe#dfgeddAe#dfgeddAe#dfgeddedfe$d4gede$dgeddedfd9e#d4fgedd[e#d4fe$dgedd[e#d4fdXe#dfgeddedfe$d4gedded(fe$d4gede$dgedde#d4fe$dgedde#d4fdXe#dfgede$dgedde#d4fgeddXe#d4fgedd[e#d4fgedde#d4fgedde#d4fe$d4gedee"d4fgeddSe#dfe$d}gedee"d4fgedd:e#d1fe$d4geddoe#fee"dfdSe#dfdAe#dfgede$dUgedde#dfde#dfe$d4gedd9e#d4fdoe#fde#dfee"dfedɃgedd9e#d4fdXe#dfgdCe&j'd4fdDe&j'd4fdEe&j'd4fdFe&j'd4fdGe dH e&j'd4fdIe&j(d4fdJe&j)d4fd3ejd>fd7ej!d?fdej.d4fde+dfedWgede$d̃gedde#d4fdXe#dfgedde#dfe$d4gedde#d4fdXe#dfgedd[e#dfe$d4geddAe#dfe$dgeddKe#d4fdXe#dWfgede$dуgeddAe#d4fgeddKe#d4fgedeedfgeddXe#dfe$d4gedd_e+dfe$d4gedd[e#dfe$d4gedd[e+d4fgeddKe#d4fe$dӃgeddKe#d4fdXe#dfgedde d e e"dfd3ejdfd7ej!dfe$dڃgedd[e#dfe$d܃gedd9e#d4fe$d(gedd9e#d4fe$d݃gedee"d4fd3ejd>fd7ej!d?fgedd9e#d4fdXe#dfgdߜiZ0dd Z1dS )r   z
    For Haxe source code.
    ZHaxezhttp://haxe.org/ZhaxeZhxslhxz*.hxz*.hxslz	text/haxeztext/x-haxez	text/x-hxz1.3a  (?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\bz
_*[A-Z]\w*z(?:_*[a-z]\w*|_+[0-9]\w*|z
|_+|\$\w+)z(?:%=|&=|\|=|\^=|\+=|\-=|\*=|/=|<<=|>\s*>\s*=|>\s*>\s*>\s*=|==|!=|<=|>\s*=|&&|\|\||<<|>>>|>\s*>|\.\.\.|<|>|%|&|\||\^|\+|\*|/|\-|=>|=)z(?!)c                 c   s   | d}|dkr*| j|jd d   n<|dkrN| jrf| jd d d  |_n|dkrf| jrf| j  |dkrz|jd |dkr|jd	 | tjd
| fV  | |_	d S )N   if)elseelseifend)r   r   preproc-expr)errorpreproc-error#)
grouppreproc_stackappendstackpopstartr   Preprocr   pos)selfmatchctxproc r+   8/tmp/pip-unpacked-wheel-zak7uw41/pygments/lexers/haxe.pypreproc_callback:   s    

zHaxeLexer.preproc_callbackspacesmetaz(?:package)\b)	semicolonpackagez(?:import)\b)r0   importz(?:using)\b)r0   usingz(?:extern|private)\bz(?:abstract)\babstractz(?:class|interface)\bclassz
(?:enum)\benumz(?:typedef)\btypedefz(?=.)expr-statementz\s+z
//[^\n\r]*z	/\*.*?\*/z(#)(if|elseif|else|end|error)\bz\$\{)string-interpol-closeexprz\$\$z\$(?=identstring-single'#popz\\.."z\$z\}z\.import-identz\*in)r>   r<   )r>   string-doublez\!z\()r>   preproc-parenthesisz\.[0-9]+z[0-9]+[eE][+\-]?[0-9]+z[0-9]+\.[0-9]*[eE][+\-]?[0-9]+z[0-9]+\.[0-9]+z[0-9]+\.(?!z|\.\.)z0x[0-9a-fA-F]+z[0-9]+z\)preproc-expr-in-parenthesis)r>   rE   )r>   preproc-expr-chainrD   )r>   rF   )r>   rF   r<   )r>   rF   rC   )r>   abstract-bodyabstract-relationabstract-opaquetype-param-constraint	type-namez\{)r>   
class-body)r>   parenthesis-closetypez(?:to|from)rN   ,@)	meta-body
meta-ident
meta-colon:)r>   	meta-call)r>   meta-call-sepr:   )r>   typedef-bodyrJ   rK   =)r>   optional-semicolonrN   )r>   	enum-bodybracket-openrJ   rK   )enum-memberrJ   )r>   r0   flagfunction-param)r>   r0   r]   )r>   rL   r[   extendsrJ   rK   z(?:extends|implements)\bz9(?:static|public|private|override|dynamic|inline|macro)\bclass-memberz(var)\b)r>   rY   varz(function)\b)r>   rY   class-method)r>   optional-exprr]   r^   parenthesis-openrJ   r:   z\?)r>   function-param-sepassignr]   )r>   r^   )r>   rM   prop-get-set-optcommarg   z((?:default|null|never|dynamic|get|set)\b)r>   rY   r:   )r>   rc   rQ   rR   rS   z(?:\+\+|\-\-|~(?!/)|!|\-))r>   
expr-chainparenthesisz3(?:static|public|private|override|dynamic|inline)\bz(?:function)\b)r>   ri   function-local)r>   ri   bracketz(?:true|false|null)\b)r>   ri   z
(?:this)\bz
(?:cast)\b)r>   ri   castz	(?:try)\b)r>   catchr:   z	(?:var)\b)r>   ra   z	(?:new)\b)r>   ri   newz(?:switch)\b)r>   switchz(?:if)\b)r>   r   z(?:do)\b)r>   doz(?:while)\b)r>   whilez	(?:for)\b)r>   forz(?:untyped|throw)\bz(?:return)\b)r>   rc   z(?:macro)\b)r>   macroz(?:continue|break)\bz(?:\$\s*[a-z]\b|\$(?!z)))r>   dollar)r>   ri   string-single-interpol)r>   ri   rC   z#~/(\\\\|\\[^\\]|[^/\\\n])*/[gimsu]*z\[)r>   ri   
array-declz(?:\+\+|\-\-))r>   r:   z(?:in)\b)r>   r:   ternaryr:   z(\.)(array-accesscall)r>   rN   )r>   rY   r4   )r>   rY   macro-class)r>   rY   r6   )r>   rY   r7   )r>   rM   	cast-typer:   z(?:catch)\b)r:   r^   rd   )r>   do-whiler:   )r>   rj   rd   )r>   r:   rj   )r>   r   rY   r:   rj   z
(?:else)\b)r>   switch-bodyr[   r:   z(?:case|default)\b)
case-blockcase)r>   case-sep
case-guardr:   )r>   r   z(?!(?:case|default)\b|\}))r>   rz   rd   rN   z\])r>   array-decl-sepr:   )r>   rw   )r>   array-access-closer:   ;)r>   ri   bracket-closer:   )r>   
type-checktype-full-name)r>   r   type-struct)r>   r   type-parenthesisz->z<(?!=)
type-param>)rh   rN   )r>   type-struct-seprN   colonrL   )r>   r   z!~/(\\\\|\\[^\\]|[^/\\\n])*/[gim]*)r>   type-param-septype-param-type)r>   r   )r>   type-param-constraint-septype-param-constraint-flagrK   )r>   type-param-constraint-flag-type)r>   #type-param-constraint-flag-type-seprN   )r>   rM   r]   r:   )r>   var-seprf   r]   prop-get-set)r>   call-sepr:   )r>   rz   z(?!(?:\$\s*[a-z]\b|\$(?!z))))r>   bracket-check)r>   r   r<   )r>   r   rC   )r>   block)r>   
object-sepr:   )r>   r   rY   ri   )r>   r   r:   r   ident-or-string)r>   object)irootr.   rv   r<   rC   r9   r1   r2   rA   r3   r   r   rD   rF   rE   r4   rG   rI   rH   r/   rS   rR   rQ   rU   rV   r7   rW   r6   rZ   r\   r5   r_   r[   r   rL   r`   rk   rc   rb   r^   re   r   rg   r8   r:   ri   rt   r{   rm   r|   rn   rq   r}   rr   rs   r   r   rp   r~   r   r   r   r   ro   rw   r   ry   r   rh   r   r0   rY   r;   ru   rK   r   rN   r   r   r   r   r   r   r   rJ   r   r   r   r   rj   rd   rM   ra   r   rf   r]   rx   rz   r   rl   r   r   r   r   r   c                 C   s   t d| rdS d S )Nz\w+\s*:\s*\wg333333?)rer(   )textr+   r+   r,   analyse_text|  s    zHaxeLexer.analyse_textN)2__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesversion_addedkeywordZtypeidr;   ZbinopZident_no_keywordr   DOTALL	MULTILINEflagsr    r-   r   r
   	NamespaceZDeclarationr   r   r   SingleZ	Multiliner   ZInterpolZEscapeDoubler   r   r   r%   r   ZFloatHexIntegerZ	Decoratorr	   ZFunctionConstantRegexr   tokensr   r+   r+   r+   r,   r      s8  






































	



		












4



			
	








		




	            .c                   @   s   e Zd ZdZdZdZddgZdgZdZdd	e	e
ejfd
e	e
ejfde	e
efde	e
eeefde	e
eeejfde	e
eeeje
eje
eje
ej
fde	e
eeefdejfgiZdS )r   z%
    Lexer for haXe build files.
    ZHxmlz0https://haxe.org/manual/compiler-usage-hxml.htmlZhaxemlZhxmlz*.hxmlz1.6r   z
(--)(next)z(-)(prompt|debug|v)zY(--)(neko-source|flash-strict|flash-use-stage|no-opt|no-traces|no-inline|times|no-output)zO(-)(cpp|js|neko|x|as3|swf9?|swf-lib|php|xml|main|lib|D|resource|cp|cmd)( +)(.+)z(-)(swf-version)( +)(\d+)z;(-)(swf-header)( +)(\d+)(:)(\d+)(:)(\d+)(:)([A-Fa-f0-9]{6})zA(--)(js-namespace|php-front|php-lib|remap|gen-hx-classes)( +)(.+)z#.*N)r   r   r   r   r   r   r   r   r   r   r   r   ZHeadingr
   r   r   r   r   r   r   r   r   r+   r+   r+   r,   r     sD       )r   r   Zpygments.lexerr   r   r   r   r   Zpygments.tokenr   r   r	   r
   r   r   r   r   r   r   __all__r   r   r+   r+   r+   r,   <module>   s   
0      r