U
    G
\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-2017 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HaxehxZhaxeZhxslz*.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   preproc-expr)errorpreproc-error#)
grouppreproc_stackappendstackpopstartr   Preprocr   pos)selfmatchZctxproc r*   6/usr/lib/python3/dist-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(?=.)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=   rD   )r=   preproc-expr-chainrC   )r=   rE   )r=   rE   r;   )r=   rE   rB   )r=   abstract-bodyabstract-relationabstract-opaquetype-param-constraint	type-namez\{)r=   
class-body)r=   parenthesis-closetypez(?:to|from)rM   ,@)	meta-body
meta-ident
meta-colon:)r=   	meta-call)r=   meta-call-sepr9   )r=   typedef-bodyrI   rJ   =)r=   optional-semicolonrM   )r=   	enum-bodybracket-openrI   rJ   )enum-memberrI   )r=   r/   flagfunction-param)r=   r/   r\   )r=   rK   rZ   extendsrI   rJ   z(?:extends|implements)\bz9(?:static|public|private|override|dynamic|inline|macro)\bclass-memberz(var)\b)r=   rX   varz(function)\b)r=   rX   class-method)r=   optional-exprr\   r]   parenthesis-openrI   r9   z\?)r=   function-param-sepassignr\   )r=   r]   )r=   rL   prop-get-set-optcommarf   z((?:default|null|never|dynamic|get|set)\b)r=   rX   r9   )r=   rb   rP   rQ   rR   z(?:\+\+|\-\-|~(?!/)|!|\-))r=   
expr-chainparenthesisz3(?:static|public|private|override|dynamic|inline)\bz(?:function)\b)r=   rh   function-local)r=   rh   bracketz(?:true|false|null)\b)r=   rh   z
(?:this)\bz
(?:cast)\b)r=   rh   castz	(?:try)\b)r=   catchr9   z	(?:var)\b)r=   r`   z	(?:new)\b)r=   rh   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=   rb   z(?:macro)\b)r=   macroz(?:continue|break)\bz(?:\$\s*[a-z]\b|\$(?!z)))r=   dollar)r=   rh   string-single-interpol)r=   rh   rB   z~/(\\\\|\\/|[^/\n])*/[gimsu]*z\[)r=   rh   
array-declz(?:\+\+|\-\-))r=   r9   z(?:in)\b)r=   r9   ternaryr9   z(\.)(array-accesscall)r=   rM   )r=   rX   r3   )r=   rX   macro-class)r=   rX   r5   )r=   rX   r6   )r=   rL   	cast-typer9   z(?:catch)\b)r9   r]   rc   )r=   do-whiler9   )r=   ri   rc   )r=   r9   ri   )r=   r   rX   r9   ri   z
(?:else)\b)r=   switch-bodyrZ   r9   z(?:case|default)\b)
case-blockcase)r=   case-sep
case-guardr9   )r=   r   z(?!(?:case|default)\b|\}))r=   ry   rc   rM   z\])r=   array-decl-sepr9   )r=   rv   )r=   array-access-closer9   ;)r=   rh   bracket-closer9   )r=   
type-checktype-full-name)r=   r   type-struct)r=   r   type-parenthesisz->z<(?!=)
type-param>)rg   rM   )r=   type-struct-seprM   colonrK   )r=   r   z~/(\\\\|\\/|[^/\n])*/[gim]*)r=   type-param-septype-param-type)r=   r   )r=   type-param-constraint-septype-param-constraint-flagrJ   )r=   type-param-constraint-flag-type)r=   #type-param-constraint-flag-type-seprM   )r=   rL   r\   r9   )r=   var-sepre   r\   prop-get-set)r=   call-sepr9   )r=   ry   z(?!(?:\$\s*[a-z]\b|\$(?!z))))r=   bracket-check)r=   r   r;   )r=   r   rB   )r=   block)r=   
object-sepr9   )r=   r   rX   rh   )r=   r   r9   r   ident-or-string)r=   object)irootr-   ru   r;   rB   r8   r0   r1   r@   r2   r   r   rC   rE   rD   r3   rF   rH   rG   r.   rR   rQ   rP   rT   rU   r6   rV   r5   rY   r[   r4   r^   rZ   r   rK   r_   rj   rb   ra   r]   rd   r   rf   r7   r9   rh   rs   rz   rl   r{   rm   rp   r|   rq   rr   r   r   ro   r}   r   r   r   r~   rn   rv   r   rx   r   rg   r   r/   rX   r:   rt   rJ   r   rM   r   r   r   r   r   r   r   rI   r   r   r   r   ri   rc   rL   r`   r   re   r\   rw   ry   r   rk   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)/__name__
__module____qualname____doc__namealiases	filenamesZ	mimetypeskeywordZtypeidr:   ZbinopZident_no_keywordr   DOTALL	MULTILINEflagsr    r,   r   r
   Z	NamespaceZDeclarationr   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  






































	



		












4



			
	








		




	            .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*.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   r   r   r   r   r   r   r   r   r   ZHeadingr
   r   r   r   r   r   r   r   r   r*   r*   r*   r+   r     s@       )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