o
    Thx                     @   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                   @   sH  e Zd ZdZdZdZg dZddgZg d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i d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d&efd'ejfd(ejfd)efgd*d+ejd,fd-ej fd.e d ejd/fed0gd0d1ejd2fd3ej fd4ejfgd5d6ej!d2fd3ej fd4ej!fgd7d8e ejfd9ejd2fgd:edee"jfd;e#d<fe$d2gd=edee"jfd>efd;e#d<fd?ejd/fe$d2gd<edd>ed2fee"jd2fgd@edee"jfd;e#d<fe$d2gdAd&efd1ejdBfd6ej!dCfe$d2gdDd&efdEej%fdFej%dGfeej%d2fdHe&j'fdIe&j'fdJe&j'fdKe&j'fdLe dM e&j'fdNe&j(fdOe&j)fd1ejdBfd6ej!dCfgdPd&efdQej%d2fe$dRgdSd&efeej%dTfe$d2gdRd&efdEej%fdFej%dUfeej%dVfdHe&j'dVfdIe&j'dVfdJe&j'dVfdKe&j'dVfdLe dM e&j'dVfdNe&j(dVfdOe&j)dVfd1ejdWfd6ej!dXfgdede$dYgdZedd[e#d\fgi d]eddFe#d^fe$d2gd_edd`ejdafdbe#fe$d2gdeddce"j*ddfgdeeddfe"j*d2fe$d2gdgedee"j*d2fgdheddFe"j*dife$d2gdjeddQe"j*d2fe$dkgdleddQe"j*d2fdbe#difgd#ede$dmgdneddoe+dpfgd!ede$dqgdrededd9e#d2fee"dsfgdteddFe#dufe$dvgdede$dwgdxeddyejdafdbe#fe$d2gdzedd[e#d2fgd{edd9e#d2fgi d|ededd9e#d2fd}ejfe$d~gd~eddejdfdejdfgdedee"j,dfe$dgdedede$d2gdedee"j,dfgdeddQe#d2fde#fee"dfgdeddQe#d2fdbe#dfgdeddFe#dfe$d2gdedded2feed2fgd%ede$dgdg eddce"j*dfde+fdFe#dfdejfdejdfd[e#dfdej-dfdedfde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d2fde d e"dfee"dfdHe&j'dfdIe&j'dfdJe&j'dfdKe&j'dfdLe dM e&j'dfdNe&j(dfdOe&j)dfd1ejdfd6ej!dfdej.dfde#dfdedde+fee+dfdedfde+dfde d e/e#e"fde#dfdFe#dfe$d2g	dededdfe#dfdejfdejdfdejdfd ejdfd"ejdfe$dg	dd[e#d\fedgdeddFe#dfe$dgdeddbe#dfe$d2gdeddedfe$d2gi dede$d҃gdeddedfgdeddFe#dfgdeddFe#dfgdeddFe#dfgdeddedfe$d2gdede$d݃gdeddedfd9e#d2fgdeddfe#d2fe$dgdeddfe#d2fdbe#dfgdeddedfe$d2gdedded%fe$d2gdede$dgdedde#d2fe$dgdedde#d2fdbe#dfgdede$dgdedde#d2fgi deddbe#d2fgdeddfe#d2fgdedde#d2fgdedde#d2fe$d2gd/edee"d2fgdedd[e#dfe$dgdedee"d2fgdedd;e#d/fe$d2gdaedde#fee"dfd[e#dfdFe#dfgdede$d^gdedde#dfd e#dfe$d2gdedd9e#d2fde#fde#dfee"dfed|gdedd9e#d2fdbe#dfgddHe&j'd2fdIe&j'd2fdJe&j'd2fdKe&j'd2fdLe dM e&j'd2fdNe&j(d2fdOe&j)d2fd1ejdBfd6ej!dCfd	ej.d2fde+dfedagdede$d
gdedde#d2fdbe#dfgdedd e#dfe$d2gi dedde#d2fdbe#dfgdeddfe#dfe$d2gdeddFe#dfe$dŃgdeddQe#d2fdbe#dafgdede$dgdeddFe#d2fgdeddQe#d2fgdedeedfgdeddbe#dfe$d2gdeddoe+dfe$d2gdeddfe#dfe$d2gdeddfe+d2fgdeddQe#d2fe$dgd eddQe#d2fdbe#d!fgd"edd#e d$ e e"d%fd1ejd&fd6ej!d'fe$d(gd)eddfe#d*fe$d+gd,edd9e#d2fe$d%gedd9e#d2fe$d-gedee"d2fd1ejdBfd6ej!dCfgedd9e#d2fdbe#d.fgd/Z0d0d1 Z1d2S (3  r   z
    For Haxe source code.
    Haxezhttp://haxe.org/)haxehxslhxz*.hxz*.hxsl)z	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v r(| jr'| jd d d  |_n|dkr4| jr4| j  |dv r>|jd |dv rH|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.   U/home/air/segue/gemini/back/venv/lib/python3.10/site-packages/pygments/lexers/haxe.pypreproc_callback:   s"   

zHaxeLexer.preproc_callbackrootspacesmetaz(?:package)\b)	semicolonpackagez(?:import)\b)r4   importz(?:using)\b)r4   usingz(?:extern|private)\bz(?:abstract)\babstractz(?:class|interface)\bclassz
(?:enum)\benumz(?:typedef)\btypedefz(?=.)zexpr-statementz\s+z
//[^\n\r]*z	/\*.*?\*/z(#)(if|elseif|else|end|error)\bstring-single-interpolz\$\{)string-interpol-closeexprz\$\$z\$(?=identstring-single'#popz\\..string-double"r=   z\$z\}r5   z\.zimport-identr6   z\*inr7   r    )rB   r@   )rB   rD   r   z\!z\()rB   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]+rG   z\)preproc-expr-in-parenthesispreproc-expr-chain)rB   rH   )rB   rI   rG   )rB   rI   )rB   rI   r@   )rB   rI   rD   )rB   abstract-bodyabstract-relationabstract-opaquetype-param-constraint	type-namerJ   z\{)rB   
class-bodyrL   )rB   parenthesis-closetyperK   z(?:to|from)rQ   ,@)	meta-body
meta-ident
meta-colonrV   :rU   rT   )rB   	meta-callrX   )rB   meta-call-sepr>   rY   )rB   typedef-bodyrM   rN   rZ   =)rB   optional-semicolonrQ   )rB   	enum-bodybracket-openrM   rN   r]   )enum-memberrM   r_   )rB   r4   flagfunction-param)rB   r4   r`   )rB   rO   r^   extendsrM   rN   rb   z(?:extends|implements)\br^   bracket-closerO   z9(?:static|public|private|override|dynamic|inline|macro)\bzclass-memberz(var)\b)rB   r\   varz(function)\b)rB   r\   class-methodfunction-local)rB   optional-exprr`   ra   parenthesis-openrM   rg   r>   re   ra   z\?)rB   function-param-sepassignr`   ri   )rB   ra   prop-get-set)rB   rP   prop-get-set-optcommarl   rl   z((?:default|null|never|dynamic|get|set)\b)rB   r\   r>   )rB   rg   rT   rU   rV   z(?:\+\+|\-\-|~(?!/)|!|\-))rB   
expr-chainparenthesisz3(?:static|public|private|override|dynamic|inline)\bz(?:function)\b)rB   rn   rf   )rB   rn   bracketz(?:true|false|null)\b)rB   rn   z
(?:this)\bz
(?:cast)\b)rB   rn   castz	(?:try)\b)rB   catchr>   z	(?:var)\b)rB   rd   z	(?:new)\b)rB   rn   newz(?:switch)\b)rB   switchz(?:if)\b)rB   r   z(?:do)\b)rB   doz(?:while)\b)rB   whilez	(?:for)\b)rB   forz(?:untyped|throw)\bz(?:return)\b)rB   rg   z(?:macro)\b)rB   macroz(?:continue|break)\bz(?:\$\s*[a-z]\b|\$(?!z)))rB   dollar)rB   rn   r<   )rB   rn   rD   z#~/(\\\\|\\[^\\]|[^/\\\n])*/[gimsu]*z\[)rB   rn   
array-declrn   z(?:\+\+|\-\-))rB   r>   z(?:in)\b)rB   r>   ternaryr>   z(\.)(zarray-accesscallrx   )rB   rQ   )rB   r\   r8   )rB   r\   macro-class)rB   r\   r:   )rB   r\   r;   r}   rq   )rB   rP   	cast-typer>   r~   rr   z(?:catch)\b)r>   ra   rh   ru   )rB   do-whiler>   r   )rB   ro   rh   rv   )rB   r>   ro   rw   r   )rB   r   r\   r>   ro   r   z
(?:else)\brt   )rB   switch-bodyr^   r>   r   z(?:case|default)\b)
case-blockcaser   )rB   case-sep
case-guardr>   r   )rB   r   r   r   z(?!(?:case|default)\b|\})rs   )rB   r|   rh   rQ   rz   z\])rB   array-decl-sepr>   r   )rB   rz   )rB   array-access-closer>   r   rm   colonr4   ;r\   ry   )rB   rn   rc   r>   rN   type-full-name)rB   
type-checkr   )rB   r   type-struct)rB   r   type-parenthesisr   r   z->z<(?!=)
type-paramr   >)rm   rQ   )rB   type-struct-seprQ   r   r   )rB   r   type-param-typez!~/(\\\\|\\[^\\]|[^/\\\n])*/[gim]*)rB   type-param-sepr   r   )rB   r   rM   )rB   type-param-constraint-septype-param-constraint-flagrN   r   r   )rB   type-param-constraint-flag-typer   )rB   #type-param-constraint-flag-type-seprQ   r   ro   )rB   rP   r`   r>   rh   rP   rd   )rB   var-seprj   r`   rk   r   rj   r`   r{   )rB   call-sepr>   r   )rB   r|   rp   z(?!(?:\$\s*[a-z]\b|\$(?!z))))rB   bracket-check)rB   r   r@   )rB   r   rD   )rB   blockr   )rB   
object-sepr>   )rB   r   r\   rn   r   )rB   r   r>   r   ident-or-string)rB   object)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keywordtypeidr?   binopident_no_keywordr   DOTALL	MULTILINEflagsr#   r0   r   r
   	NamespaceDeclarationr   r   r   Single	Multiliner   InterpolEscapeDoubler   r   r   r(   r   FloatHexInteger	Decoratorr	   FunctionConstantRegexr   tokensr   r.   r.   r.   r/   r      st
   







#
)
/
4;
D
JQ

X



o
u
|






     "  (
  /
  5
  <
  A
  G
  M
  S  Y  ^  d  k  r  x
                       &    ,
    4    <    B    I    O    V







 
!"
%
&
)
*
-0     
      



      %      +      3      9      A      G      M      R      W      ]      c      h      n      t      z                                                       #        (        -        2        9        >        D        I        O        W        \        c
        l
        s







                   

                    #

          +
          1
          8          ?          D          I          N
          T          [          b          i          o          v
          }           
                        

	
      
      .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.
    Hxmlz0https://haxe.org/manual/compiler-usage-hxml.htmlhaxemlhxmlz*.hxmlz1.6r1   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   Headingr
   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r     s>    )r   r   pygments.lexerr   r   r   r   r   pygments.tokenr   r   r	   r
   r   r   r   r   r   r   __all__r   r   r.   r.   r.   r/   <module>   s    
0      r