+
    TBi=                         R t ^ RIt^ RIHtHtHtHtHtHt ^ RI	H
t
HtHtHtHtHtHtHtHt R.t. ROt ! R R]4      tR# )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CrystalLexerc                    v
  a  ] tR t^t o RtRtRtRR.tR.tR.t	Rt
]P                  ]P                  ,          tR	 tR
 tR. R]P$                  3N]! RP)                  4       RR7      ]3N]! RP)                  4       RRR7      ]P,                  3NR]P,                  3N]! . RaORR7      ]P.                  3NR]! ]]]P6                  4      3NR]! ]]]P6                  4      R3NR]R3NR]! ]]]P6                  4      R3N]! RP)                  4       RRR7      ]P,                  3NR]P8                  P,                  3N]! RP)                  4       RRR7      ]P8                  3NR]P8                  P,                  3NR]3NR]3NR ]P:                  R!3NR"]! ]]P>                  4      R#3NR$]P>                  R#3NR%]! ]]P>                  4      R#3NR&]! ] PB                  ]]"4      3NR']! ] PF                  ]]"4      3NR(]! ] PH                  ]]"4      3NR)]! ] PJ                  ]]"4      3NR*]! ] PJ                  ]]"4      3NR+]! ] PJ                  ]]"4      3NR,]! ] PL                  ]]"4      3NR-]PN                  PP                  3NR.]PN                  PR                  3NR/]PN                  PT                  3NR0]PN                  PT                  3NR1]PN                  PT                  3NR2]"3N]+! R34      NR4]PX                  3NR5]P.                  3NR6]PZ                  R73NR8]PZ                  R93NR:]! ]"]]P\                  4      R;3N]! ]/R<R=7      ]! ]"]PD                  4      3NR>]! ]"]4      3NR?]3NR@]"3NRA]"3NRB]03NRC]3NRRD]! ]PP                  ]"]Pb                  4      RE3]2! RE4      .RRF]PP                  3RG]! ]0]]PP                  ]]04      3]2! RE4      .RHRI]PZ                  RJ3RK]PZ                  RE3]+! R4      .RLRM]PZ                  RH3.RNRO]Pf                  3.RP]+! RL4      ]+! RN4      .RQ]+! RL4      RR]P>                  3RS]P>                  3.RT]+! RL4      RR]Ph                  3RS]Ph                  3.R#]+! RL4      RU]P>                  3RV]P>                  3RR]P>                  3RW]P>                  3RX]P>                  RE3.R!RY]P:                  RE3.R7R6]PZ                  RJ3RZ]PZ                  RE3R[]3]+! R4      .R9R8]PZ                  RJ3R\]PZ                  RE3]+! R4      .R;R]]"RJ3R^]"RE3]+! R4      ./t5]5Pm                  ]! 4       4       R_t7V t8R`# )br   z
For Crystal source code.
Crystalzhttps://crystal-lang.orgcrcrystalz*.crztext/x-crystalz2.2c              #    "   VP                  ^4      pV\        VP                  ^4      3x  VP                  ^4      \        P                  VP                  ^4      3x  VP                  ^4      \        P
                  VP                  ^4      3x  VP                  ^4      \        P                  VP                  ^4      3x  VP                  P                  R. 4      p\        V4      '       * pVP                  VP                  ^4      R8H  VP                  ^4      34       VP                  ^4      Vn
        VP                  ^4      Vn        \        V4      ^d8  d   V P                  VR7       Rj  xL
  M.VP                  \        P                  VP                  ^4      3x  VP                  4       Vn
        V'       Edq   V EFJ  w  rg. p\        P                  ! VP                   VP                  4       F  pV'       d    VP                  4       P#                  4       p	MVP                  4       P%                  4       p	W8X  d   V F4  p
V
P                  4       \        P                  V
P                  4       3x  K6  	  VP                  4       \        P
                  VP                  4       3x  VP                  4       Vn
         EK  VP                  V4       K  	  V F*  p
V
P                  4       \&        V
P                  4       3x  K,  	  EKM  	  \        VP                   4      Vn        VR R# R#  EL5i)   heredocstackz<<-)contextN:NNN)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   &&&        </usr/lib/python3.14/site-packages/pygments/lexers/crystal.pyheredoc_callbackCrystalLexer.heredoc_callback)   sV     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))+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   E6L?8L<9AL?
E3L?c            
        / p R \         P                  3\        \        RR7      \         P                  3R\         P                  3R\         P                  3R\         P                  R3R\        \         P                  \        4      3R\         P                  R	3R
\         P                  R3.V R&   R\         P                  R3R\         P                  R3R\         P                  R33 F2  w  rp\        VR8X  d   RMR4      RV R2V3RV3W2R3.V RV,           &   K4  	  R' EF  w  rEraRV,           \         P                  3.WE8g  V\         P                  R3.,          ,           V\         P                  R3\        R4      RV,           R,           \         P                  3RV,           R,           \         P                  3.,           WR,           &   V R,          P                  RV,           \         P                  VR,           34       R V,           R,           \         P                  3.WE8g  V\         P                  R3.,          ,           V\         P                  R3RV,           R,           \         P                  3RV,           R,           \         P                  3.,           WR!,           &   V R,          P                  R"V,           \         P                  VR!,           34       R V,           R,           \         P                  3.WE8g  V\         P                  R3.,          ,           VR#,           \         P                  R3\        R$4      RV,           R,           \         P                  3RV,           R,           \         P                  3.,           WR%,           &   V R,          P                  R&V,           \         P                  VR%,           34       EK  	  V # )(z
\:\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\\#pushz[\\#]z[^\\#z]+z-intp-stringz%Q?z\\[\\z-stringz%[qwi]z[imsx]*string-intpz-regexz%r))\{\}z{}cb)\[\]z\[\]sb)z\(z\)z()pa)<>z<>ab)\|rP   rP   pi)r   Symbolr   CRYSTAL_OPERATORSCharr   r   DoubleBacktickr   Otherr!   Regex)statesnamettyper#   lbracerbracebraceccs          r3   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     rootz#.*?$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(?<!\.))r8   rc   z(\.(is_a\?|nil\?|responds_to\?|as\?|as\b)z2(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__z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*)(/)z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::r:   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\{%zin-macro-controlz\{\{zin-macro-exprz!(@\[)(\s*)([A-Z]\w*(::[A-Z]\w*)*)zin-annotz(\.|::)r7   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*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rB   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))zin-intprF   rC   rG   rE   z#\{r?   zR\\([\\abefnrtv#"\']|[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\{[a-fA-F0-9 ]+\})r@   zinterpolated-regexrA   z[^\\#]+zinterpolated-stringz\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rI   rJ    N)truefalsenil)9__name__
__module____qualname____firstlineno____doc__rZ   urlaliases	filenames	mimetypesversion_addedreDOTALL	MULTILINEflagsr4   r_   r   Singler   splitr
   PseudoConstantr   r   r   	NamespaceBuiltinPreprocr   rX   r   Octr	   HexBinFloatIntegerVariableClassInstanceGlobalr   rT   Interpol	DecoratorrS   r   Functionr   EscaperW   tokensupdate__static_attributes____classdictcell__)__classdict__s   @r3   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
N 	6 djj(DMM:FD FO
 	4::&-k:tzz:{SUFO	
 	FOOW-FOOV,FO

 	V__i0
 	b]]

 	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*,--ra   )z!=z!~!%z&&&z***+-/z<=>z<<z<=rM   z===z==z=~=z>=z>>rN   z[]=z[]?z[]^z|||~)ro   ru   pygments.lexerr   r   r   r   r   r   pygments.tokenr   r	   r
   r   r   r   r   r   r   __all__rS   r   rg   ra   r3   <module>r      sI    
 # # # 
 Q.% Q.ra   