§
    £E±c`(  ã                   óž   — 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e¦  «        Z G d„ de¦  «        ZdS )	zÐ
    pygments.lexers.fortran
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Fortran languages.

    :copyright: Copyright 2006-2022 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                   ó  — e Zd ZdZdZdZddgZg d¢ZdgZe	j
        e	j        z  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¬¦  «        ef eddd¬¦  «        ej        fdefdej        fdef e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
    ÚFortranzhttps://fortran-lang.org/ÚfortranÚ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)~ÚABSTRACTÚACCEPTÚALLÚALLSTOPÚALLOCATABLEÚALLOCATEÚARRAYÚASSIGNÚ	ASSOCIATEÚASYNCHRONOUSÚ	BACKSPACEÚBINDÚBLOCKÚ	BLOCKDATAÚBYTEÚCALLÚCASEÚCLASSÚCLOSEÚCODIMENSIONÚCOMMONÚ
CONTIGUOUSÚCONTAINSÚCONTINUEÚCRITICALÚCYCLEÚDATAÚ
DEALLOCATEÚDECODEÚDEFERREDÚ	DIMENSIONÚDOÚ	ELEMENTALÚELSEÚENCODEÚENDÚENDASSOCIATEÚENDBLOCKÚENDDOÚENDENUMÚ	ENDFORALLÚENDFUNCTIONÚENDIFÚENDINTERFACEÚ	ENDMODULEÚ
ENDPROGRAMÚ	ENDSELECTÚENDSUBMODULEÚENDSUBROUTINEÚENDTYPEÚENDWHEREÚENTRYÚENUMÚ
ENUMERATORÚEQUIVALENCEz
ERROR STOPÚEXITÚEXTENDSÚEXTERNALÚ	EXTRINSICÚFILEÚFINALÚFORALLÚFORMATÚFUNCTIONÚGENERICÚIFÚIMAGESÚIMPLICITÚIMPORTÚIMPUREÚINCLUDEÚINQUIREÚINTENTÚ	INTERFACEÚ	INTRINSICÚISÚLOCKÚMEMORYÚMODULEÚNAMELISTÚNULLIFYÚNONEÚNON_INTRINSICÚNON_OVERRIDABLEÚNOPASSÚONLYÚOPENÚOPTIONALÚOPTIONSÚ	PARAMETERÚPASSÚPAUSEÚPOINTERÚPRINTÚPRIVATEÚPROGRAMÚ	PROCEDUREÚ	PROTECTEDÚPUBLICÚPUREÚREADÚ	RECURSIVEÚRESULTÚRETURNÚREWINDÚSAVEÚSELECTÚSEQUENCEÚSTOPÚ	SUBMODULEÚ
SUBROUTINEÚSYNCÚSYNCALLÚ
SYNCIMAGESÚ
SYNCMEMORYÚTARGETÚTHENÚTYPEÚUNLOCKÚUSEÚVALUEÚVOLATILEÚWHEREÚWRITEÚWHILEz\bz\s*\b)ÚprefixÚsuffix)%Ú	CHARACTERÚCOMPLEXzDOUBLE PRECISIONzDOUBLE COMPLEXÚINTEGERÚLOGICALÚREALÚC_INTÚC_SHORTÚC_LONGÚC_LONG_LONGÚC_SIGNED_CHARÚC_SIZE_TÚC_INT8_TÚ	C_INT16_TÚ	C_INT32_TÚ	C_INT64_TÚC_INT_LEAST8_TÚC_INT_LEAST16_TÚC_INT_LEAST32_TÚC_INT_LEAST64_TÚC_INT_FAST8_TÚC_INT_FAST16_TÚC_INT_FAST32_TÚC_INT_FAST64_TÚ
C_INTMAX_TÚ
C_INTPTR_TÚC_FLOATÚC_DOUBLEÚC_LONG_DOUBLEÚC_FLOAT_COMPLEXÚC_DOUBLE_COMPLEXÚC_LONG_DOUBLE_COMPLEXÚC_BOOLÚC_CHARÚC_PTRÚC_FUNPTRz$(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=)z(::)z[()\[\],:&%;.](1  ÚAbortÚAbsÚAccessÚACharÚACosÚACosHÚAdjustLÚAdjustRÚAImagÚAIntÚAlarmÚAllÚ	AllocatedÚALogÚAMaxÚAMinÚAModÚAndÚANIntÚAnyÚASinÚASinHÚ
AssociatedÚATanÚATanHÚAtomic_DefineÚ
Atomic_RefÚBesJÚBesJNÚ	Bessel_J0Ú	Bessel_J1Ú	Bessel_JNÚ	Bessel_Y0Ú	Bessel_Y1Ú	Bessel_YNÚBesYÚBesYNÚBGEÚBGTÚBLEÚBLTÚBit_SizeÚBTestÚCAbsÚCCosÚCeilingÚCExpÚCharÚChDirÚChModÚCLogÚCmplxÚCommand_Argument_CountÚComplexÚConjgÚCosÚCosHÚCountÚCPU_TimeÚCShiftÚCSinÚCSqRtÚCTimeÚC_LocÚC_AssociatedÚ
C_Null_PtrÚC_Null_FunptrÚC_F_PointerÚC_F_ProcPointerÚC_Null_CharÚC_AlertÚC_BackspaceÚC_Form_FeedÚC_FunLocÚC_SizeofÚ
C_New_LineÚC_Carriage_ReturnÚC_Horizontal_TabÚC_Vertical_TabÚDAbsÚDACosÚDASinÚDATanÚDate_and_TimeÚDbesJÚDbesJNÚDbesYÚDbesYNÚDbleÚDCosÚDCosHÚDDiMÚDErFÚDErFCÚDExpÚDigitsÚDiMÚDIntÚDLogÚDMaxÚDMinÚDModÚDNIntÚDot_ProductÚDProdÚDSignÚDSinHÚDShiftLÚDShiftRÚDSinÚDSqRtÚDTanHÚDTanÚDTimeÚEOShiftÚEpsilonÚErFÚErFCÚErFC_ScaledÚETimeÚExecute_Command_LineÚExitÚExpÚExponentÚExtends_Type_OfÚFDateÚFGetÚFGetCÚFindLocÚFloatÚFloorÚFlushÚFNumÚFPutCÚFPutÚFractionÚFSeekÚFStatÚFTellÚGammaÚGErrorÚGetArgÚGet_CommandÚGet_Command_ArgumentÚGet_Environment_VariableÚGetCWDÚGetEnvÚGetGIdÚGetLogÚGetPIdÚGetUIdÚGMTimeÚHostNmÚHugeÚHypotÚIAbsÚIACharÚIAllÚIAndÚIAnyÚIArgCÚIBClrÚIBitsÚIBSetÚICharÚIDateÚIDiMÚIDIntÚIDNIntÚIEOrÚIErrNoÚIFixÚImagÚImagPartÚImage_IndexÚIndexÚIntÚIOrÚIParityÚIRandÚIsaTtyÚIShftÚIShftCÚISignÚIso_C_BindingÚIs_ContiguousÚIs_Iostat_EndÚIs_Iostat_EorÚITimeÚKillÚKindÚLBoundÚLCoBoundÚLenÚLen_TrimÚLGeÚLGtÚLinkÚLLeÚLLtÚLnBlnkÚLocÚLogÚ	Log_GammaÚLogicalÚLongÚLShiftÚLStatÚLTimeÚMaskLÚMaskRÚMatMulÚMaxÚMaxExponentÚMaxLocÚMaxValÚMClockÚMergeÚ
Merge_BitsÚ
Move_AllocÚMinÚMinExponentÚMinLocÚMinValÚModÚModuloÚMvBitsÚNearestÚNew_LineÚNIntÚNorm2ÚNotÚNullÚ
Num_ImagesÚOrÚPackÚParityÚPErrorÚ	PrecisionÚPresentÚProductÚRadixÚRandÚRandom_NumberÚRandom_SeedÚRangeÚRealÚRealPartÚRenameÚRepeatÚReshapeÚ	RRSpacingÚRShiftÚSame_Type_AsÚScaleÚScanÚSecondÚSelected_Char_KindÚSelected_Int_KindÚSelected_Real_KindÚSet_ExponentÚShapeÚShiftAÚShiftLÚShiftRÚShortÚSignÚSignalÚSinHÚSinÚSleepÚSnglÚSpacingÚSpreadÚSqRtÚSRandÚStatÚStorage_SizeÚSumÚSymLnkÚSystemÚSystem_ClockÚTanÚTanHÚTimeÚ
This_ImageÚTinyÚTrailZÚTransferÚ	TransposeÚTrimÚTtyNamÚUBoundÚUCoBoundÚUMaskÚUnlinkÚUnpackÚVerifyÚXOrÚZAbsÚZCosÚZExpÚZLogÚZSinÚ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ÚreÚ
IGNORECASEÚ	MULTILINEÚflagsr
   ÚPreprocr   r   r	   Ú
Whitespacer   r   r   ÚTyper   ÚDeclarationr   ÚBuiltinÚWordr   ÚDoubleÚSingler   ÚIntegerr>  Útokens© ó    ú9/usr/lib/python3/dist-packages/pygments/lexers/fortran.pyr   r      sõ  € € € € € ðð ð
 €DØ
%€CØ˜%Ð €GØ4Ð4Ð4€IØ!Ð"€IØŒM˜BœLÑ(€Eð ˜œÐ(Ø�wÐØˆG�IÑÔØˆG�F‰OŒOØ˜TÐ"ØˆG�F‰OŒOØ�t”Ð'ð
ð *¨8¨8°G¸T¼_ÈgÑ+VÔ+VÐWØ! 8 8¨G°T´_ÀgÑ#NÔ#NÐOàˆUð 7ð* @EÈXð+Wñ Wô Wð, ð-ð2 ˆUð Rð  ¨ð	2ñ 	2ô 	2ð Œ\ð
ð 5°hÐ?à�gÔ)Ð*à Ð,àˆUð 2)ðd 27¸xðe2Iñ 2Iô 2Iðf Œ\ðg3ðl ! $¤,Ð/à;¸X¼]ÐKðUk
ð\ .¨v¬}Ð=Ø-¨v¬}Ð=ð
ð 0°´Ð@Ø@À&Ä,ÐOØ@À&Ä,ÐOØ@À&Ä,ÐOð	
ðyBð B€F€F€Fr  c                   ó  — e Zd ZdZdZdgZddgZej        Z	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
    ÚFortranFixedÚfortranfixedz*.fz*.FNc              #   óÔ   K  — t          ¦   «         }|                     d¦  «        dz   }|                     |¦  «        D ])\  }}}|                     dd¦  «        }|dk    r|||fV — Œ*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Úvalues           r  Ú_lex_fortranzFortranFixedLexer._lex_fortran¹   s�   è è € å‘”ˆØ�{Š{˜1‰~Œ~ Ñ$ˆØ#(×#?Ò#?ÀÑ#EÔ#Eð 	*ð 	*ÑˆE�5˜%Ø—M’M $¨Ñ+Ô+ˆEØ˜Š{ˆ{Ø˜U EÐ)Ð)Ð)Ð)øð	*ð 	*r  z[C*].*\nz#.*\nz {0,4}!.*\nz(.{5})ú	cont-charz.*\nú ÚcodeÚ0ú.z(.{66})(.*)(\n)rî  z(.*)(\n))rî  r  r  )N)rï  rð  rñ  rò  ró  rõ  rö  rø  rù  rû  r  r
   rü  r   ÚLabelr   r   r	   r   ÚStrongr   rý  r   r  r  r  r  r   r   ­   s  € € € € € ðð ð
 €DØÐ€GØ˜�€IàŒM€Eð*ð *ð *ð *ð ˜'Ð"Ø�w”Ð'Ø˜WÐ%Ø˜œ
 KÐ0Ø�e�e˜LÑ)Ô)Ð*ð
ð �$˜ÐØ�'˜6Ð"Ø�'”. &Ð)ð
ð  ØˆX�l G¨T¬_Ñ=Ô=¸vðGà˜(˜( <°´ÑAÔAÀ6ÐJØˆG�F‰OŒOð	
ðð €F€F€Fr  )rò  rø  Úpygments.lexerr   r   r   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   Ú__all__r   r   r  r  r  ú<module>r%     s,  ððð ð 
€	€	€	à OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oð!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ð Ð.Ð
/€ðVð Vð Vð Vð V�:ñ Vô Vð Vðr(ð (ð (ð (ð (˜
ñ (ô (ð (ð (ð (r  