3 ��X�$ � @ sf d Z ddlmZmZmZmZmZmZ ddlm Z m Z mZmZm Z mZmZmZ dgZG dd� de�ZdS )z� pygments.lexers.felix ~~~~~~~~~~~~~~~~~~~~~ Lexer for the Felix language. :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � )� RegexLexer�include�bygroups�default�words�combined)�Text�Comment�Operator�Keyword�Name�String�Number�Punctuation� FelixLexerc H @ s� e Zd ZdZdZddgZddgZdgZ�dZ�dZ �dZ �dZ�dZ�dZ �dZ�dZ�dZd�Zed��e�dd�d��ed�fe�dd�d��ed�fd�ed�fee d�d��efee d�d��ejfeed�d��ejfeed�d��ejfee d�d��ejfedăd�ejfd�ejfd�ejfd�e ejfd�e ejfd�e ejfd�e ejfd�e d�fd�e d�fd�e d�fd�e d�fd�e e!d�d̓fd�e e!d�dσfd�e e!d�dуfd�e e!d�dӃfd�e"fd�ej#fd�d�j$e� ej%fd�d�j$e� ej%j&fd�efgd�e'fd�e'fedU�d�e(j)d�fd�e(j)d[fgd�d�j$e� e*j+fd�e*fgd�e(j,fd�e(j-d�fgd�e(j-fd�e(j-d�fd�e(j-d�fd�e(j-fgd�e(d�fd�e(d�fd�e(fgedU�d�e.e(j)e'e �d�fd�e.e(j)e'e �d�fd�e.e(j)e'e �d�fd�e(j)fd�e(j)fd�e(j)fd�e(j)d�fged��d�ej/d�fd�e'd�fged��d�ej0d�fd�e'd�fged��d�e"�dfe1d��ged��d�ej2d�fged��edăd�e"d�fd�e"d�fd�e"fd�efd�efgd�e j3fg�d e j4f�de f�de f�de fgd�e fg�de d�f�de j3fe�d�g�de d�f�de j3fe�d�g�d e d�fe�d�e�d �g�de d�fe�d�e�d �g�d�Z5�d S ( r zZ For `Felix <http://www.felix-lang.org>`_ source code. .. versionadded:: 1.2 ZFelixZfelixZflxz*.flxz*.flxhztext/x-felix�elif�else�endif�if�ifdef�ifndef�_�_deref�all�as�assert�attempt�call�callback�case�caseno�cclass�code�compound�ctypes�do�done�downto� endattempt�endcase�endmatch�enum�except� exceptions�expect�finally�for�forall�forget�fork�functor�goto�ident� incomplete�inherit�instance� interface�jump�lambda�loop�match�module� namespace�new�noexpand�nonterm�obj�of�open�parse�raise�regexp�reglex�regmatch�rename�return�the�then�to�type�typecase�typedef� typematch�typeof�upto�when�whilst�with�yield�_gc_pointer�_gc_type�body�comment�const�export�header�inline�lval�macro�noinline�noreturn�package�private�pod�property�public�publish�requires�todo�virtual�use�def�let�ref�val�var�unit�void�any�bool�byte�offset�address�caddress� cvaddress�vaddress�tiny�short�int�long�vlong�utiny�ushort�vshort�uint�ulong�uvlong�int8�int16�int32�int64�uint8�uint16�uint32�uint64�float�double�ldouble�complex�dcomplex�lcomplex� imaginary� dimaginary� limaginary�char�wchar�uchar�charp�charcp�ucharp�ucharcp�string�wstring�ustring�cont�array�varray�list�lvalue�opt�slice�false�true�and�not�in�is�isin�or�xor�_svc�while�root�self�thisz*([tTsSiIlLvV]|ll|LL|([iIuU])(8|16|32|64))?� whitespace�axiom�ctor�fun�gen�proc�reduce�unionz\b)�suffix�funcname�class�cstruct�struct� classnamez(instance|module|typeclass)\b� modulename� operatorszK0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)[pP][+\-]?[0-9_]+[lLfFdD]?zH[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)[lLfFdD]?z/\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[lLfFdD]?z 0[Bb][01_]+%sz 0[0-7_]+%sz0[xX][0-9a-fA-F_]+%sz(0|[1-9][0-9_]*)%sz([rR][cC]?|[cC][rR])"""�tdqsz([rR][cC]?|[cC][rR])'''�tsqsz([rR][cC]?|[cC][rR])"�dqsz([rR][cC]?|[cC][rR])'�sqsz[cCfFqQwWuU]?"""�stringescapez[cCfFqQwWuU]?'''z[cCfFqQwWuU]?"z[cCfFqQwWuU]?'z[\[\]{}:(),;?]z[a-zA-Z_]\w*:>z(%s)\b�|z[a-zA-Z_]\w*z\nz\s+z #\s*if\s+0�if0�#z$!=|==|<<|>>|\|\||&&|[-~+/*%=<>&^|.$]z //(.*?)\nz/[*]�comment2z[^/*]z#pushz[*]/z#popz[/*]z^\s*#if.*?(?<!\\)\nz^\s*#endif.*?(?<!\\)\nz.*?\nz(import|include)(\s+)(<[^>]*?>)z(import|include)(\s+)("[^"]*?")z(import|include)(\s+)('[^']*?')z[^/\n]+�/z (?<=\\)\nz(?=\()z(?=\{)z\[�modulename2�tvarlistz([a-zA-Z_]\w*)z#pop:2z\]�,z(with|where)\bzY\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})zP%(\([a-zA-Z0-9]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]z[^\\\'"%\n]+z[\'"\\]�%�"z \\\\|\\"|\\\n�strings�'z \\\\|\\'|\\\nz"""�nlz''')r� r� r� r^ r� r� rd r� r� r� r� r� r� r� r� r� r� r� r� N)r r r r r r )Hr r r r r r r r r r r! r"