o aD(@sdZddlZddlmZmZmZmZmZmZddl m Z m Z m Z m Z mZmZmZmZmZddgZGdddeZGdddeZdS) 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) RegexLexerbygroupsincludewordsusingdefault) TextCommentOperatorKeywordNameStringNumber PunctuationGeneric FortranLexerFortranFixedLexerc @seZdZdZdZddgZgdZdgZej ej BZ de j fde fed ed d efed d ejfgdeeejefdeeejefeddddefeddddejfdefdejfdefeddddejfdejfdejfg dejfdejfgdejfdej fdej fd ej fgd!Z!d"S)#rz@ Lexer for FORTRAN 90 code. .. versionadded:: 0.10 Fortranfortranf90)z*.f03z*.f90z*.F03z*.F90ztext/x-fortranz^#.*\nz!.*\nstringscorez [a-z][\w$]*numsz[\s]+z\b(DO)(\s+)(CONCURRENT)\bz\b(GO)(\s*)(TO)\b)~ABSTRACTACCEPTALLALLSTOP ALLOCATABLEALLOCATEARRAYASSIGN ASSOCIATE ASYNCHRONOUS BACKSPACEBINDBLOCK BLOCKDATABYTECALLCASECLASSCLOSE CODIMENSIONCOMMON CONTIGUOUSCONTAINSCONTINUECRITICALCYCLEDATA DEALLOCATEDECODEDEFERRED DIMENSIONDO ELEMENTALELSEENCODEEND ENDASSOCIATEENDBLOCKENDDOENDENUM ENDFORALL ENDFUNCTIONENDIF ENDINTERFACE ENDMODULE ENDPROGRAM ENDSELECT ENDSUBMODULE ENDSUBROUTINEENDTYPEENDWHEREENTRYENUM ENUMERATOR EQUIVALENCEz ERROR STOPEXITEXTENDSEXTERNAL EXTRINSICFILEFINALFORALLFORMATFUNCTIONGENERICIFIMAGESIMPLICITIMPORTIMPUREINCLUDEINQUIREINTENT INTERFACE INTRINSICISLOCKMEMORYMODULENAMELISTNULLIFYNONE NON_INTRINSICNON_OVERRIDABLENOPASSONLYOPENOPTIONALOPTIONS PARAMETERPASSPAUSEPOINTERPRINTPRIVATEPROGRAM PROCEDURE PROTECTEDPUBLICPUREREAD RECURSIVERESULTRETURNREWINDSAVESELECTSEQUENCESTOP SUBMODULE SUBROUTINESYNCSYNCALL SYNCIMAGES SYNCMEMORYTARGETTHENTYPEUNLOCKUSEVALUEVOLATILEWHEREWRITEWHILEz\bz\s*\b)prefixsuffix)% CHARACTERCOMPLEXzDOUBLE PRECISIONzDOUBLE COMPLEXINTEGERLOGICALREALC_INTC_SHORTC_LONG C_LONG_LONG C_SIGNED_CHARC_SIZE_TC_INT8_T C_INT16_T C_INT32_T C_INT64_TC_INT_LEAST8_TC_INT_LEAST16_TC_INT_LEAST32_TC_INT_LEAST64_T C_INT_FAST8_TC_INT_FAST16_TC_INT_FAST32_TC_INT_FAST64_T C_INTMAX_T C_INTPTR_TC_FLOATC_DOUBLE C_LONG_DOUBLEC_FLOAT_COMPLEXC_DOUBLE_COMPLEXC_LONG_DOUBLE_COMPLEXC_BOOLC_CHARC_PTRC_FUNPTRz$(\*\*|\*|\+|-|\/|<|>|<=|>=|==|\/=|=)z(::)z[()\[\],:&%;.](1AbortAbsAccessACharACosACosHAdjustLAdjustRAImagAIntAlarmAll AllocatedALogAMaxAMinAModAndANIntAnyASinASinH AssociatedATanATanH Atomic_Define Atomic_RefBesJBesJN Bessel_J0 Bessel_J1 Bessel_JN Bessel_Y0 Bessel_Y1 Bessel_YNBesYBesYNBGEBGTBLEBLTBit_SizeBTestCAbsCCosCeilingCExpCharChDirChModCLogCmplxCommand_Argument_CountComplexConjgCosCosHCountCPU_TimeCShiftCSinCSqRtCTimeC_Loc C_Associated C_Null_Ptr C_Null_Funptr C_F_PointerC_F_ProcPointer C_Null_CharC_Alert C_Backspace C_Form_FeedC_FunLocC_Sizeof C_New_LineC_Carriage_ReturnC_Horizontal_TabC_Vertical_TabDAbsDACosDASinDATan Date_and_TimeDbesJDbesJNDbesYDbesYNDbleDCosDCosHDDiMDErFDErFCDExpDigitsDiMDIntDLogDMaxDMinDModDNInt Dot_ProductDProdDSignDSinHDShiftLDShiftRDSinDSqRtDTanHDTanDTimeEOShiftEpsilonErFErFC ErFC_ScaledETimeExecute_Command_LineExitExpExponentExtends_Type_OfFDateFGetFGetCFindLocFloatFloorFlushFNumFPutCFPutFractionFSeekFStatFTellGammaGErrorGetArg Get_CommandGet_Command_ArgumentGet_Environment_VariableGetCWDGetEnvGetGIdGetLogGetPIdGetUIdGMTimeHostNmHugeHypotIAbsIACharIAllIAndIAnyIArgCIBClrIBitsIBSetICharIDateIDiMIDIntIDNIntIEOrIErrNoIFixImagImagPart Image_IndexIndexIntIOrIParityIRandIsaTtyIShftIShftCISign Iso_C_Binding Is_Contiguous Is_Iostat_End Is_Iostat_EorITimeKillKindLBoundLCoBoundLenLen_TrimLGeLGtLinkLLeLLtLnBlnkLocLog Log_GammaLogicalLongLShiftLStatLTimeMaskLMaskRMatMulMax MaxExponentMaxLocMaxValMClockMerge Merge_Bits Move_AllocMin MinExponentMinLocMinValModModuloMvBitsNearestNew_LineNIntNorm2NotNull Num_ImagesOrPackParityPError PrecisionPresentProductRadixRand Random_Number Random_SeedRangeRealRealPartRenameRepeatReshape RRSpacingRShift Same_Type_AsScaleScanSecondSelected_Char_KindSelected_Int_KindSelected_Real_Kind Set_ExponentShapeShiftAShiftLShiftRShortSignSignalSinHSinSleepSnglSpacingSpreadSqRtSRandStat Storage_SizeSumSymLnkSystem System_ClockTanTanHTime This_ImageTinyTrailZTransfer TransposeTrimTtyNamUBoundUCoBoundUMaskUnlinkUnpackVerifyXOrZAbsZCosZExpZLogZSinZSqRtz\.(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*))?)rootrrrN)"__name__ __module__ __qualname____doc__namealiases filenames mimetypesre IGNORECASE MULTILINEflagsr Preprocrr r Whitespacerr rTyper DeclarationrBuiltinWordr DoubleSinglerIntegerr<tokensrr9/usr/lib/python3/dist-packages/pygments/lexers/fortran.pyrs^      236n c@seZdZdZdZdgZddgZejZ dddZ d e fd e j fd e fd e jd fdeefgdedfde dfdejdfgdee e ejdfdee ejdfedgdZdS)rzD Lexer for fixed format Fortran. .. versionadded:: 2.1 FortranFixed fortranfixedz*.fz*.FNccsPt}|dd}||D]\}}}|dd}|dkr%|||fVqdS)z8Lex a line just as free form fortran without line break.r N)rgroupget_tokens_unprocessedreplace)selfmatchctxlexertextindextokenvaluerrr _lex_fortrans  zFortranFixedLexer._lex_fortranz[C*].*\nz#.*\nz {0,4}!.*\nz(.{5}) cont-charz.*\n code0.z(.{66})(.*)(\n)rz(.*)(\n))rrr)N)rrrrrrrrrrrr rr LabelrrrrStrongrrrrrrrrrs0      )rrpygments.lexerrrrrrrpygments.tokenrr r r r r rrr__all__rrrrrrs ,