Ë
    |í¼e�=  ã                   ó€   — 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y)zÅ
    pygments.lexers.crystal
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexer for Crystal.

    :copyright: Copyright 2006-2023 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j%                  «       d¬«      ef‘ edj%                  «       dd¬«      ej(                  f‘dej(                  f‘ eg d¢d¬«      ej*                  f‘d eeeej2                  «      f‘d eeeej2                  «      df‘dedf‘d eeeej2                  «      df‘ edj%                  «       dd¬«      ej(                  f‘dej4                  j(                  f‘ edj%                  «       dd¬«      ej4                  f‘dej4                  j(                  f‘def‘def‘dej6                  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jB                  ee «      f‘d' eejD                  ee «      f‘d( eejF                  ee «      f‘d) eejF                  ee «      f‘d* eejF                  ee «      f‘d+ eejH                  ee «      f‘d,ejJ                  jL                  f‘d-ejJ                  jN                  f‘d.ejJ                  jP                  f‘d/ejJ                  jP                  f‘d0ejJ                  jP                  f‘d1e f‘ e)d2«      ‘d3ejT                  f‘d4ej*                  f‘d5ejV                  d6f‘d7ejV                  d8f‘d9 ee eejX                  «      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jL                  e ej^                  «      dDf e0dD«      gdEejL                  fdF ee.eejL                  ee.«      f e0dD«      gdGejV                  dHfdIejV                  dDf e)dJ«      gdKejV                  dLfgdMejb                  fg e)dN«       e)dO«      g e)dN«      dPej:                  fdQej:                  fg e)dN«      dPejd                  fdQejd                  fg e)dN«      dRej:                  fdSej:                  fdPej:                  fdTej:                  fdUej:                  dDfgdVej6                  dDfgd5ejV                  dHfdWejV                  dDfdXef e)dJ«      gd7ejV                  dHfdYejV                  dDf e)dJ«      gdZe dHfd[e dDf e)dJ«      gd\œZ3e3ji                   e«       «       y])^r   z=
    For Crystal source code.

    .. versionadded:: 2.2
    ÚCrystalzhttps://crystal-lang.orgÚcrÚcrystalz*.crztext/x-crystalc              #   óH  K  — |j                  d«      }|t        |j                  d«      f–— |j                  d«      t        j                  |j                  d«      f–— |j                  d«      t        j
                  |j                  d«      f–— |j                  d«      t        j                  |j                  d«      f–— |j                  j                  dg «      }t        |«       }|j                  |j                  d«      dk(  |j                  d«      f«       |j                  d«      |_
        |j                  d«      |_        t        |«      dk  r| j                  |¬	«      E d {  –—†  n.|j                  t        j                  |j                  d«      f–— |j                  «       |_
        |�r`|D �]:  \  }}g }t        j                  |j                   |j                  «      D ]×  }|r|j                  «       j#                  «       }	n|j                  «       j%                  «       }	|	|k(  r€|D ]3  }
|
j                  «       t        j                  |
j                  «       f–— Œ5 |j                  «       t        j
                  |j                  «       f–— |j                  «       |_
         Œú|j                  |«       ŒÙ |D ])  }
|
j                  «       t&        |
j                  «       f–— Œ+ �Œ= t        |j                   «      |_        |d d …= y y 7 �Œ­­w)
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              ú9/usr/lib/python3/dist-packages/pygments/lexers/crystal.pyÚheredoc_callbackzCrystalLexer.heredoc_callback*   st  è ø€ ð —‘˜A“ˆØ”X˜uŸ{™{¨1›~Ð-Ò-Ø�k‰k˜!‹nœfŸn™n¨e¯k©k¸!«nÐ<Ò<Ø�k‰k˜!‹nœf×.Ñ.°·±¸A³Ð>Ò>Ø�k‰k˜!‹nœfŸn™n¨e¯k©k¸!«nÐ<Ò<à—|‘|×.Ñ.¨~¸rÓBˆÜ˜\Ó*Ð*ˆ	Ø×Ñ˜UŸ[™[¨›^¨uÑ4°e·k±kÀ!³nÐEÔFà—+‘+˜a“.ˆŒØ—)‘)˜A“,ˆŒäˆ|Ó˜sÒ"Ø×2Ñ2¸3Ð2Ó?×?Ñ?à—'‘'œ6Ÿ>™>¨5¯;©;°q«>Ð9Ò9Ø—)‘)“+ˆŒâà$0ó DÑ �˜&Ø�Ü$×-Ñ-¨c¯h©h¸¿¹Ó@ò D�EÙØ %§¡£× 3Ñ 3Ó 5™à %§¡£× 4Ñ 4Ó 6˜Ø ’Ø&+ò Q˜FØ"(§,¡,£.´&·.±.À&Ç,Á,Ã.Ð"PÓPðQà#Ÿk™k›m¬V×-=Ñ-=¸u¿{¹{»}ÐLÒLØ"'§)¡)£+˜œÙàŸ™ UÕ+ðDð #(ò D˜Ø$Ÿl™l›n¬e°V·\±\³^ÐCÓCòDð#Dô& ˜#Ÿ(™(“mˆCŒGØšQ‘ð- ð @ûs   ‚E0L"Å2LÅ3F-L"c            
      óf  — 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 ],  \  }}}t        |dk(  rdnd«      d|z  |fd|f||dfg| d|z   <   Œ. dD �]  \  }}}}d|z   t         j                  fg||k7  |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   j                  d |z   t         j                  |dz   f«       d!|z   dz   t         j                  fg||k7  |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   j                  d#|z   t         j                  |d"z   f«       d!|z   dz   t         j                  fg||k7  |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   j                  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‡  € ØˆàœFŸM™MÐ*ÜÔ$¨UÔ3´V·]±]ÐCØ)¬6¯=©=Ð9à+¬V¯[©[Ð9Ø”F—M‘M <Ð0à&¬´·±ÄÓ(LÐMØ”6—=‘= /Ð2Øœ&Ÿ/™/Ð+<Ð=ð
ˆˆyÑð "*¬6¯=©=¸#Ð >Ø!&¬¯©°sÐ ;Ø!+¬V¯_©_¸cÐ Bð!Cò 	ÑˆD�%˜ô ¨D°EªMÑ(Ð?TÓUØ Ñ# UÐ+Ø˜5Ð!Ø�e˜VÐ$ð	&ˆF�9˜T‘>Ò"ð	ð,ó)	6Ñ)ˆF�F˜G Tð ˜‘¤§¡Ð.ð+à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ+ð
 œŸ™ vÐ.ÜÐ-Ó.Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ð	ñ		+ˆF�4˜Ñ&Ñ'ð �9Ñ×$Ñ$ f¨v¡o´v·|±|Ø&*¨>Ñ&9ð&;ô <ð ˜GÑ# cÑ)¬6¯<©<Ð8ð&à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ&ð
 œŸ™ vÐ.Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ðñ	&ˆF�4˜	‘>Ñ"ð �9Ñ×$Ñ$ i°&Ñ&8¼&¿,¹,Ø&*¨9¡nð&6ô 7ð ˜GÑ# cÑ)¬6¯<©<Ð8ð%à˜6Ñ!ØœŸ™ wÐ/ð&ñ ñ%ð
 ˜)Ñ#¤V§\¡\°6Ð:Ü˜Ó&Ø˜7Ñ" SÑ(¬&¯,©,Ð7Ø˜GÑ# dÑ*¬F¯L©LÐ9ð	ñ		%ˆF�4˜‘=Ñ!ð �9Ñ×$Ñ$ e¨f¡n´f·l±lØ&*¨8¡mð&5ö 6ðQ)	6ðV ˆó    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(?<!\.))rJ   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::rL   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(\.|::)rI   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*[!?]?|\*\*?|[-+]@?|[/%&|^`~]|\[\]=?|<<|>>|<=?>|>=?|===?)rT   z	[A-Z_]\w*z(\()(\s*)([A-Z_]\w*)(\s*)(\))rU   r_   rV   Ú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 ]+\})ra   rQ   rS   z[^\\#]+z\\\\z\\/z[^\\/#]+z/[imsx]*z.+z%\}z(for|verbatim)\bz\}\}rX   rY   )r}   ru   rv   r~   ra   rQ   rR   zinterpolated-regexzinterpolated-stringry   rx   rz   r{   r|   N)5Ú__name__Ú
__module__Ú__qualname__Ú__doc__rj   ÚurlÚaliasesÚ	filenamesÚ	mimetypesÚreÚDOTALLÚ	MULTILINEÚflagsrG   ro   r	   ÚSingler   Úsplitr   ÚPseudoÚConstantr   r   r   Ú	NamespaceÚBuiltinÚPreprocr   rh   r   ÚOctr
   ÚHexÚBinÚFloatÚIntegerÚVariableÚClassÚInstanceÚGlobalr   rd   ÚInterpolÚ	Decoratorrc   r   ÚFunctionr   ÚEscaperg   ÚtokensÚupdate© rp   rF   r   r      s‘  „ ñð €DØ
$€CØ�YÐ€GØ�€IØ!Ð"€Ià�I‰I˜Ÿ™Ñ$€Eò- ò^FðRF
Ø�w—~‘~Ð&ðF
ñ ð ÷ ‘“ ô	'ð )0ð	1ðF
ñ ð ÷ ‘“ 
°5ô:ð <C¿>¹>ðKðF
ð 9¸'¿.¹.ÐIðF
ñ Ò+°EÔ:¸G×<LÑ<LÐMðF
ð  CÙ�g˜z¨4¯>©>Ó:ð<ð!F
ð$ :Ù�g˜z¨4¯>©>Ó:¸JðHð%F
ð( (¨°*Ð=ð)F
ð* ZÙ�g˜z¨4¯>©>Ó:¸KðIð+F
ñ0 ð ç‘“ 
°5ô:à;B¿>¹>ðKð1F
ð8 <¸T¿\¹\×=PÑ=PÐQð9F
ñ< ð ÷ ‘“ 
°5ô:ð <@¿<¹<ðIð=F
ðFYà�\‰\× Ñ ð"ðGF
ðN @ØððOF
ðT *Ð+;Ð<ðUF
ðV ˜Ÿ™¨*Ð5ðWF
ðZñ. $ J°·±Ó=Ð?Pð/Rð[F
ðL ˜vŸ|™|Ð->Ð?ðMF
ðP "¡8¨J¸¿¹Ó#EØð ðQF
ðd FÙ�f—j‘j *¨hÓ7ð9ðeF
ðh RÙ�f—j‘j *¨hÓ7ð9ðiF
ðl DÙ�f—j‘j *¨hÓ7ð9ðmF
ðt,á�f—l‘l J°Ó9ð;ðuF
ðz,á�f—l‘l J°Ó9ð;ð{F
ð@+á�f—l‘l J°Ó9ð;ðAF
ðF IÙ�f—n‘n j°(Ó;ð=ðGF
ðL  §¡× 3Ñ 3Ð4ðMF
ðN ˜tŸ}™}×5Ñ5Ð6ðOF
ðP �t—}‘}×+Ñ+Ð,ðQF
ðR .¨t¯}©}×/CÑ/CÐDðSF
ðT   §¡×!5Ñ!5Ð6ðUF
ðV �HÐðWF
ñX �IÓðYF
ð\ð �[‰[ðð]F
ðd (¨¯©Ð7ðeF
ðh �V—_‘_Ð&8Ð9ðiF
ðj �f—o‘o Ð7ðkF
ðn 2Ù�h 
¨D¯N©NÓ;¸ZðIðoF
ñv Ð$¨ZÔ8Ù�h §¡Ó.ð0ðwF
ðz =Ù�h Ó%ð'ð{F
ð@ +¨DÐ1ðAF
ðB%Ø&.ð0ðCF
ðF " 8Ð,ðGF
ðH ˜{Ð+ðIF
ðJ �ZÐ ðKF
ðP6ñ �d—j‘j (¨D¯M©MÓ:¸FðDñ �F‹Oð
ð ˜4Ÿ:™:Ð&Ø-Ù�k :¨t¯z©z¸:À{ÓSðUá�F‹Oð	
ð �F—O‘O WÐ-Ø�F—O‘O VÐ,Ù�F‹Oð
ð �V—_‘_ iÐ0ð
ð
 cØ�]‰]ðð
ñ �MÓ"ÙÐ$Ó%ð 
ñ
 �MÓ"Ø�v—|‘|Ð$Ø˜Ÿ™Ð&ð
ñ �MÓ"Ø�v—|‘|Ð$Ø˜Ÿ™Ð&ð 
ñ �MÓ"Ø�f—l‘lÐ#Ø�V—\‘\Ð"Ø�v—|‘|Ð$Ø˜&Ÿ,™,Ð'Ø˜&Ÿ,™,¨Ð/ð
ð �G—O‘O VÐ,ð
ð �V—_‘_ gÐ.Ø�V—_‘_ fÐ-Ø  'Ð*Ù�F‹Oð	
ð �f—o‘o wÐ/Ø�f—o‘o vÐ.Ù�F‹Oð
ð �H˜gÐ&Ø�H˜fÐ%Ù�F‹Oð
ñMK€FðX ‡M�MÑ*Ó,Õ-rp   )r‚   r‡   Úpygments.lexerr   r   r   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   Ú__all__rc   r   r¡   rp   rF   ú<module>r¥      sI   ðñó 
÷÷ ÷#÷ #õ #ð Ð
€òÐ ôR.Ð%õ R.rp   