Наконец-то составил: более 1000 слов. Постарался привести полные правила. Разделил на 9 смысловых групп со схожими правилами.
Везде регистр не имеет значения.
Ссылки на Вики (справочник) НЕ имеют:
- комментарии;
- директивы;
- строки и литералы;
- исключенные и расширенные средства:
- ключевые слова,
- составные ключевые слова,
- процедуры,
- модульные процедуры,
- модули;
- метки.
1. Комментарии.Внутри комментариев другое форматирование отменяется.
Комментарии.
Цвет: #008000.
Форматируется вся строка до конца, начиная с символа "!" в любом месте кода и даже после директивы.
Комментарии начинаются с "!".
Строки комментариев.
Цвет: #008000.
Форматируется вся строка.
Строка комментариев начинается с "!" (прежде могут быть табуляции и пробелы).
Исключенные строки комментариев.
Цвет: #00FF00.
Форматируется вся строка.
Самым первым символом строки является "c" или "*" (без табуляций и пробелов).
2. Директивы.Внутри директив другое форматирование отменяется, но после директивы на той же строке может стоять комментарий.
У всех
жирный шрифт.
Форматируется вся строка.
Строки директив OpenMP.
Цвет: #008000.
Строка директивы OpenMP начинается с ключевых слова "!$OMP" (прежде могут быть табуляции и пробелы).
Исключенные строки директив.
Цвет: #00FF00.
Самым первым словом строки является одно из следующих ключевых слов: "*DEC$", "cDEC$", "*DIR$", "cDIR$", "*MS$", "cMS$", "*$OMP", "c$OMP" (без табуляций и пробелов).
Расширенные строки директив.
Цвет: #808000.
Строка директивы начинается с одного из следующих ключевых слов: "!DEC$", "!DIR$", "!MS$" (прежде могут быть табуляции и пробелы).
3. Строки и литералы.Цвет: #008080.
Строка и литералы заключаются в одинарные ' ' или двойные кавычки " ".
Подсвечиваются кавычки и их содержимое.
Другое форматирование внутри строк отменяется, включая комментарии.
4. Ключевые слова.Прямо как написаны, без пробелов и табуляций.
У всех
жирный шрифт.
Ключевые слова.
Цвет: #0000FF.
Код |
abstract allocatable allocate assignment assignment(=) associate asynchronous backspace bind bind(c) blockdata call case character class class(*) close common complex complex(16) complex(4) complex(8) contains continue cycle data deallocate default deferred dimension do doubleprecision elemental else elseif elsewhere end endassociate endblockdata enddo endenum endfile endforall endfunction endif endinterface endmodule endprogram endselect endsubroutine endtype endwhere entry enum enumerator equivalence exit extends external final flush forall format function generic goto if implicit import include inquire integer integer(1) integer(2) integer(4) integer(8) intent interface intrinsic kind len logical logical(1) logical(2) logical(4) logical(8) module namelist non_intrinsic non_overridable nopass nullify only open operator operator(-) operator(*) operator(**) operator(.and.) operator(.eq.) operator(.eqv.) operator(.ge.) operator(.gt.) operator(.le.) operator(.lt.) operator(.neq.) operator(.neqv.) operator(.not.) operator(.or.) operator(/) operator(//) operator(/=) operator(+) operator(<) operator(<=) operator(==) operator(>) operator(>=) optional parameter pass pointer print private procedure program protected public pure read read(formatted) read(unformatted) real real(16) real(4) real(8) recursive result return rewind save selectcase selecttype sequence stop subroutine target then type use value volatile wait where while write write(formatted) write(unformatted)
|
Исключенные ключевые слова.
Цвет: #FF00FF.
Код |
assign character* complex*16 complex*32 complex*8 integer*1 integer*2 integer*4 integer*8 logical*1 logical*2 logical*4 logical*8 pause real*16 real*4 real*8
|
Расширенные ключевые слова.
Цвет: #800080.
Код |
accept automatic byte decode delete doublecomplex encode end map endstructure endunion find map options record rewrite static structure union unlock virtual
|
5. Составные ключевые слова.У всех
жирный шрифт.
Составные слова выделяются только, если стоят вместе, друг за другом (хотя бы одного из слов поодиночке нет в списке ключевых слов). Между ними может быть не обязательно один пробел или знак табуляции.
Составные ключевые слова.
Цвет: #0000FF.
Код |
block data class is do while double precision end block data end blockdata end file end select go to implicit none select case select type type is
|
Исключенные составные ключевые слова.
Цвет: #FF00FF.
Расширенные составные ключевые слова.
Цвет: #800080.
Код |
define file double complex interface to
|
6. Встроенные процедуры.Слово считать процедурой, если за ним, не считая табуляции и пробелов, стоит открывающая скобка "(".
Подсветка процедур приоритетнее подсветки ключевых слов. Например, real() -- процедура. Слово real здесь не выделяется жирным, как ключевое слово, но при этом ссылка идет на ту же страницу, что и для ключевого слова real.
Встроенные процедуры.
Цвет: #0000FF.
Код |
Abs AChar Acos AdjustL AdjustR AImag AInt All Allocated ALog ALog10 AMax0 AMax1 AMin0 AMin1 AMod ANInt Any Asin Associated Atan Atan2 Bit_Size BTest CAbs CCos Ceiling CExp Char CLog Cmplx Command_Argument_Count Conjg Cos CosH Count Cpu_Time CShift CSin CSqRt DAbs DAcos DAsin DAtan DAtan2 Date_And_Time Dble DCos DCosH DDim Digits Dim DInt DLog DLog10 DMax1 DMin1 DMod DNInt Dot_Product DProd DSign DSin DSinH DSqRt DTan DTanH EOShift Epsilon Exp Exponent Extends_Type_Of Float Floor Fraction Get_Command Get_Command_Argument Get_Environment_Variable Huge IAbs IAChar IAnd IBClr IBits IBSet IChar IDim IDInt IDNInt IEOr IFix Index Int IOr Is_IOStat_End Is_IOStat_EOR IShft IShftC ISign Kind LBound Len Len_Trim LGE LGT LLE LLT Log Log10 Logical MatMul Max Max0 Max1 MaxExponent MaxLoc MaxVal Merge Min Min0 Min1 MinExponent MinLoc MinVal Mod Modulo Move_Alloc MvBits Nearest New_Line NInt Not Null Pack Precision Present Product Radix Random_Number Random_Seed Range Real Repeat Reshape RRSpacing Same_Type_As Scale Scan Selected_Char_Kind Selected_Int_Kind Selected_Real_Kind Set_Exponent Shape Sign Sin SinH Size Sngl Spacing Spread SqRt Sum System_Clock Tan TanH Tiny Transfer Transpose Trim UBound Unpack Verify
|
Исключенные процедуры.
Цвет: #FF00FF.
Расширенные процедуры.
Цвет: #800080.
Код |
%Fill %Loc %Rec %Val AcosD AcosH AIMax0 AIMin0 AJMax0 AJMin0 AKMax0 AKMin0 And AsinD AsinH Atan2D AtanD AtanH BAbs BAddress BBClr BBSet BBTest BDim BIAnd BIEOr BIOr BITest BIXor BJTest BKTest BMod BMvBits BNot BShft BShftC BSign CacheSize CDAbs CDCos CDCos CDExp CDExp CDLog CDLog CDSin CDSin CDSqRt CDSqRt CDTan CDTan CosD Cotan CotanD CQAbs CTan DAcosD DAcosH DAsinD DAsinH DAtan2D DAtanD DAtanH DbleQ DCmplx DConjg DCosD DCotan DCotanD DErF DErFC DFloat DFlotI DFlotJ DFlotK DImag DNum DReal DShiftL DShiftR DSinD DTanD EOF ErF ErFC ErrSns FloatI FloatJ FloatK FP_Class Free GetArg HAbs HBClr HBSet HDim HFix HIEOr HIOr HIXor HMod HMvBits HNot HShft HShftC HSign HTest IArgC IArgPtr IBChng IIAbs IIAnd IIBClr IIBits IIBSet IIDim IIDInt IIDNNt IIEOr IIFix IInt IIOr IIQint IIQNNt IIShft IIShftC IISign IIXor IJInt ILen Imag IMax0 IMax1 IMin0 IMin1 IMod IMvBits INInt INot Int_Ptr_Kind Int1 Int2 Int4 Int8 INum IQInt IQNInt IShA IShC IShL ISNaN IXor IZExt JFix JIAbs JIAnd JIBClr JIBits JIBSet JIDim JIDInt JIDNNt JIEOr JIFix JInt JIOr JIQInt JIQNNt JIShft JIShftC JISign JIXor JMax0 JMax1 JMin0 JMin1 JMod JMvBits JNInt JNot JNum JZExt KDim KIAbs KIAnd KIBClr KIBits KIBSet KIDim KIDInt KIDNNt KIEOr KIFix KInt KIOr KIQint KIQNNt KIShft KIShftC KISign KMax0 KMax1 KMin0 KMin1 KMod KMvBits KNInt KNot KZExt LeadZ Loc LShift MAlloc MClock MM_Prefetch Mult_High NArgs Or PopCnt PopPar QAbs QAcos QAcosD QAcosH QArccos QAsin QAsinD QAsinH QAtan QAtan2 QAtan2D QAtanD QAtanH QCmplx QConjg QCos QCosD QCosH QCotan QCotanD QDim QErF QErFC QExp QExt QExtD QFloat QImag QInt QLog QLog10 QMax1 QMin1 QMod QNInt QNum QReal QSign QSin QSinD QSinH QSqRt QTan QTanD QTanH Ran RandU RNum RShift ShiftL ShiftR SinD SizeOf TanD TrailZ Xor ZAbs ZCos ZExp ZExt ZLog ZSin ZSqRt ZTan
|
7. Модульные процедуры.Слово считать процедурой, если за ним, не считая табуляции и пробелов, стоит открывающая скобка "(".
Подсветка модульных процедур приоритетнее подсветки ключевых слов.
Стандартные модульные процедуры.
Цвет: #000080.
Код |
C_Associated C_F_Pointer C_F_ProcPointer C_FunLoc C_Loc IEEE_Class IEEE_Copy_Sign IEEE_Get_Flag IEEE_Get_Halting_Mode IEEE_Get_Rounding_Mode IEEE_Get_Status IEEE_Get_Underflow_Mode IEEE_Is_Finite IEEE_Is_NaN IEEE_Is_Negative IEEE_Is_Normal IEEE_LogB IEEE_Next_After IEEE_Rem IEEE_RInt IEEE_ScalB IEEE_Selected_Real_Kind IEEE_Set_Flag IEEE_Set_Halting_Mode IEEE_Set_Rounding_Mode IEEE_Set_Status IEEE_Set_Underflow_Mode IEEE_Support_Datatype IEEE_Support_Denormal IEEE_Support_Divide IEEE_Support_Flag IEEE_Support_Halting IEEE_Support_Inf IEEE_Support_IO IEEE_Support_NaN IEEE_Support_Rounding IEEE_Support_SqRt IEEE_Support_Standard IEEE_Support_Underflow_Control IEEE_Unordered IEEE_Value OMP_Destroy_Lock OMP_Destroy_Nest_Lock OMP_Get_Dynamic OMP_Get_Max_Threads OMP_Get_Nested OMP_Get_Num_Procs OMP_Get_Num_Threads OMP_Get_Thread_Num OMP_Get_WTick OMP_Get_WTime OMP_In_Parallel OMP_Init_Lock OMP_Init_Nest_Lock OMP_Set_Dynamic OMP_Set_Lock OMP_Set_Nest_Lock OMP_Set_Nested OMP_Set_Num_Threads OMP_Test_Lock OMP_Test_Nest_Lock OMP_Unset_Lock OMP_Unset_Nest_Lock
|
Исключенные модульные процедуры.
Цвет: #800000.
Расширенные модульные процедуры.
Цвет: #808000.
Код |
Abort AboutBoxQQ Access Alarm AppendMenuQQ Arc Arc_W AUTOAddArg AUTOAllocateInvokeArgs AUTODeallocateInvokeArgs AUTOGetExceptInfo AUTOGetProperty AUTOGetPropertyByID AUTOGetPropertyInvokeArgs AUTOInvoke AUTOSetProperty AUTOSetPropertyByID AUTOSetPropertyInvokeArgs BeepQQ BesJ0 BesJ1 BesJN BesY0 BesY1 BesYN BIC BIS BIT BSearchQQ CDFloat ChangeDirQQ ChDir ChMod ClearScreen ClearStatusFPQQ ClickMenuQQ Clock ClockX COMAddObjectReference COMCLSIDFromProgID COMCLSIDFromString COMCreateObjectByGUID COMCreateObjectByProgID COMGetActiveObjectByGUID COMGetActiveObjectByProgID COMGetFileObject COMInitialize COMIsEqualGUID CommitQQ ComplInt ComplLog ComplReal COMQueryInterface COMReleaseObject COMStringFromGUID COMUninitialize CSMG CTime Date Date4 DBesJ0 DBesJ1 DBesJN DBesY0 DBesY1 DBesYN DClock DelDirQQ DeleteMenuQQ DelFilesQQ DFloatI DFloatJ DFloatK DisplayCursor DlgExit DlgFlush DlgGet DlgGetChar DlgGetInt DlgGetLog DlgInit DlgInitWithResourceHandle DlgIsDlgMessage DlgIsDlgMessageWithDlg DlgModal DlgModalWithParent DlgModeless DlgSendCtrlMessage DlgSet DlgSetChar DlgSetCtrlEventHandler DlgSetInt DlgSetLog DlgSetReturn DlgSetSub DlgSetTitle DlgUninit DRand DRandM DRanSet DTime Ellipse Ellipse_W ETime FDate FGetC FindFileQQ FloodFill FloodFill_W FloodFillRGB FloodFillRGB_W Flush FocusQQ For_Descriptor_Assign For_Get_FPE For_RTL_Finish For_RTL_Init For_Set_FPE For_Set_Reentrancy FPutC FSeek FStat FTell FTellI8 FullPathQQ GError GetActiveQQ GetArcInfo GetBckColorRGB GetBkcColor GetC GetCharQQ GetColor GetColorRGB GetControlFPQQ GetCurrentPosition GetCurrentPosition_W GetCWD GetDat GetDriveDirQQ GetDriveSizeQQ GetDrivesQQ GetEnv GetEnvQQ GetExceptionPtrsQQ GetExitQQ GetFileInfoQQ GetFillMask GetFontInfo GetGID GetGTextExtent GetGTextRotation GetHWndQQ GetImage GetImage_W GetLastError GetLastErrorQQ GetLineStyle GetLog GetPhysCoord GetPID GetPixel GetPixel_W GetPixelRGB GetPixelRGB_W GetPixels GetPixelsRGB GetPos GetPosI8 GetStatusFPQQ GetStrQQ GetTextColor GetTextColorRGB GetTextPosition GetTextWindow GetTim GetUID GetUnitQQ GetViewCoord GetViewCoord_W GetWindowConfig GetWindowCoord GetWriteMode GetWSizeQQ GMTime GRStatus HostNam HostNm IDate IDate4 IDFloat IEEE_Flags IEEE_Handler IErrNo IFloatI IFloatJ ImageSize ImageSize_W InCharQQ InitializeFonts InitialSettings InMax InQFocusQQ InsertMenuQQ IntC IntegerToRGB IPXFArgC IPXFConst IPXFLenTrim IPXFWExitStatus IPXFWStopSig IPXFWTermSig IRand IRandM IRanGet IRanSet IsAtty ITime JAbs JDate JDate4 Kill KMP_CAlloc KMP_Free KMP_Get_BlockTime KMP_Get_StackSize KMP_Get_StackSize_S KMP_MAlloc KMP_Realloc KMP_Set_BlockTime KMP_Set_StackSize KMP_Set_StackSize_S LCWrQQ LineTo LineTo_W LineToAr LineToArEx LNBLnk LoadImage LoadImage_W Long LStat LTime MakeDirQQ MBCharLen MBConvertMBToUnicode MBConvertUnicodeToMB MBCurMax MBInCharQQ MBIndex MBJISToJMS MBJMSToJIS MBLead MBLen MBLen_Trim MBLEQ MBLGE MBLGT MBLLE MBLLT MBLNE MBNext MBPrev MBScan MBStrLead MBVerify MessageBoxQQ ModifyMenuFlagsQQ ModifyMenuRoutineQQ ModifyMenuStringQQ MoveTo MoveTo_W MSFWin$Arc MSFWin$Ellipse MSFWin$FloodFill MSFWin$GetBkColor MSFWin$GetPixel MSFWin$GetTextColor MSFWin$LineTo MSFWin$Pie MSFWin$Polygon MSFWin$Rectangle MSFWin$SetBkColor MSFWin$SetPixel MSFWin$SetTextColor NLSEnumCodepages NLSEnumLocales NLSFormatCurrency NLSFormatDate NLSFormatNumber NLSFormatTime NLSGetEnvironmentCodepage NLSGetLocale NLSGetLocaleInfo NLSSetEnvironmentCodepage NLSSetLocale OutGText OutText PackTimeQQ PassDirKeysQQ PeekCharQQ PError Pie Pie_W PolyBezier PolyBezier_W PolyBezierTo PolyBezierTo_W Polygon Polygon_W PolyLineQQ PutC PutImage PutImage_W PXFAccess PXFACharGet PXFACharSet PXFADblGet PXFADblSet PXFAInt8Get PXFAInt8Set PXFAIntGet PXFAIntSet PXFAlarm PXFALgclGet PXFALgclSet PXFARealGet PXFARealSet PXFAStrGet PXFAStrSet PXFCallSubHandle PXFCDrain PXFCFGetISpeed PXFCFGetOSpeed PXFCFlow PXFCFlush PXFCFSetISpeed PXFCFSetOSpeed PXFCGetAttr PXFCGetPGrp PXFCharGet PXFCharSet PXFChDir PXFChMod PXFChOwn PXFClearEnv PXFClose PXFCloseDir PXFCntl PXFConst PXFCreat PXFCSendBreak PXFCSetAttr PXFCSetPGrp PXFCTermID PXFDblGet PXFDblSet PXFDup PXFDup2 PXFEInt8Get PXFEInt8Set PXFEIntGet PXFEIntSet PXFELgclGet PXFELgclSet PXFERealGet PXFERealSet PXFEStrGet PXFEStrSet PXFExecV PXFExecVE PXFExecVP PXFExit PXFFastExit PXFFDOpen PXFFFlush PXFFGetC PXFFileNo PXFFork PXFFPathConf PXFFPutC PXFFSeek PXFFStat PXFFTell PXFGetArg PXFGetAtty PXFGetC PXFGetCWD PXFGetEGID PXFGetEnv PXFGetEUID PXFGetGID PXFGetGrGID PXFGetGrNam PXFGetGroups PXFGetLogin PXFGetPGrP PXFGetPID PXFGetPPID PXFGetPwNam PXFGetPwUID PXFGetSubHandle PXFGetUID PXFInt8Get PXFInt8Set PXFIntGet PXFIntSet PXFIsBlk PXFIsChr PXFIsConst PXFIsDir PXFIsFIFO PXFIsReg PXFKill PXFLgclGet PXFLgclSet PXFLink PXFLocalTime PXFLSeek PXFMkDir PXFMkFIFO PXFOpen PXFOpenDir PXFPathConf PXFPause PXFPipe PXFPOSIXIO PXFPutC PXFRead PXFReadDir PXFRealGet PXFRealSet PXFRename PXFRewindDir PXFRmDir PXFSetEnv PXFSetGID PXFSetPGID PXFSetSID PXFSetUID PXFSigAction PXFSigAddSet PXFSigDelSet PXFSigEmptySet PXFSigFillSet PXFSigIsMember PXFSigPending PXFSigProcMask PXFSigSuspend PXFSleep PXFStat PXFStrGet PXFStrSet PXFStructCopy PXFStructCreate PXFStructFree PXFSysConf PXFTime PXFTimes PXFTtyNam PXFUCompare PXFUMask PXFUName PXFUnlink PXFUTime PXFWait PXFWaitPID PXFWIfExited PXFWIfSignaled PXFWIfStopped PXFWrite QRanSet QSort RaiseQQ Rand Random RanF RanGet RanSet Rectangle Rectangle_W RegisterMouseEvent RemapAllPaletteRGB RemapPaletteRGB Rename RenameFileQQ RGBToInteger RIndex RTC RunQQ SaveImage SaveImage_W SaveJPEG SaveJPEG_W ScanEnv ScrollTextWindow SCWrQQ Secnds Seed SetActiveQQ SetBkColor SetBkColorRGB SetClipRGN SetColor SetColorRGB SetControlFPQQ SetDat SetEnvQQ SetErrorModeQQ SetExitQQ SetFileAccessQQ SetFileTimeQQ SetFillMask SetFont SetGTextRotation SetLineStyle SetMessageQQ SetMouseCursor SetPixel SetPixel_W SetPixelRGB SetPixelRGB_W SetPixels SetPixelsRGB SetTextColor SetTextColorRGB SetTextCursor SetTextPosition SetTextWindow SetTim SetViewOrg SetViewport SetWindow SetWindowConfig SetWindowMenuQQ SetWriteMode SetWSizeQQ Short Signal SignalQQ Sleep SleepQQ SnglQ SortQQ SplitPathQQ SPort_Cancel_IO SPort_Connect SPort_Connect_Ex SPort_Get_Handle SPort_Get_State SPort_Get_State_Ex SPort_Get_Timeouts SPort_Peek_Data SPort_Peek_Line SPort_Purge SPort_Read_Data SPort_Read_Line SPort_Release SPort_Set_State SPort_Set_State_Ex SPort_Set_Timeouts SPort_Show_State SPort_Special_Func SPort_Write_Data SPort_Write_Line SRand SSWrQQ Stat System SystemQQ Time TimeF TraceBackQQ TtyNam Unlink UnpackTimeQQ UnregisterMouseEvent WaitOnMouseEvent WrapOn
|
8. Модули. Встроенные модули.
Цвет: #000080.
Код |
IEEE_Arithmetic IEEE_Exceptions IEEE_Features ISO_C_Binding ISO_Fortran_Env OMP_Lib
|
Исключенные модули.
Цвет: #800000.
Расширенные модули.
Цвет: #808000.
Код |
IFAUTO IFCOM IFCore IFLogM IFNLS IFPort IFPOSIX IFQWin
|
9. Метки.Цвет: #FF0000.
Меткой является целое число, идущее в начале строки (прежде могут быть табуляции и пробелы). После числа должен стоять хотя бы один пробел или знак табуляции. Форматируется только число. Оставшаяся часть строки форматируется как и прежде, но следующие метки игнорируются.