B
    G¸
\}  ã               @   s”   d Z ddlZddlmZmZ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 ddlmZ ddgZG dd„ deƒZG d	d„ deƒZdS )
zÓ
    pygments.lexers.perl
    ~~~~~~~~~~~~~~~~~~~~

    Lexers for Perl and related languages.

    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚExtendedRegexLexerÚincludeÚbygroupsÚusingÚthisÚdefaultÚwords)ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuation)Úshebang_matchesÚ	PerlLexerÚ
Perl6Lexerc            4   @   sî  e Zd ZdZdZddgZdddgZdd	gZej	ej
B Zd
ejdfdejdfdejdfdejdfdejdfdejdfdejdfdejdfdejdfdejdfg
dejfdejfdejfedddefdeeeeeeeƒdfdejfdejfdejfd ejfd!ejfd"ejfd#ejd$fd%ejd$fd&ejd$fd'ejd$fd(ejfd)ejd$fd*ejfd+efed,ddejfd-ejjfd.eeeejeejeƒfd/ejd0fd1ejjfd2ejjfd3ejd4fd5e j!fd6e j"fd7e j#fd8e j$fd9e j$fd:e j%fd;efd<efd=ej&fd>ejfd?ej'd@fdAej'dBfdCej'dDfdEej'dFfdGej'fdHeeeej(ƒfdIeeeej(ƒfdJeeeƒdKfedLddefdMefdNefdOefdPedQfg1dRej)dfdSej)fgd+efdTedfdUedfdVej(fdWejdfgdXej(dfdYej(dfdWedfdZej*dfd[edfgd\ej+fd+efd]eeeƒfd^edfd_edfgd`ej'fdaej'fdTej'd@fdbej'dfdcej'fgddej'fdaej'fdeej'dBfdfej'dfdgej'fgdhej'fdaej'fdiej'dDfdjej'dfdkej'fgdlej'fdaej'fdmej'dFfdnej'dfdoej'fgdpejdfgdqœZ,drds„ Z-dtS )ur   z8
    For `Perl <http://www.perl.org>`_ source code.
    ZPerlÚperlZplz*.plz*.pmz*.tztext/x-perlzapplication/x-perlz"/(\\\\|\\[^\\]|[^\\/])*/[egimosx]*z#popz"!(\\\\|\\[^\\]|[^\\!])*![egimosx]*z\\(\\\\|[^\\])*\\[egimosx]*z$\{(\\\\|\\[^\\]|[^\\}])*\}[egimosx]*z"<(\\\\|\\[^\\]|[^\\>])*>[egimosx]*z%\[(\\\\|\\[^\\]|[^\\\]])*\][egimosx]*z$\((\\\\|\\[^\\]|[^\\)])*\)[egimosx]*z"@(\\\\|\\[^\\]|[^\\@])*@[egimosx]*z"%(\\\\|\\[^\\]|[^\\%])*%[egimosx]*z$\$(\\\\|\\[^\\]|[^\\$])*\$[egimosx]*z	\A\#!.+?$z\#.*?$z^=[a-zA-Z0-9]+\s+.*?\n=cut)ZcaseÚcontinueÚdoÚelseÚelsifÚforZforeachÚifÚlastÚmyÚnextÚourÚredoÚresetZthenÚunlessÚuntilÚwhileÚprintÚnewÚBEGINÚCHECKÚINITÚENDÚreturnz\b)Úsuffixz!(format)(\s+)(\w+)(\s*)(=)(\s*\n)Úformatz$(eq|lt|gt|le|ge|ne|not|and|or|cmp)\bz:s/(\\\\|\\[^\\]|[^\\/])*/(\\\\|\\[^\\]|[^\\/])*/[egimosx]*z.s!(\\\\|\\!|[^!])*!(\\\\|\\!|[^!])*![egimosx]*z+s\\(\\\\|[^\\])*\\(\\\\|[^\\])*\\[egimosx]*z:s@(\\\\|\\[^\\]|[^\\@])*@(\\\\|\\[^\\]|[^\\@])*@[egimosx]*z:s%(\\\\|\\[^\\]|[^\\%])*%(\\\\|\\[^\\]|[^\\%])*%[egimosx]*zs\{(\\\\|\\[^\\]|[^\\}])*\}\s*zbalanced-regexzs<(\\\\|\\[^\\]|[^\\>])*>\s*zs\[(\\\\|\\[^\\]|[^\\\]])*\]\s*zs\((\\\\|\\[^\\]|[^\\)])*\)\s*z&m?/(\\\\|\\[^\\]|[^\\/\n])*/[gcimosx]*zm(?=[/!\\{<\[(@%$])z6((?<==~)|(?<=\())\s*/(\\\\|\\[^\\]|[^\\/])*/[gcimosx]*z\s+)ÄÚabsZacceptÚalarmÚatan2ZbindZbinmodeÚblessÚcallerÚchdirÚchmodÚchompÚchopÚchownÚchrÚchrootÚcloseZclosedirÚconnectr   ÚcosZcryptZdbmcloseZdbmopenÚdefinedÚdeleteÚdieÚdumpÚeachZendgrentZ
endhostentZ	endnetentZendprotoentZendpwentZ
endserventÚeofÚevalÚexecÚexistsÚexitÚexpZfcntlÚfilenoZflockÚforkr-   ZformlineÚgetcZgetgrentZgetgrgidZgetgrnamZgethostbyaddrZgethostbynameZ
gethostentÚgetloginZgetnetbyaddrZgetnetbynameZ	getnetentÚgetpeernameÚgetpgrpÚgetppidÚgetpriorityZgetprotobynameZgetprotobynumberZgetprotoentZgetpwentÚgetpwnamÚgetpwuidZgetservbynameZgetservbyportZ
getserventZgetsocknameZ
getsockoptZglobÚgmtimeÚgotoÚgrepÚhexÚimportÚindexÚintZioctlÚjoinÚkeysÚkillr   ÚlcÚlcfirstÚlengthÚlinkZlistenZlocalÚ	localtimeÚlogÚlstatÚmapÚmkdirZmsgctlZmsggetZmsgrcvZmsgsndr   r   ÚoctÚopenÚopendirÚordr   ÚpackÚpipeÚpopÚposÚprintfZ	prototypeÚpushÚ	quotemetaÚrandÚreadÚreaddirÚreadlineÚreadlinkZreadpipeZrecvr    ÚrefÚrenameÚreverseÚ	rewinddirÚrindexÚrmdirZscalarÚseekZseekdirZselectZsemctlZsemgetZsemopÚsendZsetgrentZ
sethostentZ	setnetentÚsetpgrpÚsetpriorityZsetprotoentZsetpwentZ
setserventZ
setsockoptÚshiftZshmctlZshmgetZshmreadZshmwriteZshutdownÚsinÚsleepZsocketZ
socketpairÚsortÚspliceÚsplitÚsprintfÚsqrtÚsrandÚstatZstudyÚsubstrÚsymlinkZsyscallZsysopenZsysreadZsysseekÚsystemZsyswriteÚtellZtelldirZtieZtiedÚtimeÚtimesÚtrÚtruncateÚucÚucfirstÚumaskÚundefÚunlinkÚunpackÚunshiftZuntieÚutimeÚvaluesÚvecÚwaitÚwaitpidZ	wantarrayÚwarnÚwritez+((__(DATA|DIE|WARN)__)|(STD(IN|OUT|ERR)))\bz/(<<)([\'"]?)([a-zA-Z_]\w*)(\2;?\n.*?\n)(\3)(\n)Z__END__zend-partz\$\^[ADEFHILMOPSTWX]z(\$[\\\"\[\]'&`+*.,;=%~?@$!<>(^|/-](?!\w)z[$@%#]+Úvarnamez0_?[0-7]+(_[0-7]+)*z0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*z0b[01]+(_[01]+)*z?(?i)(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?z(?i)\d+(_\d*)*e[+-]?\d+(_\d*)*z
\d+(_\d+)*z'(\\\\|\\[^\\]|[^'\\])*'z"(\\\\|\\[^\\]|[^"\\])*"z`(\\\\|\\[^\\]|[^`\\])*`z<([^\s>]+)>z(q|qq|qw|qr|qx)\{z	cb-stringz(q|qq|qw|qr|qx)\(z	rb-stringz(q|qq|qw|qr|qx)\[z	sb-stringz(q|qq|qw|qr|qx)\<z	lt-stringz (q|qq|qw|qr|qx)([\W_])(.|\n)*?\2z/(package)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z6(use|require|no)(\s+)([a-zA-Z_]\w*(?:::[a-zA-Z_]\w*)*)z
(sub)(\s+)Úfuncname)ZnoÚpackageÚrequireÚusez=(\[\]|\*\*|::|<<|>>|>=|<=>|<=|={3}|!=|=~|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&^|!\\~]=?z[()\[\]:;,<>/?{}]z(?=\w)Únamez\.\nz[^\n]*\nz\{z\)|,z\w+::z[\w:]+z+[a-zA-Z_]\w*(::[a-zA-Z_]\w*)*(::)?(?=\s*->)z[a-zA-Z_]\w*(::[a-zA-Z_]\w*)*::z[A-Z_]+(?=\W)z(?=\W)z[a-zA-Z_]\w*[!?]?z(\([$@%]*\))(\s*)ú;z.*?\{z\\[{}\\]z\\z\}z[^{}\\]+z\\[()\\]z\(z\)z[^()]+z
\\[\[\]\\]z\[z\]z[^\[\]]+z\\[<>\\]z\<z\>z[^<>]+z.+)zbalanced-regexÚrootr-   rŸ   r¤   r    z	cb-stringz	rb-stringz	sb-stringz	lt-stringzend-partc             C   s"   t | dƒrdS t d| ¡rdS d S )Nr   Tz(?:my|our)\s+[$@%(]gÍÌÌÌÌÌì?)r   ÚreÚsearch)Útext© rª   ú3lib/python3.7/site-packages/pygments/lexers/perl.pyÚanalyse_textÐ   s    
zPerlLexer.analyse_textN).Ú__name__Ú
__module__Ú__qualname__Ú__doc__r¤   ÚaliasesÚ	filenamesÚ	mimetypesr§   ÚDOTALLÚ	MULTILINEÚflagsr   ÚRegexr   ZHashbangÚSingleÚ	Multiliner	   r   r   r
   r   r   r   ZWordÚBuiltinZPseudoZ	DelimiterZPreprocÚVariableÚGlobalr   ÚOctÚHexÚBinÚFloatÚIntegerZBacktickZOtherZ	NamespaceZInterpolZConstantZFunctionÚtokensr¬   rª   rª   rª   r«   r      sø   









































c            Á       s€  e Zd ZdZdZddgZddddd	d
dddddgZddgZej	ej
B ejB ZdZdZdZdZdZdddddddddddd d d d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽddd‘d’d“d”d•d–d—d˜d™dšd›dœddždŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬d­d®d¯d°d±d²d³d´dµd¶d·d¸d¹dºd»d¼d½d¾d¿dÀdÁdÂdÃdÄdÅdÆdÇdÈdÉdÊdËdÌdÍdÎdÏdÐdÑdÒdÓœÀZddÖd×„ZdØdÙ„ ZdÚdÛ„ ZdÜdÝ„ ZdÞdß„ ZdàdÕ e¡ dá eejƒfdâejfdãejfdäejfdåejfdæe dç eeeƒdèfdée dê e dë eeeƒdìfdíeeeeeƒfeeeƒefeeedîdïej feeeƒej fdðe dñ ej!fdòej!j"fdóej!j"fdôe dñ ej!j"fdõej!fdöee#ƒfd÷e$j%fdøe$j&fdùe$j'fdúe$j(fdûe$j(fdüe$j)fdýe#j*fdþe#j*fdÿefd ee#j*ƒfde#j*fde#feeƒe+fde d efde#fde#fg!e,dƒdefd	efd
efge,dƒdedfd
efgddÕ e¡ dá eeƒdfe-dƒgd	edfde.e/ƒfde#j*fde#j*fde#j*fdejfdefd
e#j*fgdœZ0dd„ Z1‡ fdd„Z2‡  Z3S (  r   zV
    For `Perl 6 <http://www.perl6.org>`_ source code.

    .. versionadded:: 2.0
    ZPerl6Zperl6Zpl6z*.plz*.pmz*.nqpz*.p6z*.6plz*.p6lz*.pl6z*.6pmz*.p6mz*.pm6z*.tztext/x-perl6zapplication/x-perl6z['\w:-])sr'   ZCATCHr(   ZCONTROLr*   ZENTERZFIRSTr)   ZKEEPZLASTZLEAVEZNEXTZPOSTZPREZSTARTZTEMPZUNDOÚasZassocÚasyncZaugmentZbinaryÚbreakÚbutÚcachedÚcategoryÚclassZconstantZcontendr   ÚcopyZdeepr   ZdefequivZdeferr?   r   r   r   ÚenumZequivrF   ZexportZfailZfatalr   ZgatherZgivenrS   ZgrammarZhandlesZhasr   ZinlineZirsÚisr   ZleaveZletZliftZloopZlooserZmacroZmakeÚmaybeÚmethodÚmoduleZmultir   r   ZofZofsZonlyZooZorsr   r¡   ZparsedZprecÚprotoÚreadonlyr    ru   ZregexZreparsedÚrepeatr¢   Zrequiredr+   ZreturnsZroleZruleZrwÚselfZslangÚstateÚsubZ	submethodZsubsetZ	supersedeZtakeZtempZtighterÚtokenZtrustsÚtryZunaryr"   r#   r£   r   ZwhenÚwherer$   Zwill)ýZACCEPTSZHOWZREJECTSZVARZWHATZWHENCEZWHEREZWHICHZWHOr.   ZacosZacosecZacosechZacoshZacotanZacotanhÚallÚanyZapproxZarityZasecZasechZasinZasinhZassumingZatanr0   ZatanhÚattrr1   ZbodyZbyÚbytesr2   ZcallsameZcallwithZcanÚ
capitalizeÚcatZceilingÚcharsr4   r5   r6   r8   r9   Z	circumfixZcisZclassifyZcloner:   Zcmp_okZcodesZcombr;   ÚcontainsÚcontextr<   ZcosecZcosechZcoshZcotanZcotanhÚcountr=   r>   ZdiagZdies_okÚdoesÚerA   ZeagerZelemsÚendrB   rC   Zeval_dies_okZeval_elsewhereZeval_lives_okZevalfilerE   rG   ÚfirstZflipZfloorZflunkÚflushZfmtZ
force_todorI   ÚfromrJ   ZgethostrK   rL   ZgetpwrR   ZgraphsrT   ZhintsZhyperZimrW   ZinfixÚinvertZ	is_approxZ	is_deeplyZisaZisa_okZisntÚiteratorrY   ÚkeyrZ   r[   ZkvZlastcallZlazyr\   r]   ZlikeÚlinesr_   Zlives_okr`   ra   Zlog10rc   ÚmaxÚminZminmaxr¤   r&   ZnextsameZnextwithZnfcZnfdZnfkcZnfkdZ	nok_errorZnonceZnoneZ	normalizeÚnotZnothingÚokÚonceZonerf   rg   Úoperatorrh   Zp5chompZp5chopri   ZpairZpairsÚpassr   ZpiZpickZplanZplan_okZpolarrk   rl   ZpostcircumfixZpostfixZpredÚprefixr%   rm   rn   Zquasiro   rp   r§   rq   rr   rs   Úreducerw   Zrewindrx   ry   ÚrootsÚroundZ
roundrobinÚrunZ
runinsteadZ
sameaccentZsamecaseZsayZsecÚsechrù   r{   Úshaper   ZsignZ	signaturer€   ZsinhÚskipZ	skip_restr   Zslurpr‚   rƒ   r„   r…   r†   r‡   ZstrandZsubstr‰   ZsuccÚsumrŠ   ZtanZtanhZ	throws_okr   rŽ   ÚtoZtodoZtrimZtrim_endZ
trim_startÚtruer   r‘   r’   r”   ZundefineZuniqZunliker•   r–   Zunpolarr—   ZunwrapZuse_okÚvaluer™   rš   Z
version_ltZvoidr›   ZwantZwraprž   Úzip)oZAbstractionZAnyZAnyCharZArrayZAssociativeZBagZBitZBlobZBlockZBoolZBufZByteÚCallableZCaptureZCharZClassZCodeZ	CodepointZ
ComparatorZComplexZ
DecreasingÚ	ExceptionZFailureÚFalseZGrammarZGraphemeZHashZIOZ
IncreasingZIntZJunctionZKeyBagZKeyExtractorZKeyHashZKeySetZKitchenSinkZListZMacroÚMappingÚMatchZMatcherZMethodZModuleZNumZObjectZOrderedZOrderingZOrderingPairZPackageZPairZ
PositionalZProxyZRangeZRatr·   ZRoleZRoutineZScalarZSeqÚSetZ	SignatureZStrZStrLenZStrPosZSubZ	SubmethodÚTrueZUIntZUndefZVersionZVoidZWhateverÚbitÚboolZbufZbuf1Zbuf16Zbuf2Zbuf32Zbuf4Zbuf64Zbuf8ÚcomplexrX   Zint1Zint16Zint2Zint32Zint4Zint64Zint8ZnumZratZrat1Zrat16Zrat2Zrat32Zrat4Zrat64Zrat8ZuintZuint1Zuint16Zuint2Zuint32Zuint4Zuint64Zuint8Úutf16Úutf32Úutf8)eÚXÚZZafterZalsoÚandZandthenZbeforeZcmpZdivÚeqZeqvZextraÚffÚfffÚgeÚgtÚleZlegÚltÚmZmmÚmodÚneÚorZorelseZrxÚsr   ÚxÚxorZxxz++z--z**ú!ú+ú-ú~ú?ú|z||z+^z~^z?^ú^Ú*ú/ú%z%%z+&z+<z+>z~&z~<z~>z?&ZgcdZlcmr   r!  z+|z+^z~|z~^z?|z?^r"  ú&r%  rÆ   rã   z<=>z..z..^z^..z^..^z!=z==ú<z<=ú>z>=z~~z===z!eqvz&&z||z^^z//rî   rí   z??z!!r  r  Zsorï   z<==z==>z<<==z==>>ú)r+  ú]Ú}õ   Â»u   à¼»u   à¼½u   ášœu   â€™u   â€u   â€ºu   â†u   â¾u   â‚Žu   âˆ‹u   âˆŒu   âˆu   â§µu   âˆ½u   â‹u   â‰“u   â‰•u   â‰¥u   â‰§u   â‰©u   â‰«u   â‰¯u   â‰±u   â‰³u   â‰µu   â‰·u   â‰¹u   â‰»u   â‰½u   â‰¿u   âŠu   âŠƒu   âŠ…u   âŠ‡u   âŠ‰u   âŠ‹u   âŠu   âŠ’u   â¦¸u   âŠ£u   â«žu   â«¤u   â«£u   â«¥u   âŠ±u   âŠ³u   âŠµu   âŠ·u   â‹Šu   â‹Œu   â‹‘u   â‹—u   â‹™u   â‹›u   â‹u   â‹Ÿu   â‹¡u   â‹£u   â‹¥u   â‹§u   â‹©u   â‹«u   â‹­u   â‹±u   â‹ºu   â‹»u   â‹¼u   â‹½u   â‹¾u   âŒ‰u   âŒ‹u   âŒªu   âŽµu   â©u   â«u   â­u   â¯u   â±u   â³u   âµu   âŸ„u   âŸ†u   âŸ–u   âŸžu   âŸ£u   âŸ¥u   âŸ§u   âŸ©u   âŸ«u   â¦„u   â¦†u   â¦ˆu   â¦Šu   â¦Œu   â¦Žu   â¦u   â¦’u   â¦”u   â¦–u   â¦˜u   â§u   â§…u   â§u   â§’u   â§•u   â§™u   â§›u   â§¹u   â§½u   â¨¬u   â¨®u   â¨µu   â¨½u   â©¥u   â©ºu   â©¾u   âª€u   âª‚u   âª„u   âªŒu   âª’u   âª”u   âª–u   âª˜u   âªšu   âªœu   âª¢u   âª§u   âª©u   âª«u   âª­u   âª°u   âª´u   âª¼u   âª¾u   â«€u   â«‚u   â«„u   â«†u   â«Žu   â«u   â«’u   â«”u   â«–u   â«­u   â«¸u   â«ºu   â¸ƒu   â¸…u   â¸Šu   â¸u   â¸u   â¸¡u   ã€‰u   ã€‹u   ã€u   ã€u   ã€‘u   ã€•u   ã€—u   ã€™u   ã€›u   ã€žu   ï´¿u   ï¸˜u   ï¸¶u   ï¸¸u   ï¸ºu   ï¸¼u   ï¸¾u   ï¹€u   ï¹‚u   ï¹„u   ï¹ˆu   ï¹šu   ï¹œu   ï¹žu   ï¼‰u   ï¼žu   ï¼½u   ï½u   ï½ u   ï½£)Àú(r*  ú[Ú{õ   Â«u   à¼ºu   à¼¼u   áš›u   â€˜u   â€šu   â€›u   â€œu   â€žu   â€Ÿu   â€¹u   â…u   â½u   â‚u   âˆˆu   âˆ‰u   âˆŠu   âˆ•u   âˆ¼u   â‰ƒu   â‰’u   â‰”u   â‰¤u   â‰¦u   â‰¨u   â‰ªu   â‰®u   â‰°u   â‰²u   â‰´u   â‰¶u   â‰¸u   â‰ºu   â‰¼u   â‰¾u   âŠ€u   âŠ‚u   âŠ„u   âŠ†u   âŠˆu   âŠŠu   âŠu   âŠ‘u   âŠ˜u   âŠ¢u   âŠ¦u   âŠ¨u   âŠ©u   âŠ«u   âŠ°u   âŠ²u   âŠ´u   âŠ¶u   â‹‰u   â‹‹u   â‹u   â‹–u   â‹˜u   â‹šu   â‹œu   â‹žu   â‹ u   â‹¢u   â‹¤u   â‹¦u   â‹¨u   â‹ªu   â‹¬u   â‹°u   â‹²u   â‹³u   â‹´u   â‹¶u   â‹·u   âŒˆu   âŒŠu   âŒ©u   âŽ´u   â¨u   âªu   â¬u   â®u   â°u   â²u   â´u   âŸƒu   âŸ…u   âŸ•u   âŸu   âŸ¢u   âŸ¤u   âŸ¦u   âŸ¨u   âŸªu   â¦ƒu   â¦…u   â¦‡u   â¦‰u   â¦‹u   â¦u   â¦u   â¦‘u   â¦“u   â¦•u   â¦—u   â§€u   â§„u   â§u   â§‘u   â§”u   â§˜u   â§šu   â§¸u   â§¼u   â¨«u   â¨­u   â¨´u   â¨¼u   â©¤u   â©¹u   â©½u   â©¿u   âªu   âªƒu   âª‹u   âª‘u   âª“u   âª•u   âª—u   âª™u   âª›u   âª¡u   âª¦u   âª¨u   âªªu   âª¬u   âª¯u   âª³u   âª»u   âª½u   âª¿u   â«u   â«ƒu   â«…u   â«u   â«u   â«‘u   â«“u   â«•u   â«¬u   â«·u   â«¹u   â¸‚u   â¸„u   â¸‰u   â¸Œu   â¸œu   â¸ u   ã€ˆu   ã€Šu   ã€Œu   ã€Žu   ã€u   ã€”u   ã€–u   ã€˜u   ã€šu   ã€u   ï´¾u   ï¸—u   ï¸µu   ï¸·u   ï¸¹u   ï¸»u   ï¸½u   ï¸¿u   ï¹u   ï¹ƒu   ï¹‡u   ï¹™u   ï¹›u   ï¹u   ï¼ˆu   ï¼œu   ï¼»u   ï½›u   ï½Ÿu   ï½¢NÚ c             C   sl   |d kr,d| d  dd„ | D ƒ¡ | d S d| d | d d  d	d„ | D ƒ¡ d | d
 | d S d S )Nz\b(r$  c             s   s   | ]}t  |¡V  qd S )N)r§   Úescape)Ú.0r  rª   rª   r«   ú	<genexpr>„  s    z/Perl6Lexer._build_word_match.<locals>.<genexpr>z)\bz(?<!r,  r0  c             s   s   | ]}t  |¡V  qd S )N)r§   r5  )r6  r  rª   rª   r«   r7  ˆ  s    z(?!)rY   )r	   Zboundary_regex_fragmentrô   r,   rª   rª   r«   Ú_build_word_match‚  s    $zPerl6Lexer._build_word_matchc                s   ‡ fdd„}|S )Nc             3   sŽ  |  ¡ }|d }t|ƒ}| d¡}tj |d ¡}|j}|d krX| || d¡| ¡}	nˆ|| }
d}| d¡}xl|dkrÚ| ||| ¡}| |
|| ¡}|dkr®t|ƒ}d}qp|dkrÌ||k rÌ|d7 }|}qp|d8 }|}qpW |}	|	dk rðt|ƒ}	|d k	r`t 	d|¡r`|| d¡| |	… }t 	dt 
|¡ d ||	d … tj¡}|rX|	| ¡ 7 }	nt|ƒ}	| ¡ ˆ || ¡ |	| … fV  |	| |_d S )	NZ	delimiterÚadverbsr   é   éÿÿÿÿz:to\bz^\s*z\s*$)Ú	groupdictÚlenÚgetr   ÚPERL6_BRACKETSr©   ÚfindÚstartr§   r¨   r5  rµ   rå   rl   )ÚlexerÚmatchrá   ÚgroupsZopening_charsZn_charsr9  Zcloserr©   Zend_posZclosing_charsZnesting_levelZ
search_posZnext_open_posZnext_close_posZheredoc_terminatorZend_heredoc)Útoken_classrª   r«   ÚcallbackŒ  sD    


 z.Perl6Lexer.brackets_callback.<locals>.callbackrª   )rE  rF  rª   )rE  r«   Úbrackets_callback‹  s    5zPerl6Lexer.brackets_callbackc             c   s\   |j }| ¡ t|j| ¡ | ¡ … fV  | ¡ |_t|ƒdkrX|d dkrX| jd7  _d S )Né   éþÿÿÿrÖ   r:  )ÚstackrA  r
   r©   rå   rl   r=  Úperl6_token_nesting_level)rB  rC  rá   rJ  rª   rª   r«   Úopening_brace_callbackÃ  s
    "
z!Perl6Lexer.opening_brace_callbackc             c   sn   |j }| ¡ t|j| ¡ | ¡ … fV  | ¡ |_t|ƒdkrj|d dkrj| jd8  _|jdkrj| ¡  d S )NrH  rI  rÖ   r:  r   )	rJ  rA  r
   r©   rå   rl   r=  rK  rk   )rB  rC  rá   rJ  rª   rª   r«   Úclosing_brace_callbackÐ  s    "

z!Perl6Lexer.closing_brace_callbackc             c   sB   d|_ | ¡ t|j| ¡ | ¡ … fV  | ¡ |_|j d¡ d S )Nr:  r¦   )rK  rA  r
   r©   rå   rl   rJ  Úappend)rB  rC  rá   rª   rª   r«   Úembedded_perl6_callbackÞ  s    "
z"Perl6Lexer.embedded_perl6_callbackz$#[`|=](?P<delimiter>(?P<first_char>[z])(?P=first_char)*)z#[^\n]*$z%^(\s*)=begin\s+(\w+)\b.*?^\1=end\s+\2z^(\s*)=for.*?\n\s*?\nz^=.*?\n\s*?\nz(regex|token|rule)(\s*z+:sym)ztoken-sym-bracketsz(regex|token|rule)(?!z)(\s*z+)?z	pre-tokenz(role)(\s+)(q)(\s*)z
(?::[UD])?)r,   z[$@%&][.^:?=!~]?u   +(?:<<.*?>>|<.*?>|Â«.*?Â»)*u    \$[!/](?:<<.*?>>|<.*?>|Â«.*?Â»)*z::\?\w+z[$@%&]\*z\$(?:<.*?>)+zn(?:q|qq|Q)[a-zA-Z]?\s*(?P<adverbs>:[\w\s:]+)?\s*(?P<delimiter>(?P<first_char>[^0-9a-zA-Z:\s])(?P=first_char)*)z0_?[0-7]+(_[0-7]+)*z0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*z0b[01]+(_[01]+)*z?(?i)(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?z(?i)\d+(_\d*)*e[+-]?\d+(_\d*)*z
\d+(_\d+)*z(?<=~~)\s*/(?:\\\\|\\/|.)*?/z(?<=[=(,])\s*/(?:\\\\|\\/|.)*?/z
m\w+(?=\()z_(?:m|ms|rx)\s*(?P<adverbs>:[\w\s:]+)?\s*(?P<delimiter>(?P<first_char>[^\w:\s])(?P=first_char)*)zB(?:s|ss|tr)\s*(?::[\w\s:]+)?\s*/(?:\\\\|\\/|.)*?/(?:\\\\|\\/|.)*?/z<[^\s=].*?\S>z\wr&  z'(\\\\|\\[^\\]|[^'\\])*'z"(\\\\|\\[^\\]|[^"\\])*"Úcommonz\{z\}z.+?)z#poprÖ   z(?P<delimiter>(?P<first_char>[)z#popz	pre-tokenz#popz,(?<=:)(?:my|our|state|constant|temp|let).*?;z<(?:[-!?+.]\s*)?\[.*?\]>z(?<!\\)'(\\\\|\\[^\\]|[^'\\])*'z(?<!\\)"(\\\\|\\[^\\]|[^"\\])*"z#.*?$)rP  r¦   z	pre-tokenztoken-sym-bracketsrÖ   c             C   sÂ   dd„ }|   ¡ }||ƒ}d |¡} t| dƒr0dS d}d}t dtj d | ¡rVd	}d}xf|D ]^}t d
d|¡}t d|¡r|q\t d|¡rŒdS t d|¡}|r¸|s®| 	d¡d k	r²dS d}q\P q\W |S )Nc             S   sL   d}g }x>| D ]6}t  d|¡r$d}qt  d|¡r6d}q|s| |¡ qW |S )NFz^=(?:end|cut)z^=\w+T)r§   rC  rN  )rì   Zin_podZstripped_linesÚlinerª   rª   r«   Ú	strip_pod8  s    
z*Perl6Lexer.analyse_text.<locals>.strip_podÚ
zperl6|rakudo|niecza|pugsTFz(?:my|our|has)\s+(?:z+\s+)?[$@%&(]gš™™™™™é?z#.*r4  z^\s*$z$^\s*(?:use\s+)?v6(?:\.\d(?:\.\d)?)?;z?^\s*(?:(?P<scope>my|our)\s+)?(?:module|class|role|enum|grammar)Zscopegš™™™™™©?)
Ú
splitlinesrY   r   r§   r¨   r   ÚPERL6_IDENTIFIER_RANGErÕ   rC  Úgroup)r©   rR  rì   Zsaw_perl_declZratingrQ  Z
class_declrª   rª   r«   r¬   7  s4    



zPerl6Lexer.analyse_textc                s$   t t| ƒjf |Ž | dd¡| _d S )NÚencodingzutf-8)Úsuperr   Ú__init__r>  rW  )rÓ   Zoptions)Ú	__class__rª   r«   rY  j  s    zPerl6Lexer.__init__)Nr4  r4  )4r­   r®   r¯   r°   r¤   r±   r²   r³   r§   rµ   r´   ÚUNICODEr¶   rU  ZPERL6_KEYWORDSZPERL6_BUILTINSZPERL6_BUILTIN_CLASSESZPERL6_OPERATORSr?  r8  rG  rL  rM  rO  rY   r   r¹   r¸   r   r   r   r
   rº   r»   r¼   r   r   r½   r¾   r¿   rÀ   rÁ   r·   r   r   r   r   r   rÂ   r¬   rY  Ú__classcell__rª   rª   )rZ  r«   r   ×   s   %	8















3)r°   r§   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.tokenr
   r   r   r   r   r   r   r   Zpygments.utilr   Ú__all__r   r   rª   rª   rª   r«   Ú<module>
   s   (( A