a
    ñ»j‘(  ã                   @   s„   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dgZG dd„ deƒZG dd„ deƒZdS )	zÓ
    pygments.lexers.fortran
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Fortran languages.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú
RegexLexerÚbygroupsÚincludeÚwordsÚusingÚdefault)	ÚTextÚCommentÚOperatorÚKeywordÚNameÚStringÚNumberÚPunctuationÚGenericÚFortranLexerÚFortranFixedLexerc                   @   s"  e Zd ZdZdZdZddgZg d¢ZdgZdZ	e
je
jB Zd	ejfd
efedƒedƒdefedƒdejfgdeeejeƒfdeeejeƒfedddd�efedddd�ejfdefdejfdefedddd�ejfdejfdejfg
dejfdejfgde j!fd e j"fd!e j"fd"e j"fgd#œZ#d$S )%r   z$
    Lexer for FORTRAN 90 code.
    ÚFortranúhttps://fortran-lang.org/ÚfortranÚf90)z*.f03z*.f90z*.F03z*.F90ztext/x-fortranz0.10z^#.*\nz!.*\nÚstringsÚcorez[a-z][\w$]*Únumsz[\s]+z\b(DO)(\s+)(CONCURRENT)\bz\b(GO)(\s*)(TO)\b)ZABSTRACTZACCEPTZALLZALLSTOPZALLOCATABLEZALLOCATEÚARRAYZASSIGNZ	ASSOCIATEZASYNCHRONOUSZ	BACKSPACEZBINDZBLOCKZ	BLOCKDATAÚBYTEÚCALLZCASEZCLASSZCLOSEZCODIMENSIONZCOMMONZ
CONTIGUOUSZCONTAINSÚCONTINUEÚCRITICALZCYCLEZDATAZ
DEALLOCATEZDECODEZDEFERREDZ	DIMENSIONZDOZ	ELEMENTALÚELSEZELSEIFZENCODEÚENDZENDASSOCIATEZENDBLOCKZENDDOZENDENUMZ	ENDFORALLZENDFUNCTIONZENDIFZENDINTERFACEZ	ENDMODULEZ
ENDPROGRAMZ	ENDSELECTZENDSUBMODULEZENDSUBROUTINEZENDTYPEZENDWHEREZENTRYZENUMZ
ENUMERATORZEQUIVALENCEz
ERROR STOPZEXITZEXTENDSZEXTERNALZ	EXTRINSICÚFILEZFINALZFORALLZFORMATZFUNCTIONZGENERICZIFZIMAGESZIMPLICITZIMPORTZIMPUREZINCLUDEZINQUIREZINTENTZ	INTERFACEZ	INTRINSICZISZLOCKZMEMORYÚMODULEZNAMELISTZNULLIFYÚNONEZNON_INTRINSICZNON_OVERRIDABLEZNOPASSZONLYZOPENZOPTIONALÚOPTIONSZ	PARAMETERZPASSZPAUSEÚPOINTERZPRINTZPRIVATEZPROGRAMZ	PROCEDUREZ	PROTECTEDZPUBLICZPUREÚREADZ	RECURSIVEZRESULTZRETURNZREWINDZSAVEZSELECTZSEQUENCEÚSTOPZ	SUBMODULEZ
SUBROUTINEZSYNCZSYNCALLZ
SYNCIMAGESZ
SYNCMEMORYZTARGETZTHENZTYPEZUNLOCKZUSEZVALUEZVOLATILEZWHEREÚWRITEZWHILEz\bz\s*\b)ÚprefixÚsuffix)%Z	CHARACTERZCOMPLEXzDOUBLE PRECISIONzDOUBLE COMPLEXZINTEGERZLOGICALZREALZC_INTZC_SHORTZC_LONGZC_LONG_LONGZC_SIGNED_CHARZC_SIZE_TZC_INT8_TZ	C_INT16_TZ	C_INT32_TZ	C_INT64_TZC_INT_LEAST8_TZC_INT_LEAST16_TZC_INT_LEAST32_TZC_INT_LEAST64_TZC_INT_FAST8_TZC_INT_FAST16_TZC_INT_FAST32_TZC_INT_FAST64_TZ
C_INTMAX_TZ
C_INTPTR_TZC_FLOATZC_DOUBLEZC_LONG_DOUBLEZC_FLOAT_COMPLEXZC_DOUBLE_COMPLEXZC_LONG_DOUBLE_COMPLEXZC_BOOLZC_CHARZC_PTRZC_FUNPTRz$(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=)z(::)z[()\[\],:&%;.](1  ZAbortZAbsZAccessZACharZACosZACosHZAdjustLZAdjustRZAImagZAIntZAlarmZAllZ	AllocatedZALogZAMaxZAMinZAModÚAndZANIntÚAnyZASinZASinHZ
AssociatedZATanZATanHZAtomic_DefineZ
Atomic_RefZBesJZBesJNZ	Bessel_J0Z	Bessel_J1Z	Bessel_JNZ	Bessel_Y0Z	Bessel_Y1Z	Bessel_YNZBesYZBesYNZBGEZBGTZBLEZBLTZBit_SizeZBTestZCAbsZCCosZCeilingZCExpÚCharZChDirZChModZCLogZCmplxZCommand_Argument_CountÚComplexZConjgZCosZCosHZCountZCPU_TimeZCShiftZCSinZCSqRtZCTimeZC_LocZC_AssociatedZ
C_Null_PtrZC_Null_FunptrZC_F_PointerZC_F_ProcPointerZC_Null_CharZC_AlertZC_BackspaceZC_Form_FeedZC_FunLocZC_SizeofZ
C_New_LineZC_Carriage_ReturnZC_Horizontal_TabZC_Vertical_TabZDAbsZDACosZDASinZDATanZDate_and_TimeZDbesJZDbesJNZDbesYZDbesYNZDbleZDCosZDCosHZDDiMZDErFZDErFCZDExpZDigitsZDiMZDIntZDLogZDMaxZDMinZDModZDNIntZDot_ProductZDProdZDSignZDSinHZDShiftLZDShiftRZDSinZDSqRtZDTanHZDTanZDTimeZEOShiftÚEpsilonZErFZErFCZErFC_ScaledZETimeZExecute_Command_LineZExitZExpÚExponentZExtends_Type_OfZFDateZFGetZFGetCZFindLocÚFloatZFloorZFlushZFNumZFPutCZFPutÚFractionZFSeekZFStatZFTellÚGammaZGErrorZGetArgZGet_CommandZGet_Command_ArgumentZGet_Environment_VariableZGetCWDZGetEnvZGetGIdZGetLogZGetPIdZGetUIdZGMTimeZHostNmZHugeZHypotZIAbsZIACharZIAllZIAndZIAnyZIArgCZIBClrZIBitsZIBSetZICharZIDateZIDiMZIDIntZIDNIntZIEOrZIErrNoZIFixZImagZImagPartZImage_IndexÚIndexZIntZIOrZIParityZIRandZIsaTtyZIShftZIShftCZISignZIso_C_BindingZIs_ContiguousZIs_Iostat_EndZIs_Iostat_EorZITimeZKillÚKindZLBoundZLCoBoundZLenZLen_TrimZLGeZLGtÚLinkZLLeZLLtZLnBlnkZLocÚLogZ	Log_GammaZLogicalÚLongÚLShiftZLStatZLTimeZMaskLZMaskRZMatMulZMaxZMaxExponentZMaxLocZMaxValZMClockZMergeZ
Merge_BitsZ
Move_AllocZMinZMinExponentZMinLocZMinValÚModZModuloZMvBitsZNearestZNew_LineZNIntZNorm2ÚNotZNullZ
Num_ImagesÚOrZPackZParityZPErrorZ	PrecisionZPresentZProductZRadixZRandZRandom_NumberZRandom_SeedÚRangeÚRealZRealPartZRenameZRepeatZReshapeZ	RRSpacingÚRShiftZSame_Type_AsZScaleZScanZSecondZSelected_Char_KindZSelected_Int_KindZSelected_Real_KindZSet_ExponentZShapeZShiftAZShiftLZShiftRZShortZSignZSignalZSinHZSinZSleepZSnglZSpacingZSpreadZSqRtZSRandZStatZStorage_SizeZSumZSymLnkÚSystemZSystem_ClockZTanZTanHZTimeZ
This_ImageZTinyZTrailZZTransferZ	TransposeZTrimZTtyNamZUBoundZUCoBoundZUMaskZUnlinkZUnpackZVerifyZXOrZZAbsZZCosZZExpZZLogZZSinZZSqRtz\.(true|false)\.z+\.(eq|ne|lt|le|gt|ge|not|and|or|eqv|neqv)\.z"(\\[0-7]+|\\[^0-7]|[^"\\])*"z'(\\[0-7]+|\\[^0-7]|[^'\\])*'z\d+(?![.e])(_([1-9]|[a-z]\w*))?z0[+-]?\d*\.\d+([ed][-+]?\d+)?(_([1-9]|[a-z]\w*))?z0[+-]?\d+\.\d*([ed][-+]?\d+)?(_([1-9]|[a-z]\w*))?z0[+-]?\d+(\.\d*)?[ed][-+]?\d+(_([1-9]|[a-z]\w*))?)Úrootr   r   r   N)$Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚurlÚaliasesÚ	filenamesÚ	mimetypesÚversion_addedÚreÚ
IGNORECASEÚ	MULTILINEÚflagsr	   ÚPreprocr   r   r   Ú
Whitespacer   r   r   ÚTyper
   ÚDeclarationr   ÚBuiltinÚWordr   ÚDoubleÚSingler   ÚIntegerr1   Útokens© rZ   rZ   ú=E:\soccer\ml_env\Lib\site-packages\pygments/lexers/fortran.pyr      s`   ùëê	÷
ö2Î3Í6–nþü„c                   @   s°   e Zd ZdZdZdgZddgZdZdZe	j
Zdd	d
„ZdefdejfdefdejdfdeeƒfgdedfdedfdejdfgdeeeejƒdfdeeejƒdfedƒgdœZdS )r   z)
    Lexer for fixed format Fortran.
    ÚFortranFixedÚfortranfixedz*.fz*.Fr   z2.1Nc                 c   sN   t ƒ }| d¡d }| |¡D ]*\}}}| dd¡}|dkr|||fV  qdS )z8Lex a line just as free form fortran without line break.r   Ú
Ú N)r   ÚgroupÚget_tokens_unprocessedÚreplace)ÚselfÚmatchÚctxÚlexerÚtextÚindexÚtokenÚvaluerZ   rZ   r[   Ú_lex_fortran¸   s    zFortranFixedLexer._lex_fortranz[C*].*\nz#.*\nz {0,4}!.*\nz(.{5})ú	cont-charz.*\nú ÚcodeÚ0Ú.z(.{66})(.*)(\n)rA   z(.*)(\n))rA   rl   rn   )N)rB   rC   rD   rE   rF   rH   rI   rG   rK   rL   rM   rO   rk   r	   rP   r   ÚLabelr   r   r   r   ÚStrongr   rQ   r   rY   rZ   rZ   rZ   r[   r   ¬   s2   


û
ýÿüó)rE   rL   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   r   Ú__all__r   r   rZ   rZ   rZ   r[   Ú<module>   s   
 , 