a
    ;@bD(                     @   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-2021 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dgZg dZdg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.

    .. versionadded:: 0.10
    ZFortranZfortranZf90)z*.f03z*.f90z*.F03z*.F90ztext/x-fortranz^#.*\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ALLOCATEZARRAYZASSIGNZ	ASSOCIATEZASYNCHRONOUSZ	BACKSPACEZBINDZBLOCKZ	BLOCKDATAZBYTECALLZCASEZCLASSZCLOSEZCODIMENSIONZCOMMONZ
CONTIGUOUSZCONTAINSZCONTINUEZCRITICALZCYCLEZDATAZ
DEALLOCATEZDECODEZDEFERREDZ	DIMENSIONZDOZ	ELEMENTALELSEZENCODEZ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MEMORYZMODULEZNAMELISTZNULLIFYZNONEZNON_INTRINSICZNON_OVERRIDABLEZNOPASSZONLYZOPENOPTIONALZOPTIONSZ	PARAMETERZPASSZPAUSEZPOINTERZPRINTZPRIVATEZPROGRAMZ	PROCEDUREZ	PROTECTEDZPUBLICZPUREZREADZ	RECURSIVEZRESULTZRETURNZREWINDZSAVEZSELECTZSEQUENCEZSTOPZ	SUBMODULEZ
SUBROUTINEZSYNCZSYNCALLZ
SYNCIMAGESZ
SYNCMEMORYZTARGETZTHENZTYPEZUNLOCKZUSEZVALUEZVOLATILEZWHEREZ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AModZ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CExpZCharZChDirZChModZCLogZCmplxZCommand_Argument_CountZ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EOShiftZEpsilonZErFZErFCZErFC_ScaledZETimeZExecute_Command_LineZExitZExpExponentZExtends_Type_OfZFDateZFGetZFGetCZFindLocFloatZFloorZFlushZFNumZFPutCZFPutZFractionZFSeekZFStatZFTellZ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_IndexZIndexZIntZIOrZIParityZIRandZIsaTtyZIShftZIShftCZISignZIso_C_BindingZIs_ContiguousZIs_Iostat_EndZIs_Iostat_EorZITimeZKillZKindZLBoundZLCoBoundZLenZLen_TrimZLGeZLGtZLinkZLLeZLLtZLnBlnkZLocZLogZ	Log_GammaZLogicalZLongZLShiftZLStatZLTimeZMaskLZMaskRZMatMulZMaxZMaxExponentZMaxLocZMaxValZMClockZMergeZ
Merge_BitsZ
Move_AllocZMinZMinExponentZMinLocZMinValZModZModuloZMvBitsZNearestZNew_LineZNIntZNorm2ZNotZNullZ
Num_ImagesZOrZPackZParityZPErrorZ	PrecisionZPresentZProductZRadixZRandZRandom_NumberZRandom_SeedZRangeZRealZRealPartZRenameZRepeatZReshapeZ	RRSpacingZ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SymLnkZ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!(?s)"(\\\\|\\[0-7]+|\\.|[^"\\])*"z!(?s)'(\\\\|\\[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aliases	filenamesZ	mimetypesre
IGNORECASE	MULTILINEflagsr	   Preprocr   r   r   
Whitespacer   r   r   Typer
   ZDeclarationr   ZBuiltinZWordr   DoubleSingler   ZIntegerr   tokens r1   r1   6lib/python3.9/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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   zD
    Lexer for fixed format Fortran.

    .. versionadded:: 2.1
    ZFortranFixedZfortranfixedz*.fz*.FNc                 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   groupZget_tokens_unprocessedreplace)selfmatchctxZlexertextindextokenvaluer1   r1   r2   _lex_fortran   s    zFortranFixedLexer._lex_fortranz[C*].*\nz#.*\nz {0,4}!.*\nz(.{5})	cont-charz.*\n code0.z(.{66})(.*)(\n)r   z(.*)(\n))r   r?   rA   )N)r    r!   r"   r#   r$   r%   r&   r'   r(   r*   r>   r	   r+   r   ZLabelr   r   r   r   ZStrongr   r,   r   r0   r1   r1   r1   r2   r      s.   



)r#   r'   Zpygments.lexerr   r   r   r   r   r   Zpygments.tokenr   r	   r
   r   r   r   r   r   r   __all__r   r   r1   r1   r1   r2   <module>   s   
 , 