a
    ;@b                     @   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, Raku and related languages.

    :copyright: Copyright 2006-2021 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g d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d.fd/ejjfd0ejjfd1ejd2fd3e j!fd4e j"fd5e j#fd6e j$fd7e j$fd8e j%fd9efd:efd;ej&fd<ejfd=ej'd>fd?ej'd@fdAej'dBfdCej'dDfdEej'fdFeeeej(fdGeeeej(fdHeeedIfedJddefdKefdLefdMefdNedOfg1dPej)d	fdQej)fgd)efdRed	fdSed	fdTej(fdUejd	fgdVej(d	fdWej(d	fdUed	fdXej*d	fdYed	fgdZej+fd)efd[eeefd\ed	fd]ed	fgd^ej'fd_ej'fdRej'd>fd`ej'd	fdaej'fgdbej'fd_ej'fdcej'd@fddej'd	fdeej'fgdfej'fd_ej'fdgej'dBfdhej'd	fdiej'fgdjej'fd_ej'fdkej'dDfdlej'd	fdmej'fgdnejd	fgdoZ,dpdq Z-drS )sr   z9
    For `Perl <https://www.perl.org>`_ source code.
    Perlperlpl)*.pl*.pm*.tz*.perlztext/x-perlzapplication/x-perlz"/(\\\\|\\[^\\]|[^\\/])*/[egimosx]*#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reset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*balanced-regexzs<(\\\\|\\[^\\]|[^\\>])*>\s*zs\[(\\\\|\\[^\\]|[^\\\]])*\]\s*zs\((\\\\|\\[^\\]|[^\\)])*\)\s*z&m?/(\\\\|\\[^\\]|[^\\/\n])*/[gcimosx]*zm(?=[/!\\{<\[(@%$])z6((?<==~)|(?<=\())\s*/(\\\\|\\[^\\]|[^\\/])*/[gcimosx]*z\s+)absacceptalarmatan2ZbindZbinmodeblessZcallerchdirchmodchompchopchownchrchrootcloseZclosedirconnectr   cosZcryptZdbmcloseZdbmopendefineddeletediedumpZeachZendgrentZ
endhostentZ	endnetentZendprotoentZendpwentZ
endserventeofevalexecexistsexitexpZfcntlfilenoZflockforkr5   ZformlinegetcZgetgrentgetgrgidgetgrnamZgethostbyaddrZgethostbynameZ
gethostentgetloginZgetnetbyaddrZgetnetbynameZ	getnetentZgetpeernamegetpgrpgetppidgetpriorityZgetprotobynameZgetprotobynumberZgetprotoentZgetpwentgetpwnamgetpwuidZgetservbynameZgetservbyportZ
getserventZgetsocknameZ
getsockoptglobgmtimeZgotogrepheximportindexintZioctljoinkeyskillr"   lcZlcfirstlengthlinklistenlocal	localtimeloglstatmapmkdirZmsgctlZmsggetZmsgrcvZmsgsndr#   r$   octopenZopendirordr%   packpipepopposprintfZ	prototypepushZ	quotemetarandreadZreaddirreadlinereadlinkZreadpiperecvr&   refrenamereverseZ	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ucZucfirstumaskZundefunlinkunpackunshiftZuntieutimevaluesZ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__end-partz\$\^[ADEFHILMOPSTWX]z(\$[\\\"\[\]'&`+*.,;=%~?@$!<>(^|/-](?!\w)z[$@%#]+varname0_?[0-7]+(_[0-7]+)*0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*0b[01]+(_[01]+)*?(?i)(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?(?i)\d+(_\d*)*e[+-]?\d+(_\d*)*
\d+(_\d+)*'(\\\\|\\[^\\]|[^'\\])*'"(\\\\|\\[^\\]|[^"\\])*"z`(\\\\|\\[^\\]|[^`\\])*`z<([^\s>]+)>z(q|qq|qw|qr|qx)\{	cb-stringz(q|qq|qw|qr|qx)\(	rb-stringz(q|qq|qw|qr|qx)\[	sb-stringz(q|qq|qw|qr|qx)\<	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)nopackagerequireusez=(\[\]|\*\*|::|<<|>>|>=|<=>|<=|={3}|!=|=~|!~|&&?|\|\||\.{1,3})z[-+/*%=<>&^|!\\~]=?z[()\[\]:;,<>/?{}]z(?=\w)namez\.\nz[^\n]*\n\{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.+)r6   rootr5   r   r   r   r   r   r   r   r   c                 C   s:   t | drdS d}td| r&|d7 }d| v r6|d }|S )Nr   Tr   z(?:my|our)\s+[$@%(]g?:=   )r   research)textresult r   3lib/python3.9/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Other	NamespaceZInterpolZConstantZFunctiontokensr   r   r   r   r   r      s4  





















f




	








  .c                       sL  e Zd ZdZdZg dZg d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$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dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddȜZddd̄Zdd΄ ZddЄ Zdd҄ ZddԄ Zddʠe d eejfdejfdejfdejfdejfde d eeedfde d e d eeedfdeeeeefeeeefeeeddej feeeej fde d ej!fdej!j"fdej!j"fde d ej!j"fdej!fdee#fde$j%fde$j&fde$j'fde$j(fde$j(fde$j)fde#j*fde#j*fdefdee#j*fde#j*fde#feee+fde d efde#fde#fg!e,ddefdefdefge,dded fdefgddʠe d eedfe-dgdedfde.e/fde#j*fde#j*fde#j*fdejfdefde#j*fgd	Z0d
d Z1 fddZ2  Z3S (  r   zd
    For `Raku <https://www.raku.org>`_ (a.k.a. Perl 6) source code.

    .. versionadded:: 2.0
    ZPerl6)Zperl6Zpl6Zraku)r   r   z*.nqpz*.p6z*.6plz*.p6lz*.pl6z*.6pmz*.p6mz*.pm6r   z*.rakuz	*.rakumodz
*.rakutestz	*.rakudocztext/x-perl6zapplication/x-perl6z['\w:-])Nr.   ZCATCHr/   ZCLOSEZCONTROLZDOCr1   ZENTERZFIRSTr0   ZKEEPZLASTZLEAVEZNEXTZPOSTZPREZQUITZUNDOZanonZaugmentbutclassZconstantr   doesr   r   enumr    ZgatherZgivenZgrammarZhasr!   r_   isZletZloopmademakemethodmodulemultir#   ZneedZorwithr%   Zproceedprotorepeatr   r2   z	return-rwreturnsroleZrulestatesubZ	submethodZsubsetZsucceedZ	supersedetokentryZunitr)   r*   r   whenr+   withZwithoutZexportZnativereprrequiredrwsymbol(  ZACCEPTSr7   Zabs2relabsoluter8   ZaccessedZacosZacosecZacosechZacoshZacotanZacotanhacquireZactactionactionsaddZadd_attributeZadd_enum_valueadd_fallbackZ
add_methodZ
add_parentZadd_private_methodZadd_roleZadd_trusteeZadverbafterallallocateZallofallowedzalternative-namesannotationsZantipairZ	antipairsanyZanyofZapp_lifetimeappendZarchZarchnameargsZarityArrayZasecZasechZasinZasinhz
ASSIGN-KEYz
ASSIGN-POSZassumingastZatZatanr:   ZatanhzAT-KEYzatomic-assignzatomic-dec-fetchzatomic-fetchzatomic-fetch-addzatomic-fetch-deczatomic-fetch-inczatomic-fetch-subzatomic-inc-fetchzAT-POSZ
attributesZauthawaitZ	backtraceBagBagHashzbail-outbasebasenamezbase-repeatingZbatchzBIND-KEYzBIND-POSzbind-stderrz
bind-stdinzbind-stdoutzbind-udpbitsr;   blockBoolz	bool-onlyZboundsbreakZBridgebrokenZBUILDz
build-datebytescacheZ	callframezcalling-packagezCALL-MEZcallsameZcallwithZcancancelZ
candidatesZcandozcan-okZ	canonpathZcapsZcaptionCaptureZcasZcatdirZ
categorizezcategorize-listZcatfileZcatpathcauseZceilingZcglobalZchangedChannelcharsr<   childz
child-namezchild-typenamer=   r>   r?   rA   ZchrschunksZcisZclassifyzclassify-listZcleanupZclonerC   closedzclose-stdinzcmp-okcodeZcodesZcollatecolumnZcombcombinationsZcommandZcommentcompilerComplexZcomposeZcompose_typeZcomposerZ	conditionZconfigZconfigure_destroyZconfigure_type_checkingZconjrD   constraintsZ	constructcontainscontentscopyrE   ZcosecZcosechZcoshZcotanZcotanhcountz
count-onlyz	cpu-coresz	cpu-usageZCREATEZcreate_typeZcrossZcuecurdirZcurupdirdDateDateTimeZdayZdaycountzday-of-monthzday-of-weekzday-of-yearzdays-in-monthZdeclarationdecodedecoderZdeepmapr   rF   ZDEFINITEZdelayedz
DELETE-KEYz
DELETE-POSdenominatorZdescZDESTROYZ
destroyersdevnullZdiagzdid-you-meanrH   zdies-okdirdirnamezdir-sepZDISTROnamesr   r   zdoes-okZdonezdone-testingZduckmapZdynamiceZeagerZearlierZelemsemitZ	enclosingencodeencoderencodingendz	ends-withZenum_from_valueZenum_value_listZenum_valuesZenumsrJ   ZEVALzeval-dies-okZEVALFILEzeval-lives-ok	exceptionzexcludes-maxzexcludes-minz
EXISTS-KEYz
EXISTS-POSrN   ZexitcoderO   Zexpectedzexplicitly-manageZexpmod	extensionfZfailz
fails-likeZfcZfeaturefilefilenameZfind_methodZfind_method_qualifiedZfinishfirstZflatZflatmapZflipZfloorZflunkflushZfmtr5   	formatterZfreezefromz	from-listz	from-loopz
from-posixZfullzfull-barriergetZ	get_valuerR   ZgistZgotZgrabZ	grabpairsr]   ZhandleZhandledZhandlesZhardwareZhas_accessorHashheadZheaderszhh-mm-ssZhiddenZhidesZhourZhowZhyperidZillegalZiminindentr`   indicesZindirZinfiniteZinfixz	infix:<+>z	infix:<->Zinstall_method_cacheInstantZinsteadIntz
int-boundsintervalzin-timezonezinvalid-strinvertZinvocantIOzIO::Notification.watch-pathZ
is_trustedZis_typeZisazis-absolutezisa-okz	is-approxz	is-deeplyz	is-hiddenzis-initial-threadzis-intzis-lazyzis-leap-yearZisNaNZisntzis-primezis-relativez
is-routinez
is-settingzis-winitemiteratorrb   ZkeepZkeptZKERNELnameskeyZkeyofrc   rd   ZkvZkxxvllangr"   ZlastcallZlaterZlazyre   ZleadinglevelZlikelinelinesrg   Listrh   Zlivezlives-okri   lockrk   Zlog10lookupZlsbr   ZMAINr   MapmatchmaxZmaxpairsmergemessager   Zmethod_tablemethodsZmigrateminZminmaxZminpairsZminuteZ	misplacedMixMixHashrn   modeZmodifiedZmonthmovemroZmsbr   Z	multinessr#   r   ZnamedZnamed_namesZnarrowZ
nativecastznative-descriptorZnativesizeofr-   new_typeznew-from-daycountznew-from-pairsr$   Z
nextcalleeznext-handleZnextsameZnextwithNFCNFDNFKCNFKDznl-inznl-outZnodemapZnokZnoneZnormnotZnoteZnowZnudeNum	numeratorNumericZofoffsetzoffset-in-hourszoffset-in-minutesokoldzon-closeZonez	on-switchrp   ZopenedZ	operationZoptionalrq   ZordsZorigzos-errorZosnamez
out-bufferrr   r   zpackage-kindzpackage-nameZpackagesZpairpairsZpairupZ	parameterparamsparentzparent-nameparentsparsez
parse-baseZ	parsefilezparse-namespartspasspathzpath-sepZpayloadz	peer-hostz	peer-portZperiodsr   permutationsZphaserZpickZ	pickpairspidZplaceholderZplanZplusZpolarZpollZpolymodrt   ru   Z
positionalposixZpostfixZ	postmatchzprecomp-extzprecomp-targetZpredprefixZprematchZprependr,   rv   zprint-nlzprint-toZprivateZprivate_method_tableprocZproducePromisepromptZprotectzpull-onerw   zpush-allzpush-at-leastzpush-exactlyzpush-until-lazyZputzqualifier-typequitrZraceradixrx   rangeRatrawr   ry   Z	readcharsreadonlyZreadyRealZ
reallocateZrealsreasonZreblessZreceiver|   Zredispatcherr&   reduceZrel2absrelativereleaser~   ZrepeatedZreplacementreportZreservedresolveZrestorer   ZresumeZrethrowr   rightr   r   r   Zroles_to_composeZrolishZrollZrootdirrootsrotateZrotorroundZ
roundrobinzroutine-typerunZrwxsZsamecaseZsamemarkZsamewithZsayzschedule-onZ	schedulerscopeZsecZsechsecondr   selfr   SetZ
set_hiddenZset_nameset_packageZset_rwZ	set_valueSetHashzset-instrumentsZsetup_finalizationshapeZshareshellr   ZsiblingZsigilsignsignalZsignalsZ	signaturer   ZsinhZsinkzsink-allskipzskip-at-leastzskip-at-least-pull-onezskip-onez	skip-restr   zsleep-timerzsleep-untilSlipZslurpz
slurp-restZslurpyZsnapZsnappersozsocket-hostzsocket-portr   sourcezsource-packageZspawnZSPECr   r   ZsplitdirZ	splitpathr   Zspurtr   Zsquishr   Zstablestartstartedzstarts-withstatusstderrstdoutStrZsub_signatureZsubbufz	subbuf-rwsubnameZsubparsesubstzsubst-mutater   z	substr-eqz	substr-rwZsubtestZsuccsumSupplyr   ttailZtakeztake-rwZtanZtanhZtaptargetztarget-nameZtcZtclcr   r(   Zthrottlethrowzthrows-liketimezoneZtmpdirtoZtodayZtodoZtogglezto-posixtotalZtrailingZtransZtreeZtrimztrim-leadingztrim-trailingr   ztruncated-toZtrustsZtry_acquireZtryingZtwigiltypeZtype_capturestypenamer   ZudpZuncaught_handlerZunimatchZuninameZuninamesZuniparseZunipropZunipropsuniqueZunivalZunivalsZunliker   Zunlockr   Zunpolarr   unwrapZupdirZUSAGEzuse-okZutcvalvaluer   ZVARvariablezverbose-configversionZVMnamesZvolumeZvowwr   r   Zwatchz
watch-pathZweekzweekday-of-monthzweek-numberz	week-yearZWHATr   ZWHEREZ	WHEREFOREZWHICHZWHOzwhole-secondZWHYZwordcaser	   Z
workaroundwrapr   zwrite-toxZyadaZyearyieldz
yyyy-mm-ddzzipz
zip-latest)FalseTrueAnyr  ZAssociativeZASTZ	atomicintZ	AttributeZ	BacktracezBacktrace::Framer  ZBaggyr  ZBlobZBlockr
  ZBufCallableZ	CallFrameZCancellationr  ZCArrayr  ZCoder  r  Z
ComplexStrZCoolZCurrentThreadSchedulerZCursorr#  ZDateishr$  ZDistroZDurationZEncoding	ExceptionZFailureZFatRatZGrammarr;  ZHyperWhateverrA  rB  Zint16Zint32Zint64Zint8ZIntStrrE  zIO::ArgFileszIO::CatHandlez
IO::HandlezIO::NotificationzIO::PathzIO::Path::CygwinzIO::Path::QNXzIO::Path::UnixzIO::Path::Win32zIO::Pipez
IO::SocketzIO::Socket::AsynczIO::Socket::INETzIO::SpeczIO::Spec::CygwinzIO::Spec::QNXzIO::Spec::UnixzIO::Spec::Win32zIO::SpecialIterableIteratorZJunctionZKernelZLabelrN  LockzLock::AsyncZlongZlonglongZMacrorQ  MatchzMetamodel::AttributeContainerzMetamodel::C3MROzMetamodel::ClassHOWzMetamodel::EnumHOWzMetamodel::FinalizationzMetamodel::MethodContainerz!Metamodel::MROBasedMethodDispatchzMetamodel::MultipleInheritancezMetamodel::NamingzMetamodel::Primitivesz!Metamodel::PrivateMethodContainerzMetamodel::RoleContainerzMetamodel::TrustingZMethodrX  rY  ZMixyZMur^  r_  r`  ra  ZNilrc  Znum32Znum64re  ZNumStrZObjAtZOrderZPairZ	Parameterr   z
Pod::BlockzPod::Block::CodezPod::Block::CommentzPod::Block::DeclaratorzPod::Block::NamedzPod::Block::ParazPod::Block::TablezPod::Headingz	Pod::ItemZPointerZ
PositionalZPositionalBindFailoverZProczProc::Asyncrv  ZProxyZPseudoStashZ	QuantHashZRanger|  ZRationalZRatStrr  r   ZRoutineZScalarZ	Scheduler	SemaphoreZSeqr  r  ZSettyZ	SignatureZsize_tr  ZStashr  ZStrDistanceZStringyZSubZ	SubmethodZSupplierzSupplier::Preservingr  ZSystemicZTapZ	TelemetryzTelemetry::Instrument::ThreadzTelemetry::Instrument::UsagezTelemetry::PeriodzTelemetry::SamplerThreadZThreadPoolSchedulerZUIntZuint16Zuint32Zuint64Zuint8ZUniutf8r   ZVersionZVMZWhateverZWhateverCodeZ
WrapHandle)fXZr   ZalsoandZandthenbeforecmpZdiveqZeqvZextrafffffgegtleZlegltmZmmmodneororelserxr  r   r  xorxxz++z--z**!+-~?|||+^~^?^^*/%z%%z+&z+<z+>z~&z~<z~>z?&ZgcdZlcmr  r  z+|r  z~|r  z?|r  r  &r  r   r   z<=>z..z..^z^..z^..^z!=z==<z<=>z>=z~~z===z!eqvz&&r  z^^z//rW  rS  z??z!!r  r  r  rb  z<==z==>z<<==z==>>Zunicmp)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 u 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>      z/Perl6Lexer._build_word_match.<locals>.<genexpr>z)\bz(?<!r  r  c                 s   s   | ]}t |V  qd S r  r  r  r   r   r   r    r  z(?!)rb   )r	   Zboundary_regex_fragmentrt  r4   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 u rX|||d| }	n|| }
d}|d}|dkr|||| }||
|| }|dkrt|}d}qn|dkr||k r|d7 }|}qn|d8 }|}qn|}	|	dk rt|}	|d ur\t	d|r\||d| |	 }t	dt
| d ||	d  tj}|rT|	| 7 }	nt|}	|  || |	|  fV  |	| |_d S )	NZ	delimiteradverbsr      z:to\bz^\s*z\s*$)	groupdictlenr:  r   PERL6_BRACKETSr   findr  r   r   r  r   r0  ru   )lexerrR  contextgroupsZopening_charsZn_charsr  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  sJ    

 z.Perl6Lexer.brackets_callback.<locals>.callbackr   )r  r  r   r  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 )Nr   r   r  )stackr  r
   r   r0  ru   r  perl6_token_nesting_levelr  rR  r  r
  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 )Nr   r	  r   r  r   )	r
  r  r
   r   r0  ru   r  r  rt   r  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   )r  r  r
   r   r0  ru   r
  r   )r  rR  r  r   r   r   embedded_perl6_callbackI  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)token-sym-bracketsz(regex|token|rule)(?!z)(\s*z+)?	pre-tokenz(role)(\s+)(q)(\s*)z
(?::[UD])?r3   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)*)r   r   r   r   r   r   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  r   r   commonr   r   z.+?)r   r   z(?P<delimiter>(?P<first_char>[)r   r  r   z,(?<=:)(?:my|our|state|constant|temp|let).*?;z<(?:[-!?+.]\s*)?\[.*?\]>z(?<!\\)'(\\\\|\\[^\\]|[^'\\])*'z(?<!\\)"(\\\\|\\[^\\]|[^"\\])*"z#.*?$)r  r   r  r  r   c                 C   s   dd }|   }||}d|} t| dr0dS d}d}tdtj d | rVd	}d}|D ]d}td
d|}td|rzqZtd|r dS td|}|r|s|	dd ur dS d}qZ qqZd| v r|d }|S )Nc                 S   sH   d}g }| D ]6}t d|r"d}qt d|r4d}q|s|| q|S )NFz^=(?:end|cut)z^=\w+T)r   rR  r   )rM  Zin_podZstripped_linesrL  r   r   r   	strip_pod  s    z*Perl6Lexer.analyse_text.<locals>.strip_pod
zperl6|rakudo|niecza|pugsTFz(?:my|our|has)\s+(?:z+\s+)?[$@%&(]g?z#.*r  z^\s*$z$^\s*(?:use\s+)?v6(?:\.\d(?:\.\d)?)?;z?^\s*(?:(?P<scope>my|our)\s+)?(?:module|class|role|enum|grammar)r  g?r   r   )

splitlinesrb   r   r   r   r   PERL6_IDENTIFIER_RANGEr   rR  group)r   r  rM  Zsaw_perl_declZratingrL  Z
class_declr   r   r   r     s>    

zPerl6Lexer.analyse_textc                    s$   t  jf i | |dd| _d S )Nr/  zutf-8)super__init__r:  r/  )r  options	__class__r   r   r    s    zPerl6Lexer.__init__)Nr  r  )4r   r   r   r   r   r   r   r   r   r   r   UNICODEr   r  ZPERL6_KEYWORDSZPERL6_BUILTINSZPERL6_BUILTIN_CLASSESZPERL6_OPERATORSr   r  r  r  r  r  rb   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   r  __classcell__r   r   r  r   r      sB  t&C	8







1






O7)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   
(( K