a
    T_p                     @   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 ddlmZmZmZmZmZmZmZmZmZ ddl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.pascal
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Pascal family languages.

    :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)Lexer
RegexLexerincludebygroupswordsusingthisdefault)get_bool_optget_list_opt)	TextCommentOperatorKeywordNameStringNumberPunctuationError)Scanner)Modula2LexerDelphiLexerAdaLexerc                   @   s   e Zd ZdZdZg dZddgZdgZdZdZ	d	Z
h d
Zh dZh dZh dZdddddZh dZh dZdd Zdd ZdS )r   aj  
    For `Delphi <http://www.borland.com/delphi/>`_ (Borland Object Pascal),
    Turbo Pascal and Free Pascal source code.

    Additional options accepted:

    `turbopascal`
        Highlight Turbo Pascal specific keywords (default: ``True``).
    `delphi`
        Highlight Borland Delphi specific keywords (default: ``True``).
    `freepascal`
        Highlight Free Pascal specific keywords (default: ``True``).
    `units`
        A list of units that should be considered builtin, supported are
        ``System``, ``SysUtils``, ``Classes`` and ``Math``.
        Default is to consider all of them builtin.
    ZDelphi)delphiZpaspascalZobjectpascalz*.pasz*.dprztext/x-pascal)8absoluteandarrayasmbeginbreakcaseconstconstructorcontinue
destructordivdoZdowntoelseendfileforfunctiongotoifimplementationinZ	inheritedinline	interfacelabelmodZnilnotobjectofonoperatororZpacked	procedureprogramrecordZreintroducerepeatselfsetshlshrstringthentotypeunituntilusesvarwhilewithxor)asclassexceptZexportsfinalizationfinallyinitializationislibraryr8   propertyraise	threadvartry)disposeexitZfalsenewtrue>   r"   r3   rQ   rI   r   r/   rO   rS   r)   r,   r=   rX   rF   r%   r<   rU   r#   rV   rG   rJ   r;   r9   >   r   	assemblerZcdeclZvirtualZdynamicaliasZ	softfloatZexternalZsafecallregisterZnostackframeZnearr1   Z	interruptZexportoverridenameZvarargsZstdcall>   r	   ZpublicZforwardindexZfar	protectedZprivateZcppdeclZ
oldfpccallr^   Z	publishedr   abstractZfar16>G   ZbyteboolboolZ	plongwordZpbooleanZpansistringZpboolZpint64ZpvariantZdwordZ	pcardinalZ	pwidecharZwordZlongboolcompZ	pwordboolZshortstringZppointerZ	pansicharZpstringZlongintZ	pcurrencyZttimeZthandleZpcompZ	pshortintZpshortstringZ
widestringZ	pdatetimeZdoublerealZtclassZpdateZpwidestringZpcharZpdoubleZtextfileZ
ansistringZvariantZpointerZtdateZplongintZbyteZshortintZintegerZsmallintZpdwordZpintegerZpsingleZpwordZreal48ZcardinalZsinglerC   Z
pbytearrayZ
pwordarrayZlongwordZcurrencyZ	tdatetimeZiunknowncharZ	pextendedZbooleanZphandleZpbyteZtobjectZwordboolZextendedZwidecharZansicharZ	psmallintZint64)absZacquireexceptionobjectZaddrZ
ansitoutf8appendZarctanassertassignedZ
assignfileZbeginthreadZ	blockreadZ
blockwriter    chdirchrcloseZ	closefileZcomptocurrencyZcomptodoubleconcatr$   copyZcosdecdeleterZ   ZdoubletocompZ	endthreadZenummodulesZenumresourcemoduleseofZeolnZeraseZ
exceptaddrZexceptobjectZexcluder[   ZexpZfileposZfilesizeZfillcharfinalizeZfindclasshinstanceZfindhinstanceZfindresourcehinstanceflushZfracZfreememZ	get8087cwZgetdirZgetlasterrorZgetmemZgetmemorymanagerZgetmodulefilenameZgetvariantmanagerZhalthiZhighincr   Z
initializeinsertintZioresultZismemorymanagersetZisvariantmanagersetZlengthZlnloZlowmkdirZmover\   ZoddZolestrtostringZolestrtostrvarordZ
paramcountZparamstrZpiposZpredZptrZ
pucs4charsZrandomZ	randomizereadZreadlnZ
reallocmemZreleaseexceptionobjectrenameresetZrewritermdirroundZrunerrorseekZseekeofZseekeolnZ	set8087cwZ	setlengthZsetlinebreakstyleZsetmemorymanagerZ	setstringZ
settextbufZsetvariantmanagerZsinZsizeofsliceZsqrZsqrtstrZstringofcharZstringtoolestrZstringtowidecharZsuccZswapZtrunctruncateZtypeinfoZucs4stringtowidestringZunicodetoutf8ZuniquestringZupcaseZ
utf8decodeZ
utf8encodeZ
utf8toansiZutf8tounicodevalZvararrayredimZvarclearZwidecharlentostringZwidecharlentostrvarZwidechartostringZwidechartostrvarZwidestringtoucs4stringwriteZwriteln)abortZaddexitprocZaddterminateprocZadjustlinebreaksZallocmemZansicomparefilenameZansicomparestrZansicomparetextZansidequotedstrZansiextractquotedstrZansilastcharZansilowercaseZansilowercasefilenameZansiposZansiquotedstrZansisamestrZansisametextZansistrcompZansistricompZansistrlastcharZansistrlcompZansistrlicompZansistrlowerZ
ansistrposZansistrrscanZansistrscanZansistrupperZansiuppercaseZansiuppercasefilenameZ	appendstrZ	assignstrZbeepZ	booltostrZbytetocharindexZbytetocharlenZbytetypeZcallterminateprocsZchangefileextZ
charlengthZchartobyteindexZchartobytelenZ
comparememZ
comparestrZcomparetextZ	createdirZ
createguidZcurrentyearZ	currtostrZ
currtostrfdateZdatetimetofiledateZdatetimetostrZdatetimetostringZdatetimetosystemtimeZdatetimetotimestampZ	datetostrZ	dayofweekZ
decodedateZdecodedatefullyZ
decodetimeZ
deletefileZdirectoryexistsZdiskfreeZdisksizeZ
disposestrZ
encodedateZ
encodetimeZexceptionerrormessageZexcludetrailingbackslashZexcludetrailingpathdelimiterZexpandfilenameZexpandfilenamecaseZexpanduncfilenameZextractfiledirZextractfiledriveZextractfileextZextractfilenameZextractfilepathZextractrelativepathZextractshortpathnameZfileageZ	filecloseZ
filecreateZfiledatetodatetimeZ
fileexistsZfilegetattrZfilegetdateZfileisreadonlyZfileopenZfilereadZ
filesearchZfileseekZfilesetattrZfilesetdateZfilesetreadonlyZ	filewriteZfinalizepackageZ	findcloseZfindcmdlineswitchZ	findfirstZfindnextZfloattocurrZfloattodatetimeZfloattodecimalZ
floattostrZfloattostrfZfloattotextZfloattotextfmtZ
fmtloadstrZfmtstrZforcedirectoriesformatZ	formatbufZ
formatcurrZformatdatetimeZformatfloatZ
freeandnilZgetcurrentdirZgetenvironmentvariableZgetfileversionZgetformatsettingsZgetlocaleformatsettingsgetmodulenameZgetpackagedescriptionZgetpackageinfoZgettimeZguidtostringZ	incamonthZincludetrailingbackslashZincludetrailingpathdelimiterZincmonthZinitializepackageZinterlockeddecrementZinterlockedexchangeZinterlockedexchangeaddZinterlockedincrementZinttohexZinttostrZisdelimiterZisequalguidZ
isleapyearZispathdelimiterZisvalididentZ	languagesZlastdelimiterZloadpackageZloadstrZ	lowercaseZmsecstotimestampZnewstrZnextcharindexZnowZoutofmemoryerrorZ	quotedstrZraiselastoserrorZraiselastwin32errorZ	removedirZ
renamefileZreplacedateZreplacetimeZsafeloadlibraryZsamefilenameZsametextZsetcurrentdirZshowexceptionsleepZstrallocZ
strbufsizeZstrbytetypeZstrcatZstrcharlengthZstrcompZstrcopyZ
strdisposeZstrecopyZstrendZstrfmtZstricompZstringreplaceZstringtoguidZstrlcatZstrlcompZstrlcopyZstrlenZstrlfmtZ	strlicompZstrlowerZstrmoveZstrnewZstrnextcharZstrpasZstrpcopyZ	strplcopyZstrposZstrrscanZstrscanZ	strtoboolZstrtobooldefZ	strtocurrZstrtocurrdefZ	strtodateZstrtodatedefZstrtodatetimeZstrtodatetimedefZ
strtofloatZstrtofloatdefZstrtointZ
strtoint64Zstrtoint64defZstrtointdefZ	strtotimeZstrtotimedefZstrupperZsupportsZsyserrormessageZsystemtimetodatetimeZtexttofloattimeZtimestamptodatetimeZtimestamptomsecsZ	timetostrZtrimZtrimleftZ	trimrightZtryencodedateZtryencodetimeZtryfloattocurrZtryfloattodatetimeZtrystrtoboolZtrystrtocurrZtrystrtodateZtrystrtodatetimeZtrystrtofloatZtrystrtointZtrystrtoint64ZtrystrtotimeZunloadpackageZ	uppercaseZwidecomparestrZwidecomparetextZ
widefmtstrZ
wideformatZwideformatbufZwidelowercaseZwidesamestrZwidesametextZwideuppercaseZ
win32checkZwraptext),ZactivateclassgroupZallocatehwndZbintohexZchecksynchronizeZcollectionsequalZcountgenerationsZdeallocatehwndZ	equalrectZextractstringsZ	findclassZfindglobalcomponentZgetclassZgroupdescendantswithZhextobinZ
identtointZinitinheritedcomponentZ
inttoidentZinvalidpointZisuniqueglobalcomponentnameZ	linestartZobjectbinarytotextZobjectresourcetotextZobjecttexttobinaryZobjecttexttoresourceZpointsequalZreadcomponentresZreadcomponentresexZreadcomponentresfileZrectZregisterclassZregisterclassaliasZregisterclassesZregistercomponentsZregisterintegerconstsZregisternoiconZregisternonactivexZ
smallpointZstartclassgroupZteststreamformatZunregisterclassZunregisterclassesZunregisterintegerconstsZunregistermoduleclassesZwritecomponentresfile)dZarccosZarccoshZarccotZarccothZarccscZarccschZarcsecZarcsechZarcsinZarcsinhZarctan2ZarctanhZceilZcomparevalueZcosecantZcoshZcotZcotanZcothZcscZcschZ
cycletodegZcycletogradZ
cycletoradZ
degtocycleZ	degtogradZdegtoraddivmodZdoubledecliningbalanceZensurerangeZfloorZfrexpZfuturevalueZgetexceptionmaskZgetprecisionmodeZgetroundmodeZgradtocycleZ	gradtodegZ	gradtoradZhypotZinrangeZinterestpaymentZinterestrateZinternalrateofreturnZintpowerZ
isinfiniteZisnanZiszeroZldexpZlnxp1Zlog10Zlog2ZlognmaxZmaxintvalueZmaxvalueZmeanZmeanandstddevminZminintvalueZminvalueZmomentskewkurtosisZnetpresentvalueZnormZnumberofperiodsZpaymentZperiodpaymentZpolyZ
popnstddevZpopnvarianceZpowerZpresentvalueZ
radtocycleZradtodegZ	radtogradZrandgZrandomrangeZroundtoZ	samevalueZsecZsecantZsechZsetexceptionmaskZsetprecisionmodeZsetroundmodeZsignZsimpleroundtoZsincosZsinhZslndepreciationZstddevsumZsumintZsumofsquaresZsumsandsquaresZsyddepreciationZtanZtanhZtotalvarianceZvariance)ZSystemZSysUtilsZClassesZMath>C   ZesiZeaxZesZspZst1ZahZalZxmm0ZcxZdr7ZbpZxmm1Zmm7ZdhZxmm7Zmm2ZclZdiZcr3ZespZmm6Zmm4ZcsZdlZmm0ZssZst5Zcr2ZaxZebpZxmm5Zxmm4ZsiZst3Zdr3Zmm3ZdxZcr0ZecxZdsZcr4Zdr5ZgsZmm5Zst2ZediZfsZst7Zdr4Zcr1Zdr1ZbhZst6Zst4ZchZdr6Zdr2ZebxZedxZxmm2Zxmm6Zdr0ZblZmm1ZbxZst0Zxmm3>  ZsldtZjneZjnaeZpushawZmovdZpushfdZlcallZcmovnaeZpopfwZsetnleZintoZstiZstosdZpopawZsysexitry   ZlmswZlahfZcmovpZmovswZlgdtZsetbZinvlpgZjgZsysretZlslZretfZint3ZsetncZrsmZsahfZcltsZjnlZmovZjpeZsetnzZcmovlZsetnoZibtsZleaveZcmovncZcallZrepeZjbZcmovbeZbtsZsetaZstcZxbtsZbtZint01ZidivZrepneloopZcmpZ
cmpxchg486ZoutswZsetpZjleZloadallZdasZjnbeZlidtZbsfZloopeZcmovnpZjcZscasdZjgeZsetnaeZjpoZpopfdZemmsZshrdZclcsubZleaZcmovoZsetlZsetneZlfsZpopadZrepZjecxzZbswapZrepnzZxlatbZcmovnbZinswZshldZrolZsidtZjnoZsvdcZrorZbsrZaasZcmovnsZlarZxlatZiretZjnzr:   ZwbinvdZjaZsetsimulZcdqZjnbZwrmsrZsalboundZbtcpushZdaaZinsdZcmovzZsetpoZud1ZverwZaaaZloopnzZiretwZlodsdZmovqrM   ZcmovnleZsetgeZsmintoldZcmpsdZaadZverrZcmovcZcmovnoZsetnaZsetngZcmpswZldsZadcZjnaZrclr0   ZiretdZseteZaamZsetleZsetnlZsvtsZpushfwZcmovngeZrdmsrZcliZlodsbZsetnpZrepzZsgdtZint03ZcwdeZcmovbZmovzxZjbeZicebpZpushaZbtrZljmpZcmpsbZlodswZretZsetnbZsalcZsetnsZsmswr&   ZsysenterZcmovsZjeZsetzZloopnerB   ZretnZcmovaeZjzZinvdZcbwZloopzZjngZrdtscZcmcZcmovaZcmovcxzZjcxzZoutsdZxaddZsetgoutnegZcmovpoZrcrZltrZmovsxZjncZjoZcmovneZsetngeZcmovgZcmovgeZhltZint1ZsbbZsetcZsmiZjaeZjngelockZrdpmcZrsdcZwrshrZpushfZcmovleZcmovngZscasbZud2ZsetbewaitZscaswZsvldtZenterZlssZmovsbZpopfZsmintZumovZjnleZsetocwdZpushadZinsbZcmpxchgZarplZjpZpopaZsetnbeZrsldtZjsZstdZsyscallpopaddZjnsZmovsdZstoswZjmpZcldr{   r   ZjnpZcmovnaZcmoveZoutsbZcpuidZsetcxzZsarZjlr   Zxchgrs   ZstosbZ
loadall286ZlgsmulZsetaerA   ZcmovnbeZnopZcmovnlZlldtr5   ZsetpeZ	cmpxchg8bZcmovnzZlesZrdshrZcmovpetestc                 K   s   t j| fi | t | _t|ddr4| j| j t|ddrN| j| j t|ddrh| j| j t | _	t
|dt| jD ]}| j	| j|  qd S )NZturbopascalTr   Z
freepascalZunits)r   __init__r@   keywordsr
   updateTURBO_PASCAL_KEYWORDSDELPHI_KEYWORDSFREE_PASCAL_KEYWORDSbuiltinsr   listBUILTIN_UNITS)r?   ZoptionsrG    r   8/usr/lib/python3/dist-packages/pygments/lexers/pascal.pyr   -  s    zDelphiLexer.__init__c                 c   s  t |tjtjB tjB }dg}d}d}d}d}d}d}	t }
ddg}|jst}|d dkr|drpt	}qp|dr|j
drtj}ntj}qp|drtj}qp|d	rt}|	r|j
d
krd}	qp|drht}d}|s|r|j
dkr|d  d7  < nX|j
dkr*|d  d8  < n:|j
dkrH|d  d7  < n|j
dkr|d  d8  < qp|dr"|j
 }|dkrtjj}q|| jv r<t}|s|r|| jv r|d dkr|d dkrd}d}ddg}t }
|dv rd}	n<|dkr|d n&|dkr(d}d}n|dv r d}d}n|rV|| jv rVtj}n|rr|dv rrtj}d}n|r|drtj}n
tj}d}n|rtj}d}nv|	rtj}|
 |j
  nX||
v rtj}nF|| j!v rtj"}n2|| j#v rtj}n|s|| j$v rtj}nt}n|dr>t%}|d nn|drRt%j&}nZ|drft'j(}nF|drzt'j)}n2|drt'j*}nt+|dkr|,  |-  n|d dkr|d rt%j.}n<|drt%}|,  n"|d!rt%}n|-  |,  n^|d dkrp|dr4t	}n<|d"rPt}|,  n |drz|j
drrtj}ntj}n|drtj}n|drt%}|d n|d#rtj}n|dr |j
 }|| j/v rt}n|| j0v rtj}nt}np|d$rt}n^|dr$t}nL|dr8t'j(}n8|drLt'j)}n$|dr`t'j*}n|-  |,  |j
1 r|j
d%k}|j2||j
pd&fV  qDd S )'NinitialFr   \s+z\{.*?\}|\(\*.*?\*\)$z//.*?$z[-+*\/=<>:;,.@\^];z[\(\)\[\]]+(   )[]z[A-Za-z_][A-Za-z_0-9]*result)r3   r-   Tr   rV   )r;   r9   r,   r#   r%   )r   r   z\s*\.\s*'rC   z\#(\d+|\$[0-9A-Fa-f]+)z\$[0-9A-Fa-f]+z\d+(?![eE]|\.[^.])z&\d+(\.\d+([eE][+-]?\d+)?|[eE][+-]?\d+)z''z[^']*r)   z@@[A-Za-z_][A-Za-z_0-9]*z[-+*\/=<>:;,.@\^]+. )3r   reDOTALL	MULTILINE
IGNORECASEr@   Zeosr   scanr   match
startswithr   PreprocZ	MultilineSingler   r   lowerr   ZBuiltinZPseudor   r   BLOCK_KEYWORDSrk   FUNCTION_MODIFIERSr   ClassFunctionZPropertyLabelr   BUILTIN_TYPESType
DIRECTIVESr   r   ZCharr   HexIntegerFloatlenr   Zget_charZEscapeASM_INSTRUCTIONSASM_REGISTERSstripZ	start_pos)r?   textscannerstackZin_function_blockZin_property_blockZwas_dotZnext_token_is_functionZnext_token_is_propertyZcollect_labelsZblock_labelsZbrace_balancetokenZlowercase_namer   r   r   get_tokens_unprocessed:  s8   


















z"DelphiLexer.get_tokens_unprocessedN)__name__
__module____qualname____doc__rb   aliases	filenames	mimetypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s,   	!C )c                   @   s  e Zd ZdZdZg dZg dZdgZej	ej
B Zdefdejfdefdejd	fd
eejeejdfdejfdeejefdeejedfdeejeejfdejfedddejfdejfdejfdejdfdejdfdeejedfdeejeeeejfdejfdeejeeeejfedddd ejfd!efed"ed#d$ejfd%eee e!fd&efd'efd(efgd)e"j#fd*e"j$fd+e"j%fgd,eeej&fgd-ed.fd/ed0fd1ejd0fd2ej'fed3gd4ejfd5ej'fd6efd/ed0fgd/ed0fd-ed7fd8ejfdejd9fd:ejd;fd<eejed0fed3gd/ed0fd=eejeejfed3gd>ejd0fed3gd?ejd0fe(d0gd@ed0fdAej)fdBefdCejfed3gdDejfdEejfdFejd0fd/ed0fd-edGfdHej*fed3gdIeej)eefdJefd@ed0fed3gdKZ+dLS )Mr   z9
    For Ada source code.

    .. versionadded:: 1.3
    ZAda)ZadaZada95Zada2005)z*.adbz*.adsz*.adaz
text/x-adaz[^\S\n]+z--.*?\nzfunction|procedure|entry
subprogramz(subtype|type)(\s+)(\w+)type_defztask|protectedz(subtype)(\s+)z
(end)(\s+)r)   z(pragma)(\s+)(\w+)z(true|false|null)\b)ZAddressZByteZBoolean	CharacterZ
ControlledZCountZCursorZDurationZ	File_ModeZ	File_Typer   	Generatorr   Z
Long_FloatZLong_IntegerZLong_Long_FloatZLong_Long_IntegerZNaturalZPositiveZReference_TypeZShort_FloatZShort_IntegerZShort_Short_FloatZShort_Short_Integerr   ZWide_CharacterZWide_Stringz\b)suffixz,(and(\s+then)?|in|mod|not|or(\s+else)|rem)\bzgeneric|privatepackagezarray\b	array_defz(with|use)(\s+)importz(\w+)(\s*)(:)(\s*)(constant)z<<\w+>>z0(\w+)(\s*)(:)(\s*)(declare|begin|loop|for|while))<r   rj   re   ZacceptaccessZaliasedallr   Zatr   bodyr!   ZconstantZdeclareZdelayZdeltaZdigitsr'   r(   Zelsifr)   entryZ	exceptionr[   r2   r+   r-   r.   rT   Zlimitedr   r\   Znullr7   r:   Zothersr   Z
overridingZpragmard   rW   ranger=   renamesZrequeuereturnreverseZselectZseparateZsubtypeZsynchronizedZtaskZtaggedZ	terminaterD   rF   rH   ZwhenrK   rM   )prefixr   z"[^"]*"	attributenumbersz'[^']'z(\w+)(\s*|[(,])z(<>|=>|:=|[()|:;,.'])z
[*<>+=/&-]z\n+z[0-9_]+#[0-9a-f_\.]+#z[0-9_]+\.[0-9_]*z[0-9_]+z(')(\w+)z\()#popformal_partr   r   zis\bz"[^"]+"|\w+rootz(if|case|record|loop|select)z"[^"]+"|[\w.]+r   r   zwith|and|use)r   r   zrecord\b
record_defz(null record)(;)z(\w+)(\s+)(range)z
end recordz[\w.]+z\)z\w+z,|:[^=]z(in|not|null|out|access)\br   zis\s+new|renamesrT   package_instantiationz([\w.]+)z("[^"]+"|\w+)(\s+)(=>)z[\w.\'"])r   r   r   r   r)   r   r   r   r   r   r   r   N),r   r   r   r   rb   r   r   r   r   r   r   flagsr   r   r   r   ZDeclarationr   r   ZReservedr   ZConstantr   r   ZWordZ	Namespacer   r   r   r   r   r   r   r   r   r   r   r   Z	Attributer   r	   ZVariabler   tokensr   r   r   r   r     s   

	

	
6







)r   r   Zpygments.lexerr   r   r   r   r   r   r   r	   Zpygments.utilr
   r   Zpygments.tokenr   r   r   r   r   r   r   r   r   Zpygments.scannerr   Zpygments.lexers.modula2r   __all__r   r   r   r   r   r   <module>   s   
(,   g