Ë
    |í¼ej(  ã                   ó�   — 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y)	zÐ
    pygments.lexers.fortran
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Fortran languages.

    :copyright: Copyright 2006-2023 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j0                  fdef eddd¬«      ej4                  fdej4                  fdej6                  fg
dej:                  fdej<                  fgdej@                  fdejB                  fd ejB                  fd!ejB                  fgd"œZ"y#)$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ÚELSEIFÚ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€IØ!Ð"€IØ�M‰M˜BŸL™LÑ(€Eð ˜Ÿ™Ð(Ø�wÐÙ�IÓÙ�F‹OØ˜TÐ"Ù�F‹OØ�t—‘Ð'ð
ð *©8°G¸T¿_¹_ÈgÓ+VÐWØ!¡8¨G°T·_±_ÀgÓ#NÐOáð 7ð* @EÈXô+Wð, ð-ñ2 ð Rð  ¨ô	2ð �\‰\ð
ð 5°hÐ?à�g×)Ñ)Ð*à Ð,áð 2)ðd 27¸xôe2Iðf �\‰\ðg3ðl ! $§,¡,Ð/à;¸X¿]¹]ÐKðUk
ð\ .¨v¯}©}Ð=Ø-¨v¯}©}Ð=ð
ð 0°·±Ð@Ø@À&Ç,Á,ÐOØ@À&Ç,Á,ÐOØ@À&Ç,Á,ÐOð	
ñyB�Fr  c                   ó2  — 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y)r   zD
    Lexer for fixed format Fortran.

    .. versionadded:: 2.1
    ÚFortranFixedÚfortranfixedz*.fz*.FNc              #   óº   K  — t        «       }|j                  d«      dz   }|j                  |«      D ]%  \  }}}|j                  dd«      }|dk7  sŒ|||f–— Œ' y­w)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¹   sd   è ø€ ä“ˆØ�{‰{˜1‹~ Ñ$ˆØ#(×#?Ñ#?ÀÓ#Eò 	*ÑˆE�5˜%Ø—M‘M $¨Ó+ˆEØ˜‹{Ø˜U EÐ)Ó)ñ	*ùs   ‚AAÁ
A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‰M€Eó*ð ˜'Ð"Ø�w—‘Ð'Ø˜WÐ%Ø˜Ÿ
™
 KÐ0Ø‘e˜LÓ)Ð*ð
ð �$˜ÐØ�'˜6Ð"Ø�'—.‘. &Ð)ð
ð  Ù�l G¨T¯_©_Ó=¸vðGà™( <°·±ÓAÀ6ÐJÙ�F‹Oð	
ñ�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&     sL   ðñó 
ç O× O÷!÷ !õ !ð Ð.Ð
/€ôV�:ô Vôr(˜
õ (r  