B
    b 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-2022 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
    ZHaxezhttp://haxe.org/ZhaxeZ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matchZctxproc r(   3lib/python3.7/site-packages/pygments/lexers/haxe.pypreproc_callback;   s    

zHaxeLexer.preproc_callbackspacesmetaz(?:package)\b)	semicolonpackagez(?:import)\b)r-   importz(?:using)\b)r-   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-sepr5   )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#popr-   flagzfunction-param)z#popr-   r@   )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-exprr@   zfunction-paramzparenthesis-openztype-param-constraintr5   z\?)z#popzfunction-param-sepassignr@   )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-semicolonr5   )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catchr5   z	(?:var)\b)z#poprB   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#popr5   z(?:in)\b)z#popr5   ternaryr5   z(\.)(zarray-accesscall)z#popr;   )z#popzoptional-semicolonr1   )z#popzoptional-semicolonzmacro-class)z#popzoptional-semicolonr3   )z#popzoptional-semicolonr4   )z#popzparenthesis-closez	cast-typer5   z(?:catch)\b)r5   zfunction-paramzparenthesis-open)z#popzdo-whiler5   )z#poprE   zparenthesis-open)z#popr5   rE   )z#popr   zoptional-semicolonr5   rE   z
(?:else)\b)z#popzswitch-bodyzbracket-openr5   z(?:case|default)\b)z
case-blockcase)z#popzcase-sepz
case-guardr5   )z#poprR   z(?!(?:case|default)\b|\}))z#poprQ   zparenthesis-openr;   z\])z#popzarray-decl-sepr5   )z#popz
array-decl)z#popzarray-access-closer5   ;)z#popz
expr-chainzbracket-closer5   )z#popz
type-checkztype-full-name)z#popz
type-checkztype-struct)z#popz
type-checkztype-parenthesisz->z<(?!=)z
type-param>)rD   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-closer@   r5   )z#popzvar-seprC   r@   zprop-get-set)z#popzcall-sepr5   )z#poprQ   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-sepr5   )z#poprV   zoptional-semicolonz
expr-chain)z#popz
object-sepr5   rU   zident-or-string)z#popobject)irootr+   zstring-single-interpolzstring-singlezstring-doublezstring-interpol-closer.   r/   zimport-identr0   zpreproc-errorzpreproc-exprzpreproc-parenthesiszpreproc-expr-chainzpreproc-expr-in-parenthesisr1   zabstract-bodyzabstract-opaquezabstract-relationr,   z
meta-colonz
meta-identz	meta-bodyz	meta-callzmeta-call-sepr4   ztypedef-bodyr3   z	enum-bodyzenum-memberr2   rA   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-statementr5   z
expr-chainrN   zmacro-classrG   z	cast-typerH   rK   zdo-whilerL   rM   r   r   rJ   zswitch-bodyrR   zcase-sepz
case-guardz
case-blockrI   z
array-declzarray-decl-sepzarray-accesszarray-access-closerD   rU   r-   zoptional-semicolonr6   rO   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-seprE   zparenthesis-openzparenthesis-closerB   zvar-seprC   r@   rP   rQ   zcall-seprF   zbracket-checkrV   rW   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	filenamesZ	mimetypeskeywordZtypeidr6   ZbinopZident_no_keywordrY   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FunctionZConstantZ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
    ZHxmlz0https://haxe.org/manual/compiler-usage-hxml.htmlZhaxemlZhxmlz*.hxmlrX   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`   ra   rb   rc   r   r   r   ZHeadingr
   r   r   r   rl   rk   r   ri   rm   r(   r(   r(   r)   r     s*   

)r_   rY   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