B
    `x                 @   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-2021 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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d/fed0gd1ejd2fd3ejfd4ejfgd5ejd2fd3ejfd4ejfgd6e
 ejfd7ejd2fgede
ejfd8e d9fe!d2gede
ejfd:efd8e d9fd;ejd/fe!d2gedd:ed2fe
ejd2fgede
ejfd8e d9fe!d2gd'ej"fd1ejd<fd5ejd=fe!d2gd'ej"fd>ej"fd?ej"d@fe
ej"d2fdAe#j$fdBe#j$fdCe#j$fdDe#j$fdEe
 dF e#j$fdGe#j%fdHe#j&fd1ejd<fd5ejd=fgd'ej"fdIej"d2fe!dJgd'ej"feej"dKfe!d2gd'ej"fd>ej"fd?ej"dLfe
ej"dMfdAe#j$dMfdBe#j$dMfdCe#j$dMfdDe#j$dMfdEe
 dF e#j$dMfdGe#j%dMfdHe#j&dMfd1ejdNfd5ejdOfgede!dPgeddQe dRfgedd?e dSfe!d2geddTejdUfdVe fe!d2geddWej'dXfgeddYej'd2fe!d2gede
ej'd2fgedd?ej'dZfe!d2geddIej'd2fe!d[geddIej'd2fdVe dZfgede!d\gedd]e(d^fgede!d_gededd7e d2feed`fgedd?e dafe!dbgede!dcgedddejdUfdVe fe!d2geddQe d2fgedd7e d2fgededd7e d2fdeejfe!dfgeddgejdhfdiejdjfgedeej)dkfe!dkgededle!d2gede
ej)dkfgeddIe d2fdme feednfgeddIe d2fdVe dofgedd?e dpfe!d2geddqed2feed2fgede!drgeddWej'dsfdte(fd?e dufdvejfdwejdxfdQe dyfdzej*d{fd|ed{fd}ed~fde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d{fdAe#j$d{fdBe#j$d{fdCe#j$d{fdDe#j$d{fdEe
 dF e#j$d{fdGe#j%d{fdHe#j&d{fd1ejdfd5ejdfdej+d{fde dfg#edde(fee(dfdedfdme(dfde d e,e efde dfd?e dfe!d2g	ededdYe dfdejfdejdfdejdfd!ejdfd#ejdfe!dg	dQe dRfed gedd?e dfe!dgeddVe dfe!d2geddedfe!d2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!d2gede!dgeddedfd7e d2fgeddYe d2fe!dgeddYe d2fdVe dfgeddedfe!d2gedded&fe!d2gede!dgedde d2fe!dgedde d2fdVe dfgede!dgedde d2fgeddVe d2fgeddYe d2fgedde d2fgedde d2fe!d2gede
ed2fgeddQe dfe!d{gede	ed2fgedd8e d/fe!d2geddme fe
edfdQe dfd?e dfgede!dSgedde dfde dfe!d2gedd7e d2fdme fde dfeedfedǃgedd7e d2fdVe dfgdAe#j$d2fdBe#j$d2fdCe#j$d2fdDe#j$d2fdEe
 dF e#j$d2fdGe#j%d2fdHe#j&d2fd1ejd<fd5ejd=fdej+d2fde(dfedUgede!dʃgedde d2fdVe dfgedde dfe!d2gedde d2fdVe dfgeddYe dfe!d2gedd?e dfe!dgeddIe d2fdVe dUfgede!dσgedd?e d2fgeddIe d2fgedeedfgeddVe dfe!d2gedd]e(dfe!d2geddYe dfe!d2geddYe(d2fgeddIe d2fe!dуgeddIe d2fdVe dfgedde
 d e edfd1ejdfd5ejdfe!d؃geddYe dfe!dڃgedd7e d2fe!d&gedd7e d2fe!dۃgedeed2fd1ejd<fd5ejd=fgedd7e d2fdVe dfgdݜiZ-dd߄ Z.dS )r   zM
    For Haxe source code (http://haxe.org/).

    .. versionadded:: 1.3
    ZHaxeZ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matchctxproc r)   \/home/kop/projects/devel/pgwui/test_venv/lib/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-sepr6   )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.   rA   )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-exprrA   zfunction-paramzparenthesis-openztype-param-constraintr6   z\?)z#popzfunction-param-sepassignrA   )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-semicolonr6   )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catchr6   z	(?:var)\b)z#poprC   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#popr6   z(?:in)\b)z#popr6   ternaryr6   z(\.)(zarray-accesscall)z#popr<   )z#popzoptional-semicolonr2   )z#popzoptional-semicolonzmacro-class)z#popzoptional-semicolonr4   )z#popzoptional-semicolonr5   )z#popzparenthesis-closez	cast-typer6   z(?:catch)\b)r6   zfunction-paramzparenthesis-open)z#popzdo-whiler6   )z#poprF   zparenthesis-open)z#popr6   rF   )z#popr   zoptional-semicolonr6   rF   z
(?:else)\b)z#popzswitch-bodyzbracket-openr6   z(?:case|default)\b)z
case-blockcase)z#popzcase-sepz
case-guardr6   )z#poprS   z(?!(?:case|default)\b|\}))z#poprR   zparenthesis-openr<   z\])z#popzarray-decl-sepr6   )z#popz
array-decl)z#popzarray-access-closer6   ;)z#popz
expr-chainzbracket-closer6   )z#popz
type-checkztype-full-name)z#popz
type-checkztype-struct)z#popz
type-checkztype-parenthesisz->z<(?!=)z
type-param>)rE   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-closerA   r6   )z#popzvar-seprD   rA   zprop-get-set)z#popzcall-sepr6   )z#poprR   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-sepr6   )z#poprW   zoptional-semicolonz
expr-chain)z#popz
object-sepr6   rV   zident-or-string)z#popobject)irootr,   zstring-single-interpolzstring-singlezstring-doublezstring-interpol-closer/   r0   zimport-identr1   zpreproc-errorzpreproc-exprzpreproc-parenthesiszpreproc-expr-chainzpreproc-expr-in-parenthesisr2   zabstract-bodyzabstract-opaquezabstract-relationr-   z
meta-colonz
meta-identz	meta-bodyz	meta-callzmeta-call-sepr5   ztypedef-bodyr4   z	enum-bodyzenum-memberr3   rB   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-statementr6   z
expr-chainrO   zmacro-classrH   z	cast-typerI   rL   zdo-whilerM   rN   r   r   rK   zswitch-bodyrS   zcase-sepz
case-guardz
case-blockrJ   z
array-declzarray-decl-sepzarray-accesszarray-access-closerE   rV   r.   zoptional-semicolonr7   rP   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-seprF   zparenthesis-openzparenthesis-closerC   zvar-seprD   rA   rQ   rR   zcall-seprG   zbracket-checkrW   rX   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)/__name__
__module____qualname____doc__namealiases	filenames	mimetypeskeywordZtypeidr7   ZbinopZident_no_keywordrZ   DOTALL	MULTILINEflagsr   r+   r   r
   	NamespaceZDeclarationr   r   SingleZ	Multiliner   ZInterpolZEscapeDoubler   r   r   r#   r   ZFloatHexIntegerZ	Decoratorr	   ZFunctionZConstantRegexr   tokensr\   r)   r)   r)   r*   r      s2  
































































































c               @   s   e 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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   zb
    Lexer for `haXe build <http://haxe.org/doc/compiler>`_ files.

    .. versionadded:: 1.6
    ZHxmlZhaxemlZhxmlz*.hxmlrY   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`   ra   rb   rc   r   r   r   ZHeadingr
   r   r   r   rm   rl   r   rj   ro   r)   r)   r)   r*   r     s(   

)r`   rZ   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