
    L&i=                         d Z ddlZddlmZ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 dgZg dZ G d de          ZdS )z
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)ExtendedRegexLexerincludebygroupsdefaultwordsline_re)	CommentOperatorKeywordNameStringNumberPunctuationError
WhitespaceCrystalLexer)z!=z!~!%z&&&z***+-/z<=>z<<z<=<z===z==z=~=z>=z>>>z[]=z[]?z[]^z|||~c                      e Zd ZdZdZdZddgZdgZdgZe	j
        e	j        z  Zd Zd	 Zg d
ej        f ed                                d          ef ed                                dd          ej        fdej        f eg dd          ej        fd eeeej                  fd eeeej                  dfdedfd eeeej                  df ed                                dd          ej        fdej        j        f ed                                dd          ej        fdej        j        fdefdefdej        d fd! eeej                  d"fd#ej        d"fd$ eeej                  d"fd% eej        ee           fd& eej!        ee           fd' eej"        ee           fd( eej#        ee           fd) eej#        ee           fd* eej#        ee           fd+ eej$        ee           fd,ej%        j&        fd-ej%        j'        fd.ej%        j(        fd/ej%        j(        fd0ej%        j(        fd1e f e)d2          d3ej*        fd4ej        fd5ej+        d6fd7ej+        d8fd9 ee eej,                  d:f ee-d;<           ee ej                   fd= ee e          fd>efd?e fd@e fdAe.fdBefdC eej&        e ej/                  dDf e0dD          gdEej&        fdF ee.eej&        ee.          f e0dD          gdGej+        dHfdIej+        dDf e)dJ          gdKej+        dLfgdMej1        fg e)dN           e)dO          g e)dN          dPej        fdQej        fg e)dN          dPej2        fdQej2        fg e)dN          dRej        fdSej        fdPej        fdTej        fdUej        dDfgdVej        dDfgd5ej+        dHfdWej+        dDfdXef e)dJ          gd7ej+        dHfdYej+        dDf e)dJ          gdZe dHfd[e dDf e)dJ          gd\Z3e34                     e                       d]S )^r   z=
    For Crystal source code.

    .. versionadded:: 2.2
    Crystalzhttp://crystal-lang.orgcrcrystalz*.crztext/x-crystalc              #     K   |                     d          }|t          |                    d          fV  |                     d          t          j        |                    d          fV  |                     d          t          j        |                    d          fV  |                     d          t          j        |                    d          fV  |j                            dg           }t          |           }|	                    |                    d          dk    |                    d          f           |                     d          |_
        |                    d          |_        t          |          dk     r|                     |	          E d {V  n)|j
        t          j        |                    d          fV  |                                |_
        |rw|D ]S\  }}g }t          j        |j        |j
                  D ]}|r'|                                                                }	n&|                                                                }	|	|k    r|D ]7}
|
                                 t          j        |
                                fV  8|                                 t          j        |                                fV  |                                |_
         nK|	                    |           |D ]2}
|
                                 t&          |
                                fV  3Ut          |j                  |_        |d d = d S d S )
N            heredocstackz<<-   d   )context)startr
   groupr   Heredoc	Delimiter__dict__
setdefaultboolappendposendlenget_tokens_unprocessedr   finditertextstriprstripr   )selfmatchctxr-   r)   	outermosttoleranthdnamelinescheckamatchs              d/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/pygments/lexers/crystal.pyheredoc_callbackzCrystalLexer.heredoc_callback*   s      AXu{{1~~----kk!nnfnekk!nn<<<<kk!nnf.A>>>>kk!nnfnekk!nn<<<<|..~rBB\***	U[[^^u4ekk!nnEFFF++a..))A,,|s""2232??????????'6>5;;q>>9999))++ 	 $0 D D &$-ch@@ D DE 7 % 3 3 5 5 % 4 4 6 6&+ Q QF"(,,..&.&,,.."PPPPP#kkmmV-=u{{}}LLLL"'))++U++++ #( D D$llnneV\\^^CCCCC#(mmCGQQQ-	  	     c            
         i } dt           j        ft          t          d          t           j        fdt           j        fdt           j        fdt           j        dfdt          t           j        t                    fd	t           j        d
fdt           j        dfg| d<   dt           j        d	fdt           j        d	fdt           j        dffD ]1\  }}}t          |dk    rdnd          d|z  |fd|f||dfg| d|z   <   2dD ]\  }}}}d|z   t           j
        fg||k    |t           j
        dfgz  z   |t           j
        dft          d          d|z   dz   t           j
        fd|z   dz   t           j
        fgz   | |dz   <   | d                             d |z   t           j
        |dz   f           d!|z   dz   t           j
        fg||k    |t           j
        dfgz  z   |t           j
        dfd|z   dz   t           j
        fd|z   dz   t           j
        fgz   | |d"z   <   | d                             d#|z   t           j
        |d"z   f           d!|z   dz   t           j        fg||k    |t           j        dfgz  z   |d$z   t           j        dft          d%          d|z   dz   t           j        fd|z   dz   t           j        fgz   | |d&z   <   | d                             d'|z   t           j        |d&z   f           | S )(Nz
\:\w+[!?]?z\:prefixz:'(\\\\|\\[^\\]|[^'\\])*'z'(\\\\|\\'|[^']|\\[^'\\]+)'z:"z
simple-symz([a-zA-Z_]\w*)(:)(?!:)"zsimple-stringz(?<!\.)`zsimple-backtickstringsstringsymbacktick`string-escapedstring-intp-escapedz	[^\\%s#]+[\\#]#popzsimple-))\{\}z{}cb)\[\]z\[\]sb)z\(z\)z()pa)r   r   z<>ab)\|r^   r^   piz\\#pushz[\\#]z[^\\#z]+z-intp-stringz%Q?z\\[\\z-stringz%[qwi]z[imsx]*string-intpz-regexz%r)r   Symbolr   CRYSTAL_OPERATORSCharr   r   DoubleBacktickr   Otherr4   Regex)statesnamettyper6   lbracerbracebraceccs          rF   gen_crystalstrings_rulesz%CrystalLexer.gen_crystalstrings_rulesY   s   FM*$U333V]C)6=9+V[9FM<0&(L(LM6=/2&/+<=
y "*6=# >!&s ;!+V_c B!C 	 	D% DEMM((?TUU#U+5!eV$	&F9T>"",)	6 )	6)FFGT .+6!w/& +
 v.-..7"S(&,7G#d*FL9			+F4&' 9$$fvov|&*>&9&; < < < G#c)6<8&6!w/& &
 v.7"S(&,7G#d*FL9	&F4	>" 9$$i&&8&,&*9n&6 7 7 7 G#c)6<8%6!w/& %
 )#V\6:&&7"S(&,7G#d*FL9			%F4=! 9$$efnfl&*8m&5 6 6 6 6 rH   z#.*?$z
                abstract asm begin break case do else elsif end ensure extend if in
                include next of private protected require rescue return select self super
                then unless until when while with yield
            z\b)suffixzz
                previous_def forall out uninitialized __DIR__ __FILE__ __LINE__
                __END_LINE__
            z(?<!\.))rK   rq   z(\.(is_a\?|nil\?|responds_to\?|as\?|as\b))truefalsenilz2(module|lib)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z)(def|fun|macro)(\s+)((?:[a-zA-Z_]\w*::)*)funcnamezdef(?=[*%&^`~+-/\[<>=])zI(annotation|class|struct|union|type|alias|enum)(\s+)((?:[a-zA-Z_]\w*::)*)	classnamezN
                instance_sizeof offsetof pointerof sizeof typeof
            z+(?<!\.)(debugger\b|p!|pp!|record\b|spawn\b)z
                abort at_exit caller exit gets loop main p pp print printf puts
                raise rand read_line sleep spawn sprintf system
            z(?<!\.)(((class_)?((getter|property)\b[!?]?|setter\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\b)z/(?<!\w)(<<-?)(["`\']?)([a-zA-Z_]\w*)(\2)(.*?\n)z(<<-?)("|\')()(\2)(.*?\n)__END__end-partab  (?:^|(?<=[=<>~!:])|(?<=(?:\s|;)when\s)|(?<=(?:\s|;)or\s)|(?<=(?:\s|;)and\s)|(?<=\.index\s)|(?<=\.scan\s)|(?<=\.sub\s)|(?<=\.sub!\s)|(?<=\.gsub\s)|(?<=\.gsub!\s)|(?<=\.match\s)|(?<=(?:\s|;)if\s)|(?<=(?:\s|;)elsif\s)|(?<=^when\s)|(?<=^index\s)|(?<=^scan\s)|(?<=^sub\s)|(?<=^gsub\s)|(?<=^sub!\s)|(?<=^gsub!\s)|(?<=^match\s)|(?<=^if\s)|(?<=^elsif\s))(\s*)(/)multiline-regexz(?<=\(|,|\[)/z(\s+)(/)(?![\s=])z5(0o[0-7]+(?:_[0-7]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zA(0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z3(0b[01]+(?:_[01]+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)(?:e[+-]?[0-9]+)?(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)(?:_?f[0-9]+)?)(\s*)([/?])?zU((?:0(?![0-9])|[1-9][\d_]*)(?:\.\d[\d_]*)?(?:e[+-]?[0-9]+)?(?:_?f[0-9]+))(\s*)([/?])?z8(0\b|[1-9][\d]*(?:_\d+)*(?:_?[iu][0-9]+)?)\b(\s*)([/?])?z@@[a-zA-Z_]\w*z@[a-zA-Z_]\w*z\$\w+z\$[!@&`\'+~=/\\,;.<>_*$?:"^-]z\$-[0adFiIlpvw]z::rM   zi\?(\\[MC]-)*(\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})|\S)(?!\w)z[A-Z][A-Z_]+\b(?!::|\.)z\{%in-macro-controlz\{\{in-macro-exprz!(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)in-annotz(\.|::)rJ   z,(\.|::)([a-zA-Z_]\w*[!?]?|[*%&^`~+\-/\[<>=])z[a-zA-Z_]\w*(?:[!?](?!=))?z:(\[|\]\??|\*\*|<=>?|>=|<<?|>>?|=~|===|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&!^|~]=?z[(){};,/?:\\]z\s+z\(?:([a-zA-Z_]\w*)(\.))?([a-zA-Z_]\w*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rU   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rV   r`   rW   rootz#\{in-intpzR\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})rb   rR   rT   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rY   rZ   )r}   ru   rv   r~   rb   rR   rS   zinterpolated-regexzinterpolated-stringry   rx   rz   r{   r|   N)5__name__
__module____qualname____doc__rk   urlaliases	filenames	mimetypesreDOTALL	MULTILINEflagsrG   rp   r	   Singler   splitr   PseudoConstantr   r   r   	NamespaceBuiltinPreprocr   ri   r   Octr
   HexBinFloatIntegerVariableClassInstanceGlobalr   re   Interpol	Decoratorrd   r   Functionr   Escaperh   tokensupdate rH   rF   r   r      s         D
#CYGI!"II$E-  -  - ^F F FRF
w~&F
 U  	' ' ' )0	1F
 U  
5: : : <C>KF
 9'.IF
 U+++E:::G<LMF
  CXgz4>::<!F
$ :Xgz4>::JH%F
( (*=)F
* ZXgz4>::KI+F
0 U 
5: : :;B>K1F
8 <T\=PQ9F
< U  
5: : : <@<I=F
FY\ "GF
N @OF
T *+;<UF
V *5WF
Z. $8J==?P/R[F
L v|->?MF
P "88J#E#E QF
d FXfj*h779eF
h RXfj*h779iF
l DXfj*h779mF
t,XflJ99;uF
z,XflJ99;{F
@+XflJ99;AF
F IXfnj(;;=GF
L  34MF
N t}56OF
P t}+,QF
R .t}/CDSF
T  !56UF
V HWF
X GIYF
\ []F
d (7eF
h V_&89iF
j fo7kF
n 2Xh
DN;;ZIoF
v U$Z888Xh..0wF
z =Xh%%'{F
@ +D1AF
B%&.0CF
F "8,GF
H {+IF
J Z KF
P6 Xdj(DM::FD GFOO
 4:&-Xk:tz:{SSUGFOO	
 FOW-FOV,GFOO
 V_i0

 c]
 GM""G$%% 

 GM""v|$&
 GM""v|$& 
 GM""fl#V\"v|$&,'&,/
 GOV,
 V_g.V_f- '*GFOO	
 fow/fov.GFOO
 Hg&Hf%GFOO
MK KFX MM**,,-----rH   )r   r   pygments.lexerr   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   __all__rd   r   r   rH   rF   <module>r      s3    
			               # # # # # # # # # # # # # # # # # # # # # # 
   R. R. R. R. R.% R. R. R. R. R.rH   