o
    	ȷeh                     @   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gZG d	d deZdS )
z
    pygments.lexers.pascal
    ~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Pascal family languages.

    :copyright: Copyright 2006-2022 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DelphiLexerc                   @   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   aF  
    For 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.
    Delphi)delphipaspascalobjectpascalz*.pasz*.dprztext/x-pascal)8absoluteandarrayasmbeginbreakcaseconstconstructorcontinue
destructordivdodowntoelseendfileforfunctiongotoifimplementationin	inheritedinline	interfacelabelmodnilnotobjectofonoperatororpacked	procedureprogramrecordreintroducerepeatselfsetshlshrstringthentotypeunituntilusesvarwhilewithxor)asclassexceptexportsfinalizationfinallyinitializationislibraryr=   propertyraise	threadvartry)disposeexitfalsenewtrue>   r,   rQ   rM   rN   rP   r!   rV   r$   r7   rC   r]   rB   r/   r>   r^   rA   r`   r'   r%   rY   r2   r[   >   namenearaliascdeclexportr5   r   dynamicstdcallvarargsvirtualexternaloverrideregistersafecall	assembler	interrupt	softfloatnostackframe>   farfar16indexpubliccppdeclr	   forwardprivater   abstractrt   	protected	published
oldfpccall>G   boolbytecharcomprealworddwordint64pboolpbytepcharpcomppdatepwordtdatettimedoublepdwordpint64real48singlerJ   tclassbooleanintegerlongintpdoublephandlepointerpsinglepstringthandletobjectvariantansicharbyteboolcardinalcurrencyextendediunknownlongboollongwordpbooleanpintegerplongintppointerpvariantshortintsmallinttextfilewidecharwordbool	pansichar	pcardinal	pcurrency	pdatetime	pextended	plongword	pshortint	psmallint	pwidechar	pwordbool	tdatetime
ansistring
pbytearray
pwordarray
widestringpansistringpwidestringshortstringpshortstring)absacquireexceptionobjectaddr
ansitoutf8appendarctanassertassigned
assignfilebeginthread	blockread
blockwriter"   chdirchrclose	closefilecomptocurrencycomptodoubleconcatr&   copycosdecdeleterb   doubletocomp	endthreadenummodulesenumresourcemoduleseofeolnerase
exceptaddrexceptobjectexcluderc   expfileposfilesizefillcharfinalizefindclasshinstancefindhinstancefindresourcehinstanceflushfracfreemem	get8087cwgetdirgetlasterrorgetmemgetmemorymanagergetmodulefilenamegetvariantmanagerhalthihighincr   
initializeinsertintioresultismemorymanagersetisvariantmanagersetlengthlnlolowmkdirmovere   oddolestrtostringolestrtostrvarord
paramcountparamstrpipospredptr
pucs4charsrandom	randomizereadreadln
reallocmemreleaseexceptionobjectrenameresetrewritermdirroundrunerrorseekseekeofseekeoln	set8087cw	setlengthsetlinebreakstylesetmemorymanager	setstring
settextbufsetvariantmanagersinsizeofslicesqrsqrtstrstringofcharstringtoolestrstringtowidecharsuccswaptrunctruncatetypeinfoucs4stringtowidestringunicodetoutf8uniquestringupcase
utf8decode
utf8encode
utf8toansiutf8tounicodevalvararrayredimvarclearwidecharlentostringwidecharlentostrvarwidechartostringwidechartostrvarwidestringtoucs4stringwritewriteln)abortaddexitprocaddterminateprocadjustlinebreaksallocmemansicomparefilenameansicomparestransicomparetextansidequotedstransiextractquotedstransilastcharansilowercaseansilowercasefilenameansiposansiquotedstransisamestransisametextansistrcompansistricompansistrlastcharansistrlcompansistrlicompansistrlower
ansistrposansistrrscanansistrscanansistrupperansiuppercaseansiuppercasefilename	appendstr	assignstrbeep	booltostrbytetocharindexbytetocharlenbytetypecallterminateprocschangefileext
charlengthchartobyteindexchartobytelen
comparemem
comparestrcomparetext	createdir
createguidcurrentyear	currtostr
currtostrfdatedatetimetofiledatedatetimetostrdatetimetostringdatetimetosystemtimedatetimetotimestamp	datetostr	dayofweek
decodedatedecodedatefully
decodetime
deletefiledirectoryexistsdiskfreedisksize
disposestr
encodedate
encodetimeexceptionerrormessageexcludetrailingbackslashexcludetrailingpathdelimiterexpandfilenameexpandfilenamecaseexpanduncfilenameextractfiledirextractfiledriveextractfileextextractfilenameextractfilepathextractrelativepathextractshortpathnamefileage	fileclose
filecreatefiledatetodatetime
fileexistsfilegetattrfilegetdatefileisreadonlyfileopenfileread
filesearchfileseekfilesetattrfilesetdatefilesetreadonly	filewritefinalizepackage	findclosefindcmdlineswitch	findfirstfindnextfloattocurrfloattodatetimefloattodecimal
floattostrfloattostrffloattotextfloattotextfmt
fmtloadstrfmtstrforcedirectoriesformat	formatbuf
formatcurrformatdatetimeformatfloat
freeandnilgetcurrentdirgetenvironmentvariablegetfileversiongetformatsettingsgetlocaleformatsettingsgetmodulenamegetpackagedescriptiongetpackageinfogettimeguidtostring	incamonthincludetrailingbackslashincludetrailingpathdelimiterincmonthinitializepackageinterlockeddecrementinterlockedexchangeinterlockedexchangeaddinterlockedincrementinttohexinttostrisdelimiterisequalguid
isleapyearispathdelimiterisvalidident	languageslastdelimiterloadpackageloadstr	lowercasemsecstotimestampnewstrnextcharindexnowoutofmemoryerror	quotedstrraiselastoserrorraiselastwin32error	removedir
renamefilereplacedatereplacetimesafeloadlibrarysamefilenamesametextsetcurrentdirshowexceptionsleepstralloc
strbufsizestrbytetypestrcatstrcharlengthstrcompstrcopy
strdisposestrecopystrendstrfmtstricompstringreplacestringtoguidstrlcatstrlcompstrlcopystrlenstrlfmt	strlicompstrlowerstrmovestrnewstrnextcharstrpasstrpcopy	strplcopystrposstrrscanstrscan	strtoboolstrtobooldef	strtocurrstrtocurrdef	strtodatestrtodatedefstrtodatetimestrtodatetimedef
strtofloatstrtofloatdefstrtoint
strtoint64strtoint64defstrtointdef	strtotimestrtotimedefstruppersupportssyserrormessagesystemtimetodatetimetexttofloattimetimestamptodatetimetimestamptomsecs	timetostrtrimtrimleft	trimrighttryencodedatetryencodetimetryfloattocurrtryfloattodatetimetrystrtobooltrystrtocurrtrystrtodatetrystrtodatetimetrystrtofloattrystrtointtrystrtoint64trystrtotimeunloadpackage	uppercasewidecomparestrwidecomparetext
widefmtstr
wideformatwideformatbufwidelowercasewidesamestrwidesametextwideuppercase
win32checkwraptext),activateclassgroupallocatehwndbintohexchecksynchronizecollectionsequalcountgenerationsdeallocatehwnd	equalrectextractstrings	findclassfindglobalcomponentgetclassgroupdescendantswithhextobin
identtointinitinheritedcomponent
inttoidentinvalidpointisuniqueglobalcomponentname	linestartobjectbinarytotextobjectresourcetotextobjecttexttobinaryobjecttexttoresourcepointsequalreadcomponentresreadcomponentresexreadcomponentresfilerectregisterclassregisterclassaliasregisterclassesregistercomponentsregisterintegerconstsregisternoiconregisternonactivex
smallpointstartclassgroupteststreamformatunregisterclassunregisterclassesunregisterintegerconstsunregistermoduleclasseswritecomponentresfile)darccosarccosharccotarccotharccscarccscharcsecarcsecharcsinarcsinharctan2arctanhceilcomparevaluecosecantcoshcotcotancothcsccsch
cycletodegcycletograd
cycletorad
degtocycle	degtograddegtoraddivmoddoubledecliningbalanceensurerangefloorfrexpfuturevaluegetexceptionmaskgetprecisionmodegetroundmodegradtocycle	gradtodeg	gradtoradhypotinrangeinterestpaymentinterestrateinternalrateofreturnintpower
isinfiniteisnaniszeroldexplnxp1log10log2lognmaxmaxintvaluemaxvaluemeanmeanandstddevminminintvalueminvaluemomentskewkurtosisnetpresentvaluenormnumberofperiodspaymentperiodpaymentpoly
popnstddevpopnvariancepowerpresentvalue
radtocycleradtodeg	radtogradrandgrandomrangeroundto	samevaluesecsecantsechsetexceptionmasksetprecisionmodesetroundmodesignsimpleroundtosincossinhslndepreciationstddevsumsumintsumofsquaressumsandsquaressyddepreciationtantanhtotalvariancevariance)SystemSysUtilsClassesMath>C   ahalaxbhblbpbxchclcscxdhdidldsdxesfsgssispsscr0cr1cr2cr3cr4dr0dr1dr2dr3dr4dr5dr6dr7eaxebpebxecxediedxesiespmm0mm1mm2mm3mm4mm5mm6mm7st0st1st2st3st4st5st6st7xmm0xmm1xmm2xmm3xmm4xmm5xmm6xmm7>  btr3   jajbjcjejgjljojpjsjzr?   aaaaadaamaasadcaddr   bsfbsrbtcbtrbtscbwcdqclccldclicmccmpcwddaadasr   r(   hltr   r  jaejbejgejlejmpjnajnbjncjnejngjnljnojnpjnsjnzjpejpolarldslealeslfslgslsllssltrmovmulnegnopr:   outpoprclrcrrepretrolrorrsmsalsarsbbrH   rI   smistcstdstir2  subud1ud2rT   arplcallcltscwdeemmsibtsidivimulinsbinsdinswint1int3intoinvdiretjcxzjnaejnbejngejnlelahflgdtlidtljmplldtlmswlockloopmovdmovqpopapopfpushreperepzretfretnrsdcsahfsalcsetasetbsetcsetesetgsetlsetosetpsetssetzsgdtshldshrdsidtsldtsmswsvdcsvtstestumovverrverwwaitxaddxbtsxchgxlatboundbswapcmovacmovbcmovccmovecmovgcmovlcmovocmovpcmovscmovzcmpsbcmpsdcmpswcpuidentericebpint01int03iretdiretwjecxzlcallleavelodsblodsdlodswloopeloopzmovsbmovsdmovswmovsxmovzxoutsboutsdoutswpopadpopawpopfdpopfwpushapushfrdmsrrdpmcrdshrrdtscrepnerepnzrsldtscasbscasdscaswsetaesetbesetgesetlesetnasetnbsetncsetnesetngsetnlsetnosetnpsetnssetnzsetpesetposmintstosbstosdstoswsvldtwrmsrwrshrxlatbcmovaecmovbecmovgecmovlecmovnacmovnbcmovnccmovnecmovngcmovnlcmovnocmovnpcmovnscmovnzcmovpecmovpoinvlpgloopneloopnzpushadpushawpushfdpushfwsetcxzsetnaesetnbesetngesetnlesysretwbinvdcmovcxzcmovnaecmovnbecmovngecmovnlecmpxchgloadallsyscallsysexitsmintoldsysenter	cmpxchg8b
cmpxchg486
loadall286c                 K   s   t j| fi | t | _t|ddr| j| j t|ddr'| j| j t|ddr4| j| j t | _	t
|dt| jD ]}| j	| j|  qAd S )NturbopascalTr   
freepascalunits)r   __init__rG   keywordsr
   updateTURBO_PASCAL_KEYWORDSDELPHI_KEYWORDSFREE_PASCAL_KEYWORDSbuiltinsr   listBUILTIN_UNITS)rF   optionsrN    r:  M/var/www/ideatree/venv/lib/python3.10/site-packages/pygments/lexers/pascal.pyr0  ,  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r9t	}n|drN|j
drItj}nutj}np|drXtj}nf|d	rjt}|	rh|j
d
krhd}	nT|drt}d}|sw|r|j
dkr|d  d7  < n8|j
dkr|d  d8  < n)|j
dkr|d  d7  < n|j
dkr|d  d8  < n|dr|j
 }|dkrtjj}n|| 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|r(|| jv r(tj}n|r7|dv r7tj}d}n|rL|drEtj}nytj}d}nr|rVtj}d}nh|	rftj}|
 |j
  nX||
v rptj}nN|| j!v r{tj"}nC|| j#v rtj}n8|s|| j$v rtj}n*t}n&|drt%}|d n|drt%j&}n|drt'j(}n|drt'j)}n|drt'j*}nt+|dkr|,  |-  n|d dkr|d rt%j.}n|drt%}|,  n|d!rt%}n|-  |,  n|d dkr|dr!t	}n|d"r.t}|,  n|drC|j
dr?tj}ntj}n{|drMtj}nq|dr[t%}|d nc|d#retj}nY|dr|j
 }|| j/v ryt}nE|| j0v rtj}n;t}n8|d$rt}n/|drt}n&|drt'j(}n|drt'j)}n|drt'j*}n|-  |,  |j
1 r|j
d%k}|j2||j
pd&fV  |jr'd S d S )'NinitialFr   z\s+z\{.*?\}|\(\*.*?\*\)$z//.*?$z[-+*\/=<>:;,.@\^];z[\(\)\[\]]+(   )[]z[A-Za-z_][A-Za-z_0-9]*result)r7   r0   Tr    r^   )rA   r>   r/   r%   r'   )r  rK  z\s*\.\s*'rJ   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
IGNORECASErG   eosr   scanr   match
startswithr   Preproc	MultilineSingler   r   lowerr   BuiltinPseudor1  r   BLOCK_KEYWORDSr   FUNCTION_MODIFIERSr  ClassFunctionPropertyLabelr-  BUILTIN_TYPESType
DIRECTIVESr6  r   Charr   HexIntegerFloatlenr]  get_charEscapeASM_INSTRUCTIONSASM_REGISTERSstrip	start_pos)rF   textscannerstackin_function_blockin_property_blockwas_dotnext_token_is_functionnext_token_is_propertycollect_labelsblock_labelsbrace_balancetokenlowercase_namer:  r:  r;  get_tokens_unprocessed9  s:  
































 z"DelphiLexer.get_tokens_unprocessedN)__name__
__module____qualname____doc__rg   aliases	filenames	mimetypesr3  r4  r5  rW  rX  r_  r]  r8  rh  rg  r0  rx  r:  r:  r:  r;  r      s.    	!C ))r|  rI  pygments.lexerr   r   r   r   r   r   r   r	   pygments.utilr
   r   pygments.tokenr   r   r   r   r   r   r   r   r   pygments.scannerr   pygments.lexers.modula2r   __all__r   r:  r:  r:  r;  <module>   s    
(,