
    5h=                         S r SSKrSSKJrJrJrJrJrJr  SSK	J
r
JrJrJrJrJrJrJrJr  S/r/ SQr " S S\5      rg)z
pygments.lexers.crystal
~~~~~~~~~~~~~~~~~~~~~~~

Lexer for Crystal.

:copyright: Copyright 2006-2025 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                   $
   \ rS rSrSrSrSrSS/rS/rS/r	S	r
\R                  \R                  -  rS
 rS r/ S\R$                  4P\" SR)                  5       SS9\4P\" SR)                  5       SSS9\R,                  4PS\R,                  4P\" / SQSS9\R.                  4PS\" \\\R6                  5      4PS\" \\\R6                  5      S4PS\S4PS\" \\\R6                  5      S4P\" SR)                  5       SSS9\R,                  4PS\R8                  R,                  4P\" SR)                  5       SSS9\R8                  4PS\R8                  R,                  4PS\4PS \4PS!\R:                  S"4PS#\" \\R>                  5      S$4PS%\R>                  S$4PS&\" \\R>                  5      S$4PS'\" \ RB                  \\"5      4PS(\" \ RF                  \\"5      4PS)\" \ RH                  \\"5      4PS*\" \ RJ                  \\"5      4PS+\" \ RJ                  \\"5      4PS,\" \ RJ                  \\"5      4PS-\" \ RL                  \\"5      4PS.\RN                  RP                  4PS/\RN                  RR                  4PS0\RN                  RT                  4PS1\RN                  RT                  4PS2\RN                  RT                  4PS3\"4P\+" S45      PS5\RX                  4PS6\R.                  4PS7\RZ                  S84PS9\RZ                  S:4PS;\" \"\\R\                  5      S<4P\" \/S=S>9\" \"\RD                  5      4PS?\" \"\5      4PS@\4PSA\"4PSB\"4PSC\04PSD\4PSE\" \RP                  \"\Rb                  5      SF4\2" SF5      /SG\RP                  4SH\" \0\\RP                  \\05      4\2" SF5      /SI\RZ                  SJ4SK\RZ                  SF4\+" SL5      /SM\RZ                  SN4/SO\Rf                  4/\+" SP5      \+" SQ5      /\+" SP5      SR\R>                  4SS\R>                  4/\+" SP5      SR\Rh                  4SS\Rh                  4/\+" SP5      ST\R>                  4SU\R>                  4SR\R>                  4SV\R>                  4SW\R>                  SF4/SX\R:                  SF4/S7\RZ                  SJ4SY\RZ                  SF4SZ\4\+" SL5      /S9\RZ                  SJ4S[\RZ                  SF4\+" SL5      /S\\"SJ4S]\"SF4\+" SL5      /S^.r5\5Rm                  \" 5       5        S_r7g`)ar      z
For Crystal source code.
Crystalzhttps://crystal-lang.orgcrcrystalz*.crztext/x-crystalz2.2c              #   t  #    UR                  S5      nU[        UR                  S5      4v   UR                  S5      [        R                  UR                  S5      4v   UR                  S5      [        R
                  UR                  S5      4v   UR                  S5      [        R                  UR                  S5      4v   UR                  R                  S/ 5      n[        U5      (       + nUR                  UR                  S5      S:H  UR                  S5      45        UR                  S5      Ul
        UR                  S5      Ul        [        U5      S:  a  U R                  US	9 S h  vN   O.UR                  [        R                  UR                  S5      4v   UR                  5       Ul
        U(       Gao  U GHH  u  pg/ n[        R                  " UR                   UR                  5       H  nU(       a  UR                  5       R#                  5       n	OUR                  5       R%                  5       n	X:X  a  U H4  n
U
R                  5       [        R                  U
R                  5       4v   M6     UR                  5       [        R
                  UR                  5       4v   UR                  5       Ul
          GM  UR                  U5        M     U H*  n
U
R                  5       [&        U
R                  5       4v   M,     GMK     [        UR                   5      Ul        US S 2	 g g  GN7f)
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              b/var/www/html/cementerio_25MayoBackend/env/lib/python3.13/site-packages/pygments/lexers/crystal.pyheredoc_callbackCrystalLexer.heredoc_callback)   sT     AXu{{1~--kk!nfnnekk!n<<kk!nf..A>>kk!nfnnekk!n<<||..~rB\**	U[[^u4ekk!nEF++a.))A,|s"2232???''6>>5;;q>99))+$0 $--chh@E % 3 3 5 % 4 4 6&+F"(,,.&..&,,."PP ',#kkmV-=-=u{{}LL"'))+U+ A #($llneV\\^CC #(# %1& #((mCGQ-  @s   E2L84L55GL8c            
      X   0 n S[         R                  4[        [        SS9[         R                  4S[         R                  4S[         R                  4S[         R                  S4S[        [         R                  [        5      4S	[         R                  S
4S[         R                  S4/U S'   S[         R                  S	4S[         R                  S	4S[         R                  S44 H-  u  pn[        US:X  a  SOS5      SU S3U4SU4X2S4/U SU-   '   M/     S GH  u  pEpaSU-   [         R                  4/XE:g  U[         R                  S4/-  -   U[         R                  S4[        S5      SU-   S-   [         R                  4SU-   S-   [         R                  4/-   XS -   '   U S   R                  S!U-   [         R                  US -   45        S"U-   S-   [         R                  4/XE:g  U[         R                  S4/-  -   U[         R                  S4SU-   S-   [         R                  4SU-   S-   [         R                  4/-   XS#-   '   U S   R                  S$U-   [         R                  US#-   45        S"U-   S-   [         R                  4/XE:g  U[         R                  S4/-  -   US%-   [         R                  S4[        S&5      SU-   S-   [         R                  4SU-   S-   [         R                  4/-   XS'-   '   U S   R                  S(U-   [         R                  US'-   45        GM     U $ ))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[^\\z#]+[\\#]#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   Otherr5   Regex)statesnamettyper7   lbracerbracebraceccs          rG   gen_crystalstrings_rules%CrystalLexer.gen_crystalstrings_rulesX   sp   FMM*$U3V]]C)6==9+V[[9FMM<0&(LM6==/2&//+<=
y "*6==# >!&s ;!+V__c B!CD DEM(?TUS!5)5!V$	&F9T>"!C, *FG .+!w/& +
 v.-.7"S(&,,7G#d*FLL9			+F&' 9$$fvov||&*>&9&; < G#c)6<<8&!w/& &
 v.7"S(&,,7G#d*FLL9	&F	>" 9$$i&&8&,,&*9n&6 7 G#c)6<<8%!w/& %
 )#V\\6:&7"S(&,,7G#d*FLL9			%F=! 9$$efnfll&*8m&5 6O,T     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(?<!\.))rL   rt   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::rN   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(\.|::)rK   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*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rV   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rW   ra   rX   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 ]+\})rc   rS   rU   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rZ   r[   )r   rx   ry   r   rc   rS   rT   zinterpolated-regexzinterpolated-stringr|   r{   r}   r~   r    N)8__name__
__module____qualname____firstlineno____doc__rl   urlaliases	filenames	mimetypesversion_addedreDOTALL	MULTILINEflagsrH   rq   r	   Singler   splitr   PseudoConstantr   r   r   	NamespaceBuiltinPreprocr   rj   r   Octr
   HexBinFloatIntegerVariableClassInstanceGlobalr   rf   Interpol	Decoratorre   r   Functionr   Escaperi   tokensupdate__static_attributes__r   rs   rG   r   r      s    D
$CYGI!"IMII$E- ^FRF
w~~&F
   	' )0	1F
   
5: <C>>KF
 9'..IF
 +E:G<L<LMF
  Cgz4>>:<!F
$ :gz4>>:JH%F
( (*=)F
* Zgz4>>:KI+F
0  
5:;B>>K1F
8 <T\\=P=PQ9F
<   
5: <@<<I=F
FY\\  "GF
N @OF
T *+;<UF
V *5WF
Z. $J=?P/R[F
L v||->?MF
P "8J#E QF
d Ffjj*h79eF
h Rfjj*h79iF
l Dfjj*h79mF
t,fllJ9;uF
z,fllJ9;{F
@+fllJ9;AF
F Ifnnj(;=GF
L  3 34MF
N t}}556OF
P t}}++,QF
R .t}}/C/CDSF
T  !5!56UF
V HWF
X IYF
\ [[]F
d (7eF
h V__&89iF
j foo7kF
n 2h
DNN;ZIoF
v $Z8h.0wF
z =h%'{F
@ +D1AF
B%&.0CF
F "8,GF
H {+IF
J Z KF
P6 djj(DMM:FD FO
 4::&-k:tzz:{SUFO	
 FOOW-FOOV,FO
 V__i0

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

 M"v||$&
 M"v||$& 
 M"fll#V\\"v||$&,,'&,,/
 GOOV,
 V__g.V__f- '*FO	
 foow/foov.FO
 Hg&Hf%FO
MKFX MM*,-rs   )r   r   pygments.lexerr   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   __all__re   r   r   rs   rG   <module>r      sI    
 # # # 
 Q.% Q.rs   