Your IP : 216.73.216.213
B
Ƚ�\�x � @ s� d Z ddlZddlmZmZmZmZmZ ddlm Z m
Z
mZmZm
Z
mZmZmZmZmZ ddgZG dd� de�ZG dd� de�ZdS ) z�
pygments.lexers.haxe
~~~~~~~~~~~~~~~~~~~~
Lexers for Haxe and related stuff.
:copyright: Copyright 2006-2019 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 Zd ZdZdZdddgZddgZdd d
gZdZdZ d
e d Z
dZde d e
Ze
je
jB Zg Zdd� Zed�ed�dejdfdejdfdejdfdejfdejdfdejd fd!ejd"fd#ejd$fd%ed&fgd'efd(ejfd)ejfd*efgd+ejd,fd-ejfd.e
d ejd/fed0�gd1ejd2fd3ejfd4ejfgd5ejd2fd3ejfd4ejfgd6e
ejfd7ejd2fged�e
ejfd8e d9fe!d2�ged�e
ejfd:efd8e d9fd;ejd/fe!d2�ged�d:ed2fe
ejd2fged�e
ejfd8e d9fe!d2�gd'ej"fd1ejd<fd5ejd=fe!d2�gd'ej"fd>ej"fd?ej"d@fe
ej"d2fdAe#j$fdBe#j$fdCe#j$fdDe#j$fdEe
dF e#j$fdGe#j%fdHe#j&fd1ejd<fd5ejd=fg
d'ej"fdIej"d2fe!dJ�gd'ej"feej"dKfe!d2�gd'ej"fd>ej"fd?ej"dLfe
ej"dMfdAe#j$dMfdBe#j$dMfdCe#j$dMfdDe#j$dMfdEe
dF e#j$dMfdGe#j%dMfdHe#j&dMfd1ejdNfd5ejdOfg
ed�e!dP�ged�dQe dRfged�d?e dSfe!d2�ged�dTejdUfdVe fe!d2�ged�dWej'dXfged�dYej'd2fe!d2�ged�e
ej'd2fged�d?ej'dZfe!d2�ged�dIej'd2fe!d[�ged�dIej'd2fdVe dZfged�e!d\�ged�d]e(d^fged�e!d_�ged�ed�d7e d2feed`fged�d?e dafe!db�ged�e!dc�ged�ddejdUfdVe fe!d2�ged�dQe d2fged�d7e d2fged�ed�d7e d2fdeejfe!df�ged�dgejdhfdiejdjfged�eej)dkfe!dk�ged�edl�e!d2�ged�e
ej)dkfged�dIe d2fdme feednfged�dIe d2fdVe dofged�d?e dpfe!d2�ged�dqed2feed2fged�e!dr�ged�dWej'dsfdte(fd?e dufdvejfdwejdxfdQe dyfdzej*d{fd|ed{fd}ed~fded�fd�ejd�fd�ed�fd�ed�fd�ed�fd�ed�fd�ed�fd�ed�fd�efd�ed�fd�ed�fd�ed2fd�e
d� ed�feed{fdAe#j$d{fdBe#j$d{fdCe#j$d{fdDe#j$d{fdEe
dF e#j$d{fdGe#j%d{fdHe#j&d{fd1ejd�fd5ejd�fd�ej+d{fd�e d�fg#ed�d�e(fee(d�fd�ed�fdme(d�fd�e d e,e e�fd�e d�fd?e d�fe!d2�g ed�ed�dYe d�fdejfdejd�fdejd�fd!ejd�fd#ejd�fe!d��g dQe dRfed �ged�d?e d�fe!d��ged�dVe d�fe!d2�ged�d�ed�fe!d2�ged�e!d��ged�d�ed�fged�d?e d�fged�d?e d�fged�d?e d�fged�d�ed�fe!d2�ged�e!d��ged�d�ed�fd7e d2fged�dYe d2fe!d��ged�dYe d2fdVe d�fged�d�ed�fe!d2�ged�d�ed&fe!d2�ged�e!d��ged�d�e d2fe!d��ged�d�e d2fdVe d�fged�e!d��ged�d�e d2fged�dVe d2fged�dYe d2fged�d�e d2fged�d�e d2fe!d2�ged�e
ed2fged�dQe d�fe!d{�ged�e ed2fged�d8e d/fe!d2�ged�dme fe
ed�fdQe d�fd?e d�fged�e!dS�ged�d�e d�fd�e d�fe!d2�ged�d7e d2fdme fd�e d�feed�fedǃged�d7e d2fdVe d�fgdAe#j$d2fdBe#j$d2fdCe#j$d2fdDe#j$d2fdEe
dF e#j$d2fdGe#j%d2fdHe#j&d2fd1ejd<fd5ejd=fd�ej+d2fd�e(d�fedU�ged�e!dʃged�d�e d2fdVe d�fged�d�e d�fe!d2�ged�d�e d2fdVe d�fged�dYe d�fe!d2�ged�d?e d�fe!d��ged�dIe d2fdVe dUfged�e!dσged�d?e d2fged�dIe d2fged�eed�fged�dVe d�fe!d2�ged�d]e(d�fe!d2�ged�dYe d�fe!d2�ged�dYe(d2fged�dIe d2fe!dуged�dIe d2fdVe d�fged�d�e
d� e ed�fd1ejd�fd5ejd�fe!dged�dYe d�fe!dڃged�d7e d2fe!d&�ged�d7e d2fe!dۃged�eed2fd1ejd<fd5ejd=fged�d7e d2fdVe d�fgdݜiZ-d�d߄ Z.d�S )�r zM
For Haxe source code (http://haxe.org/).
.. versionadded:: 1.3
ZHaxe�hxZhaxeZhxslz*.hxz*.hxslz text/haxeztext/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�}|dkr*| j�|jd d � � n<|dkrN| jrf| jd d d � |_n|dkrf| jrf| j�� |dkrz|j�d� |dkr�|j�d � |�� tjd
| fV |�� |_ d S )N� �if)�else�elseif����end)r r zpreproc-expr)�errorz
preproc-error�#)
�group�
preproc_stack�append�stack�pop�startr �Preprocr �pos)�self�match�ctx�proc� r) �E/opt/alt/python37/lib/python3.7/site-packages/pygments/lexers/haxe.py�preproc_callback; s
zHaxeLexer.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(?=.)zexpr-statementz\s+z
//[^\n\r]*z /\*.*?\*/z(#)(if|elseif|else|end|error)\bz\$\{)zstring-interpol-close�exprz\$\$z\$(?=�identz
string-single�'z#popz\\.�.�"z\$z\}z\.zimport-identz\*�in)z#popz
string-single)z#popz
string-doublez\!z\()z#popzpreproc-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|\.\.)z0x[0-9a-fA-F]+z[0-9]+z\)zpreproc-expr-in-parenthesis)z#popzpreproc-expr-in-parenthesis)z#popzpreproc-expr-chainzpreproc-parenthesis)z#popzpreproc-expr-chain)z#popzpreproc-expr-chainz
string-single)z#popzpreproc-expr-chainz
string-double)z#popz
abstract-bodyzabstract-relationzabstract-opaqueztype-param-constraintz type-namez\{)z#popz
class-body)z#popzparenthesis-close�typez(?:to|from)r<