B
    (d y                 @   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-2023 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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d/e d ejd0fed1gd2ejd3fd4ejfd5ejfgd6ej d3fd4ejfd5ej fgd7e ejfd8ejd3fgedee!jfd9e"d:fe#d3gedee!jfd;efd9e"d:fd<ejd0fe#d3gedd;ed3fee!jd3fgedee!jfd9e"d:fe#d3gd(efd2ejd=fd6ej d>fe#d3gd(efd?ej$fd@ej$dAfeej$d3fdBe%j&fdCe%j&fdDe%j&fdEe%j&fdFe dG e%j&fdHe%j'fdIe%j(fd2ejd=fd6ej d>fgd(efdJej$d3fe#dKgd(efeej$dLfe#d3gd(efd?ej$fd@ej$dMfeej$dNfdBe%j&dNfdCe%j&dNfdDe%j&dNfdEe%j&dNfdFe dG e%j&dNfdHe%j'dNfdIe%j(dNfd2ejdOfd6ej dPfgede#dQgeddRe"dSfgedd@e"dTfe#d3geddUejdVfdWe"fe#d3geddXe!j)dYfgeddZe!j)d3fe#d3gedee!j)d3fgedd@e!j)d[fe#d3geddJe!j)d3fe#d\geddJe!j)d3fdWe"d[fgede#d]gedd^e*d_fgede#d`gededd8e"d3fee!dafgedd@e"dbfe#dcgede#ddgeddeejdVfdWe"fe#d3geddRe"d3fgedd8e"d3fgededd8e"d3fdfejfe#dggeddhejdifdjejdkfgedee!j+dlfe#dlgededme#d3gedee!j+dlfgeddJe"d3fdne"fee!dofgeddJe"d3fdWe"dpfgedd@e"dqfe#d3geddred3feed3fgede#dsgeddXe!j)dtfdue*fd@e"dvfdwejfdxejdyfdRe"dzfd{ej,d|fd}ed|fd~edfdedfdejdfdedfdedfdedfdedfdedfdedfdefdedfdedfded3fde d e!dfee!d|fdBe%j&d|fdCe%j&d|fdDe%j&d|fdEe%j&d|fdFe dG e%j&d|fdHe%j'd|fdIe%j(d|fd2ejdfd6ej dfdej-d|fde"dfg#edde*fee*dfdedfdne*dfde d e.e"e!fde"dfd@e"dfe#d3g	ededdZe"dfdejfdejdfd ejdfd"ejdfd$ejdfe#dg	dRe"dSfed!gedd@e"dfe#dgeddWe"dfe#d3geddedfe#d3gede#dgeddedfgedd@e"dfgedd@e"dfgedd@e"dfgeddedfe#d3gede#dgeddedfd8e"d3fgeddZe"d3fe#dgeddZe"d3fdWe"dfgeddedfe#d3gedded'fe#d3gede#dgedde"d3fe#dgedde"d3fdWe"dfgede#dgedde"d3fgeddWe"d3fgeddZe"d3fgedde"d3fgedde"d3fe#d3gedee!d3fgeddRe"dfe#d|gede
e!d3fgedd9e"d0fe#d3geddne"fee!dfdRe"dfd@e"dfgede#dTgedde"dfde"dfe#d3gedd8e"d3fdne"fde"dfee!dfedȃgedd8e"d3fdWe"dfgdBe%j&d3fdCe%j&d3fdDe%j&d3fdEe%j&d3fdFe dG e%j&d3fdHe%j'd3fdIe%j(d3fd2ejd=fd6ej d>fdej-d3fde*dfedVgede#d˃gedde"d3fdWe"dfgedde"dfe#d3gedde"d3fdWe"dfgeddZe"dfe#d3gedd@e"dfe#dgeddJe"d3fdWe"dVfgede#dЃgedd@e"d3fgeddJe"d3fgedeedfgeddWe"dfe#d3gedd^e*dfe#d3geddZe"dfe#d3geddZe*d3fgeddJe"d3fe#d҃geddJe"d3fdWe"dfgedde d e e!dfd2ejdfd6ej dfe#dكgeddZe"dfe#dۃgedd8e"d3fe#d'gedd8e"d3fe#d܃gedee!d3fd2ejd=fd6ej d>fgedd8e"d3fdWe"dfgdޜiZ/dd Z0dS )r   z:
    For Haxe source code.

    .. versionadded:: 1.3
    Haxezhttp://haxe.org/haxehxslhxz*.hxz*.hxslz	text/haxeztext/x-haxez	text/x-hxa  (?: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   zpreproc-expr)errorzpreproc-error#)
grouppreproc_stackappendstackpopstartr   Preprocr   pos)selfmatchctxproc r,   a/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/pygments/lexers/haxe.pypreproc_callback;   s    

zHaxeLexer.preproc_callbackspacesmetaz(?:package)\b)	semicolonpackagez(?:import)\b)r1   importz(?:using)\b)r1   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)\bz\$\{)zstring-interpol-closeexprz\$\$z\$(?=identzstring-single'z#popz\\.."z\$z\}z\.zimport-identz\*in)z#popzstring-single)z#popzstring-doublez\!z\()z#popz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\)zpreproc-expr-in-parenthesis)z#popzpreproc-expr-in-parenthesis)z#popzpreproc-expr-chainzpreproc-parenthesis)z#popzpreproc-expr-chain)z#popzpreproc-expr-chainzstring-single)z#popzpreproc-expr-chainzstring-double)z#popzabstract-bodyzabstract-relationzabstract-opaqueztype-param-constraintz	type-namez\{)z#popz
class-body)z#popzparenthesis-closetypez(?:to|from)r?   ,@)z	meta-bodyz
meta-identz
meta-colon:)z#popz	meta-call)z#popzmeta-call-sepr9   )z#popztypedef-bodyztype-param-constraintz	type-name=)z#popzoptional-semicolonr?   )z#popz	enum-bodyzbracket-openztype-param-constraintz	type-name)zenum-memberztype-param-constraint)z#popr1   flagzfunction-param)z#popr1   rD   )z#popz
class-bodyzbracket-openextendsztype-param-constraintz	type-namez(?:extends|implements)\bz9(?:static|public|private|override|dynamic|inline|macro)\bzclass-memberz(var)\b)z#popzoptional-semicolonvarz(function)\b)z#popzoptional-semicolonzclass-method)z#popzoptional-exprrD   zfunction-paramzparenthesis-openztype-param-constraintr9   z\?)z#popzfunction-param-sepassignrD   )z#popzfunction-param)z#popzparenthesis-closezprop-get-set-optcommazprop-get-set-optz((?:default|null|never|dynamic|get|set)\b)z#popzoptional-semicolonr9   )z#popzoptional-exprz	meta-bodyz
meta-identz
meta-colonz(?:\+\+|\-\-|~(?!/)|!|\-))z#popz
expr-chainparenthesisz3(?:static|public|private|override|dynamic|inline)\bz(?:function)\b)z#popz
expr-chainzfunction-local)z#popz
expr-chainbracketz(?:true|false|null)\b)z#popz
expr-chainz
(?:this)\bz
(?:cast)\b)z#popz
expr-chaincastz	(?:try)\b)z#popcatchr9   z	(?:var)\b)z#poprF   z	(?:new)\b)z#popz
expr-chainnewz(?:switch)\b)z#popswitchz(?:if)\b)z#popr   z(?:do)\b)z#popdoz(?:while)\b)z#popwhilez	(?:for)\b)z#popforz(?:untyped|throw)\bz(?:return)\b)z#popzoptional-exprz(?:macro)\b)z#popmacroz(?:continue|break)\bz(?:\$\s*[a-z]\b|\$(?!z)))z#popdollar)z#popz
expr-chainzstring-single-interpol)z#popz
expr-chainzstring-doublez#~/(\\\\|\\[^\\]|[^/\\\n])*/[gimsu]*z\[)z#popz
expr-chainz
array-declz(?:\+\+|\-\-))z#popr9   z(?:in)\b)z#popr9   ternaryr9   z(\.)(zarray-accesscall)z#popr?   )z#popzoptional-semicolonr5   )z#popzoptional-semicolonzmacro-class)z#popzoptional-semicolonr7   )z#popzoptional-semicolonr8   )z#popzparenthesis-closez	cast-typer9   z(?:catch)\b)r9   zfunction-paramzparenthesis-open)z#popzdo-whiler9   )z#poprI   zparenthesis-open)z#popr9   rI   )z#popr   zoptional-semicolonr9   rI   z
(?:else)\b)z#popzswitch-bodyzbracket-openr9   z(?:case|default)\b)z
case-blockcase)z#popzcase-sepz
case-guardr9   )z#poprV   z(?!(?:case|default)\b|\}))z#poprU   zparenthesis-openr?   z\])z#popzarray-decl-sepr9   )z#popz
array-decl)z#popzarray-access-closer9   ;)z#popz
expr-chainzbracket-closer9   )z#popz
type-checkztype-full-name)z#popz
type-checkztype-struct)z#popz
type-checkztype-parenthesisz->z<(?!=)z
type-param>)rH   r?   )z#popztype-struct-sepr?   colonz
class-body)z#popztype-structz!~/(\\\\|\\[^\\]|[^/\\\n])*/[gim]*)z#popztype-param-sepztype-param-type)z#popz
type-param)z#popztype-param-constraint-sepztype-param-constraint-flagz	type-name)z#popztype-param-constraint-flag-type)z#popz#type-param-constraint-flag-type-sepr?   )z#popzparenthesis-closerD   r9   )z#popzvar-seprG   rD   zprop-get-set)z#popzcall-sepr9   )z#poprU   z(?!(?:\$\s*[a-z]\b|\$(?!z))))z#popzbracket-check)z#popzbracket-checkzstring-single)z#popzbracket-checkzstring-double)z#popblock)z#popz
object-sepr9   )z#poprZ   zoptional-semicolonz
expr-chain)z#popz
object-sepr9   rY   zident-or-string)z#popobject)irootr/   zstring-single-interpolzstring-singlezstring-doublezstring-interpol-closer2   r3   zimport-identr4   zpreproc-errorzpreproc-exprzpreproc-parenthesiszpreproc-expr-chainzpreproc-expr-in-parenthesisr5   zabstract-bodyzabstract-opaquezabstract-relationr0   z
meta-colonz
meta-identz	meta-bodyz	meta-callzmeta-call-sepr8   ztypedef-bodyr7   z	enum-bodyzenum-memberr6   rE   zbracket-openzbracket-closez
class-bodyzclass-memberzfunction-localzoptional-exprzclass-methodzfunction-paramzfunction-param-sepzprop-get-setzprop-get-set-optzexpr-statementr9   z
expr-chainrR   zmacro-classrK   z	cast-typerL   rO   zdo-whilerP   rQ   r   r   rN   zswitch-bodyrV   zcase-sepz
case-guardz
case-blockrM   z
array-declzarray-decl-sepzarray-accesszarray-access-closerH   rY   r1   zoptional-semicolonr:   rS   z	type-nameztype-full-namer?   ztype-parenthesisz
type-checkztype-structztype-struct-sepztype-param-typez
type-paramztype-param-sepztype-param-constraintztype-param-constraint-sepztype-param-constraint-flagztype-param-constraint-flag-typez#type-param-constraint-flag-type-seprI   zparenthesis-openzparenthesis-closerF   zvar-seprG   rD   rT   rU   zcall-seprJ   zbracket-checkrZ   r[   zident-or-stringz
object-sepc             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)1__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypeskeywordZtypeidr:   ZbinopZident_no_keywordr]   DOTALL	MULTILINEflagsr!   r.   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      s4  
































































































c               @   s   e Zd ZdZdZdZddgZdg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.

    .. versionadded:: 1.6
    Hxmlz0https://haxe.org/manual/compiler-usage-hxml.htmlhaxemlhxmlz*.hxmlr\   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`   ra   rb   rc   rd   re   rf   rg   r   r   r   Headingr
   r   r   r   rv   ru   r   ro   r{   r,   r,   r,   r-   r     s*   

)rc   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      s