📄 syntax.cpp
字号:
#include "stdafx.h"
#include "syntax.h"
CString g_strInString; //定义一个字符串值除了包含字符数字、下划线_外,还包含什么字符常量, C++还会包含#, 如#include
TCHAR *g_BeginCommentExStr[2];//当前语言的多行注释规则:引起多行注释的字符串
TCHAR *g_EndCommentExStr[2]; //当前语言的多行注释规则:结束多行注释的字符串
TCHAR *g_LineCommentStr[2]; //当前语言的单行注释规则, 以行末为中止
TCHAR *g_BeginStringStr[1]; //当前语言的字符规则, 引起字符串变量的字符串
TCHAR *g_EndStringStr[1]; //当前语言的字符规则, 结束字符串变量的字符串
TCHAR *g_BeginCharStr[1]; //当前语言的字符规则, 结束字符型常量的字符串
TCHAR *g_EndCharStr[1]; //当前语言的字符规则, 结束字符型常量的字符串
BOOL g_bControl; //控制字符,如C++中的\",因为控制字符\的存在其表示的是一个引号
BOOL g_bCase; //在进行关键字比较时是否区分大小写
int g_nstrInStringCount;
int g_nBeginCommentExStrCount;
int g_nEndCommentExStrCount;
int g_nLineCommentStrCount;
int g_nBeginStringStrCount;
int g_nEndStringStrCount;
int g_nBeginCharStrCount;
int g_nEndCharStrCount;
int g_nCurLanguage;
void SetCurLanguage(int nLanguage)
{
g_nCurLanguage = nLanguage;
}
BOOL IsSynWord(CStringArray &m_strArrayKeyWords, CString &strReadyToTest)
{
int val;
int low=0,hig=m_strArrayKeyWords.GetSize()-1;
int mid=(low+hig)/2;
while(low<=hig) {
CString str = m_strArrayKeyWords[mid];
if(g_bCase)
val=strReadyToTest.Compare(m_strArrayKeyWords[mid]);
else
val=strReadyToTest.CompareNoCase(m_strArrayKeyWords[mid]);
if(val>0)
low=mid+1;
else if(val<0)
hig=mid-1;
else
return TRUE;
mid=(low+hig)/2;
}
return FALSE;
}
BOOL IsNumber(CString &strReadyToTest)
{
int nLength = strReadyToTest.GetLength();
//*
switch (g_nCurLanguage)
{
case _CPP:
{
if (nLength > 2 && strReadyToTest[0] == _T('0') &&
strReadyToTest[1] == _T('x'))
{
for (int I = 2; I < nLength; I++)
{
if (_istdigit(strReadyToTest[I]) ||(strReadyToTest[I] >= _T('A') &&
strReadyToTest[I] <= _T('F')) ||(strReadyToTest[I] >= _T('a') &&
strReadyToTest[I] <= _T('f')))
continue;
return FALSE;
}
return TRUE;
}
}
break;
case _OBJECTPASCAL:
{
if (strReadyToTest[0] == _T('$'))
{
for (int I = 1; I < nLength; I ++)
{
if (_istdigit(strReadyToTest[I]) ||(strReadyToTest[I] >= _T('A') &&
strReadyToTest[I] <= _T('F')) ||
(strReadyToTest[I] >= _T('a') && strReadyToTest[I] <= _T('f')))
continue;
return FALSE;
}
return TRUE;
}
}
break;
case _BASIC:
{
if (nLength > 2 && strReadyToTest[0] == _T('&') &&
(strReadyToTest[1] == _T('O') || strReadyToTest[1] == _T('H')))
{
for (int I = 2; I < nLength; I++)
{
if (_istdigit(strReadyToTest[I]) ||(strReadyToTest[I] >= _T('A') &&
strReadyToTest[I] <= _T('F')) ||(strReadyToTest[I] >= _T('a') &&
strReadyToTest[I] <= _T('f')))
continue;
return FALSE;
}
return TRUE;
}
}
break;
case _HTML:
{
if (nLength > 2 && strReadyToTest[0] == '#')
{
for (int I = 1; I < nLength; I++)
{
if (_istdigit(strReadyToTest[I]) || (strReadyToTest[I] >= 'A' &&
strReadyToTest[I] <= 'F') ||
(strReadyToTest[I] >= 'a' && strReadyToTest[I] <= 'f'))
continue;
return FALSE;
}
return TRUE;
}
}
break;
case NONE:
return FALSE;
default:
break;
} // switch
if (!_istdigit(strReadyToTest[0]))
return FALSE;
for (int I = 1; I < nLength; I++)
{
if (!_istdigit(strReadyToTest[I]) && strReadyToTest[I] != _T('+') &&
strReadyToTest[I] != _T('-') && strReadyToTest[I] != _T('.') &&
strReadyToTest[I] != _T('e') && strReadyToTest[I] != _T('E'))
return FALSE;
}
//*/
return TRUE;
}
//装入关键字列表及语法解析规则
void LoadSynWord(CStringArray &m_strArrayKeyWords, int nLanguage)
{
LoadParseRule(nLanguage);
CString strAllSynWord;
m_strArrayKeyWords.RemoveAll();
CWinApp *app = AfxGetApp();
switch ( nLanguage ) {
case _ADA:
strAllSynWord = _T(" abort,abs,abstract,accept,access,aliased,all,and,at,begin,body,case,declare,delay,delta,digits,do,else,elsif,end,entry,exception,exit,for,function,generic,goto,if,in,is,loop,mod,new,not,null,of,or,others,out,package,pragma,procedure,protected,raise,rem,renames,requeue,return,reverse,select,separate,task,terminate,then,until,use,when,while,with,xor,array,constant,limited,record,type,subtype,range,private,tagged,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_ADA"), strAllSynWord);
break;
case _ASM:
strAllSynWord = _T(" eax,ebx,ecx,edx,ebp,esp,esi,edi,AAA,AAD,AAM,AAS,ADC,ADD,AND,ARPL,BOUND,BSF,BSR,BSWAP,BT,BTC,BTR,BTS,CALL,CBW,CDQ,CLC,CLD,CLI,CLTS,CMC,CMOVA,CMOVAE,CMOVB,COMVBE,CMOVC,CMOVE,CMOVG,CMOVGE,CMOVL,CMOVLE,CMOVNA,CMOVNAE,CMOVNB,CMOVNBE,CMOVNC,CMOVNE,CMOVNG,CMOVNGE,CMOVNL,CMOVNLE,CMOVNO,CMOVNP,CMOVNS,CMOVNZ,CMOVO,CMOVP,CMOVPE,CMOVPO,CMOVS,CMOVZ,CMP,CMPS,CMPSB,CMPSW,CMPSD,CMPXCHG,CMPXCHG8B,CPUID,CWD,CWDE,DAA,DAS,DEC,DIV,ENTER,HLT,IDIV,IMUL,IN,INC,INS,INT,INTO,INVD,INVLPG,IRET,IRETD,JA,JAE,JB,JBE,JC,JCXZ,JECXZ,JE,JG,JGE,JL,JLE,JNA,JNAE,JNB,JNBE,JNC,JNE,JNG,JNGE,JNL,JNLE,JNO,JNP,JNS,JNZ,JO,JP,JPE,JPO,JS,JZ,JMP,LAHF,LAR,LDS,LEA,LEAVE,LES,LFS,LGDT,LGS,LIDT,LLDT,LMSW,LOCK,LODS,LODSB,LODSW,LODSD,LOOP,LOOPZ,LOOPE,LOOPNZ,LOOPNE,LSL,LSS,LTR,MOV,MOVS,MOVSB,MOVSW,MOVSD,MOVSX,MOVZX,MUL,NEG,NOP,NOT,OR,OUT,OUTS,POP,POPA,POPAD,POPF,POPFD,PUSH,PUSHA,PUSHAD,PUSHF,PUSHFD,RCL,RCR,RDMSR,RDPMC,RDTSC,REP,REPE,REPNE,RET,ROL,ROR,RSM,SAHF,SAL,SAR,SBB,SCAS,SCASB,SCASW,SCASD,SETA,SETAE,SETB,SETBE,SETC,SETE,SETG,SETGE,SETL,SETLE,SETNA,SETNAE,SETNB,SETNBE,SETNC,SETNE,SETNG,SETNGE,SETNL,SETNLE,SETNO,SETNP,SETNS,SETNZ,SETO,SETP,SETPE,SETPO,SETS,SETZ,SGDT,SHL,SHLD,SHR,SHRD,SIDT,SLDT,SMSW,STC,STD,STI,STOS,STOSB,STOSW,STOSD,STR,SUB,TEST,UD2,VERR,VERW,WAIT,WBINVD,WRMSR,XADD,XCHG,XLAT,XLATB,XOR,EMMS,MOVD,MOVQ,PACKSSDW,PACKSSWB,PACKUSWB,PADD,PADDS,PADDUS,PAND,PANDN,PCMPEQ,PCMPGT,PMADD,PMULH,PMULL,POR,PSLL,PSRA,PSRL,PSUB,PSUBS,PSUBUS,PUNPCKH,PUNPCKL,PXOR,F2XM1,FABS,FADD,FADDP,FBLD,FBSTP,FCHS,FCLEX,FCMOVB,FCMOVE,FCMOVBE,FCMOVU,FCMOVNB,FCMOVNE,FCMOVNBE,FCOM,FCOMP,FCOMPP,FCOMI,FCOMIP,FCOS,FDECSTP,FDIV,FDIVP,FDIVR,FDIVRP,FFREE,FIADD,FICOM,FICOMP,FIDIV,FIDIVR,FILD,FIMUL,FINCSTP,FINIT,FIST,FISTP,FISUB,FISUBR,FLD,FLD1,FLDCW,FLDENV,FLDL2E,FLDL2T,FLDLG2,FLDLN2,FLDPI,FLDZ,FMUL,FMULP,FNOP,FPATAN,FPREM,FPREM1,FPTAN,FRNDINT,FRSTOR,FSAVE,FSCALE,FSIN,FSINCOS,FSQRT,FST,FSTCW,FSTENV,FSTP,FSTSW,FSUB,FSUBP,FSUBR,FSUBRP,FTST,FUCOM,FUCOMP,FUCOMPP,FUCOMI,FUCOMIP,FXAM,FXCH,FXTRACT,FYL2X,FYL2XP1,FWAIT,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_ASM"), strAllSynWord);
break;
case _BASIC:
strAllSynWord = _T(" Alias,And,Any,As,Base,Boolean,Byref,Byte,Byval,Call,Case,Close,Compare,Const,Currency,Data,Date,Declare,Defbool,Defbyte,Defcur,Defdate,Defdbl,Defdec,Defint,Deflng,Defobj,Defsng,Defstr,Defvar,Dim,Do,Double,Each,Else,Elseif,End,Enum,Eqv,Erase,Error,Event,Exit,Explicit,False,For,Function,Get,Global,Gosub,Goto,If,IIf,Imp,Implements,In,Integer,Is,Let,Lib,Line,Lock,Long,Loop,Lset,New,Next,Not,Object,On,Open,Option,Optional,Or,Preserve,Print,Private,Property,Public,Put,Raiseevent,Redim,Resume,Return,Rset,Select,Set,Single,Static,Stop,String,Sub,Then,To,True,Type,Ubound,Unload,Unlock,Var,Variant,Wend,While,With,Write,Xor,#if,#End,#else,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_BASIC"), strAllSynWord);
break;
case _BATCH:
strAllSynWord = _T(" do,echo,errorlevel,exist,for,goto,if,in,not,off,on,pause,set,shift,assign,attrib,backup,break,cd,chdir,chkdsk,cls,copy,ctty,date,del,dir,diskcomp,diskcopy,erase,exe2bin,fdisk,find,format,graftabl,graphics,join,label,md,mkdir,mode,more,path,print,prompt,recover,ren,rename,replace,restore,rm,rmdir,select,share,sort,substitute,sys,time,tree,type,ver,verify,vol,xcopy,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_BATCH"), strAllSynWord);
break;
case _BLUE:
strAllSynWord = _T(" class,is,uses,internal,const,var,routines,interface,creation,invariant,end,pre,post,enumeration,manifest,deferred,builtin,redefined,return,assert,super,if,then,else,case,of,loop,exit,on,in,create,old,this,input,output,format,termiinal,Integer,Boolean,Real,String,LList,LIndexList,LStack,AStack,LQueue,AQueue,HPrioQueue,LPrioQueue,APrioQueue,HSymbolTable,TSymbolTable,Tree,BinaryTree,Matrix,Array,Set,Bag,TextFileHandle,FileSysHandle,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_BLUE"), strAllSynWord);
break;
case _CLIPPER:
strAllSynWord = _T(" .and.,.f.,.not.,.or.,.t.,accept,all,alternate,append,average,begin,bell,blank,box,break,call,cancel,case,ccept,century,clear,close,color,commit,confirm,console,continue,copy,count,create,cursor,date,decimals,declare,default,define,delimiters,device,dir,display,do,eject,else,elseif,end,endcase,enddo,endif,epoch,erase,escape,exact,exclusive,extended,external,file,filter,find,fixed,for,form,format,from,function,get,go,goto,if,index,input,intensity,join,key,keyboard,label,list,local,locate,loop,margin,memory,memvar,menu,message,new,next,nil,note,on,order,otherwise,pack,path,picture,printer,private,procedure,prompt,public,quit,read,recall,reindex,relation,release,rename,replace,report,restore,return,run,save,say,scoreboard,screen,sequence,set,shared,skip,softseek,sort,static,store,structure,sum,text,to,total,type,typeahead,unique,unlock,update,use,valid,wait,while,wrap,zap,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_CLIPPER"), strAllSynWord);
break;
case _COBOL:
strAllSynWord = _T(" ACCEPT,ACCESS,ADD,ADVANCING,AFTER,ALL,ALPHABETIC,ALPHABETIC-LOWER,ALPHABETIC-UPPER,ALPHANUMERIC,ALSO,AND,ANY,ARE,ASCENDING,ASSIGN,AT,AUTHOR,BEFORE,BEGINNING,BLANK,BY,CALL,CANCEL,CHARACTER,CHARACTERS,CLOSE,COMMA,COMMIT,COMP,COMP-3,COMP-5,COMPUTE,CONFIGURATION,CONTAINS,CONTINUE,CONVERTING,DATA,DECIMAL-POINT,DELETE,DELIMITED,DELIMITER,DEPENDING,DESCENDING,DISPLAY,DIVIDE,DIVISION,DO,DUPLICATES,ELSE,END,END-ACCEPT,END-CALL,END-COMPUTE,END-DELETE,END-EVALUATE,END-IF,END-MULTIPLY,END-PERFORM,END-READ,END-REWRITE,END-SEARCH,END-START,END-STRING,END-SUBTRACT,END-UNSTRING,END-WRITE,ENVIRONMENT,EVALUATE,EXEC CICS,END-EXEC,EXIT,EXTEND,FD,FILE,FILE-CONTROL,FILLER,FROM,GIVING,GO,GOBACK,HIGH-VALUE,HIGH-VALUES,I-O,IDENTIFICATION,IF,IN,INDEXED,INITIALIZE,INTO,INPUT,INPUT-OUTPUT,INSERT,INVALID,IS,LEADING,LENGTH,LINKAGE,LOW-VALUE,LOW-VALUES,MOVE,MULTIPLY,NEGATIVE,NOT,NUMERIC,NUMERIC-EDITED,OCCURS,ON,OPEN,OR,ORGANIZATION,OUTPUT,PAGE,PERFORM,PIC,POSITIVE,PROCEDURE,PROGRAM-ID,RANDOM,READ,REDEFINES,REMAINDER,REPLACE,REPLACING,RETURN,RETURN-CODE,REWRITE,ROUNDED,RUN,SD,SEARCH,SECTION,SELECT,SEPERATE,SET,SIGN,SIZE,SORT,SPACE,SPACES,SPECIAL-NAMES,STATUS,STRING,SUBTRACT,TALLY,TALLYING,THEN,THRU,TO,TRAILING,TRUE,UNSTRING,UNTIL,USAGE,USING,VALUE,VARYING,WHEN,WORKING-STORAGE,WRITE,X,ZERO,ZEROES,ZEROS,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_COBOL"), strAllSynWord);
break;
case _CPP:
strAllSynWord = _T(" #define,#else,#elif,#elseif,#endif,#error,#if,#ifdef,#ifndef,#include,#pragma,#undef,__asm,__based,__cdecl,__declspec,__except,__fastcall,__finally,__inline,__int16,__int32,__int64,__int8,__leave,__multiple_inheritance,__pascal,__single_inheritance,__stdcall,__try,__uuidof,__virtual_inheritance,_asm,_cdecl,_fastcall,_pascal,_stdcall,afx_msg,auto,bool,break,case,catch,char,class,code_seg,const,const_cast,continue,default,defined,delete,dllexport,dllimport,do,double,dynamic_cast,else,enum,explicit,extern,false,float,for,friend,goto,if,inline,int,interface,long,main,mutable,naked,namespace,new,off,on,once,operator,pack,pascal,pop,private,protected,public,push,register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,thread,throw,true,try,typedef,typeid,typename,union,unsigned,using,uuid,virtual,void,volatile,while,wmain,xalloc,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_CPP"), strAllSynWord);
break;
case _CSHAPE:
strAllSynWord = _T(" #define,#else,#elif,#elseif,#endif,#error,#if,#ifdef,#ifndef,#include,#pragma,#undef,__asm,__based,__cdecl,__declspec,__except,__fastcall,__finally,__inline,__int16,__int32,__int64,__int8,__leave,__multiple_inheritance,__pascal,__single_inheritance,__stdcall,__try,__uuidof,__virtual_inheritance,_asm,_cdecl,_fastcall,_pascal,_stdcall,afx_msg,abstract,as,base,bool,break,byte,case,catch,char,checked,class,const,continue,decimal,default,delegate,do,double,else,enum,event,explicit,extern,false,finally,fixed,float,for,foreach,goto,if,implicit,in,int,interface,internal,is,lock,long,namespace,new,null,object,operator,out,override,params,private,protected,public,readonly,ref,return,sbyte,sealed,short,sizeof,stackalloc,static,string,struct,switch,this,throw,true,try,typeof,uint,ulong,unchecked,unsafe,ushort,using,virtual,void,while,true,false,null,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_CSHAPE"), strAllSynWord);
break;
case _DATAFLEX:
strAllSynWord = _T(" abs,accept,acos,append_output,arc,asin,atan,autopage,backfield,blankform,box,calculate,channel,chart,chart_init,circle,clearform,clearscreen,clearxy,clear_option,close_input,close_output,cmdline,copyfile,cos,decrement,directory,direct_input,direct_output,diskfree,display,display_cut,display_graphic,ellipse,endgroup,entagain,entdisplay,enter,enterend,entergroup,entry,erasefile,exp,flood,format,formfeed,getdrange,get_argument_size,get_channel_position,get_current_colors,get_current_directory,get_current_input_channel,get_current_lockcount,get_current_output_channel,get_current_user_count,get_date_format,get_environment,get_grxy,get_licensed_max_users,get_number_format,get_video_mode,gotoxy,graphic,graph_getfirst,graph_getnext,graph_init,graph_stat,graph_sum,graph_value,grxy,gr_print,help,hi,ifchange,increment,inkey,inkey$,input,is_dse_license,keycheck,keyproc,line,log,low,memory,mod,move,movedate,moveint,movenum,movereal,movestr,output,output_wrap,page,pagecheck,palette,pie,plot,print,print_wrap,random,read,readln,read_block,read_dfini,registration,renamefile,report,reportend,round,runprogram,save_cut,save_graphic,screenmode,section,setchange,setworld,set_argument_size,set_channel_position,set_dfpath,set_line_style,set_option,set_termlist,set_text,set_video_mode,show,showln,sin,sleep,sqrt,subtotal,sysconf,sysdate,tan,write,writeln,date,indicator,integer,local,name,number,real,string,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_COBOL"), strAllSynWord);
break;
case _EIFFEL:
strAllSynWord = _T(" and,as,check,class,Clone,Create,Current,debug,deferred,div,do,else,elsif,end,ensure,Equal,export,external,false,feature,Forget,from,if,inherit,invariant,is,language,like,local,loop,mod,name,nochange,not,old,once,or,redefine,rename,require,rescue,Result,retry,then,until,variant,Void,BOOLEAN,CHARACTER,INTEGER,REAL,STRING,append,char_string,clear,duplicate,enter,entry,fill_blank,gt,hash_code,head,le,left_adjust,length,prepend,remove_all_occurrences,remove_char,resize,right_adjust,same_as,share,shared_with,size,string_char,substring,tail,to_c,to_integer,to_lower,to_upper,close,creatable,date,error,executable,exists,lastchar,lastint,laststring,next_line,open_append,open_read,open_write,putbool,putbool_nl,putchar,putchar_nl,putint,putint_nl,putreal,putreal_nl,putstring,putstring_nl,readable,set_error_output,unset_error_output,writable,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_EIFFEL"), strAllSynWord);
break;
case _FORTRAN:
strAllSynWord = _T(" ALLOCATABLE,CHARACTER,COMMON,COMPLEX,DATA,DIMENSION,DOUBLE,EQUIVALENCE,EXTERNAL,IMPLICIT,IN,INOUT,INTEGER,INTENT,INTRINSIC,KIND,LOGICAL,NAMELIST,NONE,OPTIONAL,OUT,PARAMETER,POINTER,PRIVATE,PUBLIC,REAL,RESULT,SAVE,SEQUENCE,TARGET,TYPE,USE,ABS,ACHAR,ACOS,ADJUSTL,ADJUSTR,AIMAG,AINT,ALL,ALLOCATE,ALLOCATED,ANINT,ANY,ASIN,ATAN,ATAN2,BACKSPACE,BIT_SIZE,BLOCK,BREAK,BTEST,CALL,CARG,CASE,CEILING,CHAR,CLOSE,CMPLX,CONJG,CONTAINS,CONTINUE,COS,COSH,COUNT,CPU_TIME,CSHIFT,CYCLE,DATE_AND_TIME,DBLE,DEALLOCATE,DEFAULT,DIGITS,DIM,DO,DOT_PRODUCT,DPROD,DVCHK,ELSE,ELSEIF,ELSEWHERE,END,ENDDO,ENDFILE,ENDIF,ENDWHERE,ENTRY,EOSHIFT,EPSILON,ERROR,EXIT,EXP,EXPONENT,FLOOR,FLUSH,FORMAT,FRACTION,FUNCTION,GETCL,GO,GOTO,HUGE,IACHAR,IAND,IBCLR,IBITS,IBSET,ICHAR,IEOR,IF,INDEX,INQUIRE,INT,INTERFACE,INTRUP,INVALOP,IOR,IOSTAT_MSG,ISHFT,ISHFTC,LBOUND,LEN,LEN_TRIM,LGE,LGT,LLE,LLT,LOG,LOG10,LOOP,MAP,MATMUL,MAX,MAXEXPONENT,MAXLOC,MAXVAL,MERGE,MIN,MINEXPONENT,MINLOC,MINVAL,MOD,MODULE,MODULO,MVBITS,NBREAK,NDPERR,NDPEXC,NEAREST,NINT,NOT,NULLIFY,OFFSET,ONLY,OPEN,OPERATOR,OTHERWISE,OVEFL,PACK,PRECFILL,PRECISION,PRESENT,PRINT,PROCEDURE,PRODUCT,PROGRAM,PROMPT,QUIT,RADIX,RANDOM_NUMBER,RANDOM_SEED,RANGE,READ,RECORD,RECURSIVE,REMOTE,REPEAT,RESHAPE,RETURN,REWIND,RRSPACING,SCALE,SCAN,SEGMENT,SELECT,SELECTED_INT_KIND,SELECTED_REAL_KIND,SET_EXPONENT,SHAPE,SIGN,SIN,SINH,SIZE,SPACING,SPREAD,SQRT,STOP,STRUCTURE,SUBROUTINE,SUM,SYSTEM,SYSTEM_CLOCK,TAN,TANH,THEN,TIMER,TINY,TO,TRANSFER,TRANSPOSE,TRIM,UBOUND,UNDFL,UNION,UNPACK,UNTIL,VAL,VERIFY,WHERE,WHILE,WRITE,.AND.,.EQ.,.EQV.,.FALSE.,.GE.,.GT.,.LE.,.LT.,.NE.,.NEQV.,.NOT.,.OR.,.TRUE.,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_FORTRAN"), strAllSynWord);
break;
case _HLBL:
strAllSynWord = _T(" AND,ARRAY,AS,ASM,BEGIN,BIT_PATTERN,CALL,CASE,CLASS,CONST,CONSTANTS,DEPENDENT_SEQUENCE,DIV,DO,DOWNTO,ELSE,ELSEIF,END,ENDFOR,ENDIF,ENDSUBROUTINE,FALSE,FOR,FUNCTION,GOTO,IF,IN,MOD,NOT,OR,PROCEDURE,STATEMENTS,SUBROUTINE,THEN,TRUE,USER_LABELS,VARIABLES,WAIT,WHILE,WITH,XOR,#define,#ifdef,#include,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_HLBL"), strAllSynWord);
break;
//*
case _HTML:
strAllSynWord = _T(" center,codebase,quality,pluginspage,embed,bottomMargin,rightMargin,rel,frameset,frame,noresize,noframes,big,onkeypress,layer,ul,shape,area,coords,map,tppabs,frameborder,ilayer,nolayer,visibility,scrolling,onclick,onmouseout,Onmouseover,accesskey,for,noshade,maxlength,span,tabindex,div,value,onchange,label,public,doctype,leftmargin,topmargin,marginwidth,marginheight,meta,content,http-equiv,language,onLoad,onUnload,color,target,IFRAME,NOSCRIPT,class,spacer,A,tbody,face,vAlign,action,address,align,alink,alt,applet,b,background,base,basefont,bgcolor,blink,blockquote,body,border,br,caption,cellpadding,cellspacing,cite,classid,clear,code,cols,colspan,dd,dfn,dir,dl,dt,em,font,form,h1,h2,h3,h4,h5,h6,head,height,hr,href, special,hspace,html,i,id,img,input,isindex,ismap,kbd,li,link,link,listing,menu,method,multiple,name,nobr,nowrap,object,ol,option,p,param,pre,ref,rev,rows,rowspan,runat,samp,script,select,size,src,strike,strong,style,table,td,text,textarea,th,title,tr,tt,type,u,var,vlink,vspace,wbr,width,xmp,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_HTML"), strAllSynWord);
break;
//*/
case _INI:
strAllSynWord = _T("");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_INI"), strAllSynWord);
break;
case _JAVA:
strAllSynWord = _T(" abstract,boolean,break,byte,case,catch,char,class,continue,default,do,double,else,extends,false,final,finally,float,for,if,implements,import,instanceof,int,interface,length,long,native,new,null,package,private,protected,public,return,short,static,super,switch,synchronized,this,threadsafe,throw,throws,transient,true,try,void,while,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_JAVA"), strAllSynWord);
break;
case _JSP:
strAllSynWord = _T(" abstract,boolean,break,byte,case,catch,char,class,const,continue,default,do,double,else,extends,false,final,finally,float,for,goto,if,implements,import,instanceof,int,interface,long,native,new,null,package,private,protected,public,return,short,static,strictfp,super,switch,synchronized,this,threadsafe,throw,throws,transient,true,try,void,volatile,while,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_JSP"), strAllSynWord);
break;
case _LIMBO:
strAllSynWord = _T(" adt,alt,break,case,continue,cyclic,do,else,exit,fn,for,hd,if,implement,import,int,len,load,module,of,or,pick,return,self,spawn,tagof,tl,to,type,while,array,big,byte,chan,con,int,list,NIL,real,ref,string,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_LIMBO"), strAllSynWord);
break;
case _LISP:
strAllSynWord = _T(" ABS,ADD1,AND,APPEND,APPLY,ARG,ARRAY,ASSOC,ATAN,ATOM,BAKTRACE,BOOLE,BOUNDP,BREAK,CAR,CDR,COMMENT,COND,CONS,COS,DEFPROP,DEFUN,DELETE,DELQ,DIFFERENCE,EQ,EQUAL,EVAL,EXP,EXPLODE,EXPT,FIX,FLOAT,FUNCALL,FUNCTION,GCD,GENSYM,GET,GO,GREATERP,IMPLODE,LAST,LENGTH,LESSP,LIST,LOAD,LOG,LSH,MAPCAN,MAPCAR,MAX,MEMBER,MIN,MINUS,MINUSP,NCONC,NOT,NULL,NUMBERP,OR,PLUS,PRIN1,PRINC,PRINT,PROG,PROG2,PROGN,PUTPROP,QUIT,QUOTE,QUOTIENT,READ,READCH,REMAINDER,REMPROP,RETURN,REVERSE,RPLACA,RPLACD,SET,SETQ,SIN,SORT,SORTCAR,SQRT,STORE,SUB1,SUBST,TERPRI,TIMES,TRACE,UNTRACE,ZEROP,close,EXPR,FEXPR,IF,LAMBDA,LEXPR,MACRO,open,strcase,strcat,THEN,WHILE,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_LISP"), strAllSynWord);
break;
case _MODULA2:
strAllSynWord = _T(" and,begin,by,case,const,definition,div,do,else,elsif,end,exit,export,for,from,if,implementation,import,in,loop,mod,module,not,of,or,pointer,procedure,qualified,record,repeat,return,set,then,to,type,until,var,while,with,ARRAY,BOOLEAN,CARDINAL,CHAR,FLOAT,INTEGER,LONG,LONGCARD,LONGFLOAT,LONGINT,LONGORD,LONGREAL,LONGTRUNC,REAL,SHORT,Abs,Bitset,Cap,Chr,Dec,Dispose,Excl,Halt,High,Inc,Incl,Max,Min,New,Odd,Ord,Size,Trunc,Val,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_MODULA2"), strAllSynWord);
break;
case _OBJECTPASCAL:
strAllSynWord = _T(" Absolute,Abstract,And,Array,As,Asm,Assembler,Automated,Begin,Case,Cdecl,Class,Const,Constructor,Contains,Default,Destructor,Dispid,Dispinterface,Div,Do,Downto,Dynamic,Else,End,Except,Export,Exports,External,Far,File,Finalization,Finally,For,Forward,Function,Goto,If,Implementation,Implements,In,Index,Inherited,Initialization,Inline,Interface,Is,Label,Name,Near,Message,Mod,Nil,Nodefault,Not,Object,Of,Or,Out,Overload,Override,Packed,Pascal,Private,Procedure,Program,Property,Protected,Protected,Public,Published,Raise,Read,Readonly,Record,Register,Reintroduce,Repeat,Resident,Resourcestring,Requires,Safecall,Set,Shl,Shr,Stdcall,Stored,String,Then,Threadvar,To,Try,Type,Unit,Until,Uses,Var,Virtual,While,With,Write,Writeonly,Xor,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_OBJECTPASCAL"), strAllSynWord);
break;
case _PARADOX:
strAllSynWord = _T(" and,as,case,caseInsensitive,create,Database,descending,disableDefault,doDefault,else,enableDefault,endCreate,endFor,endForEach,endif,endIndex,endMethod,endProc,endQuery,endRecord,endScan,endSort,endSwitch,endSwitchMenu,endTry,endType,endUses,endWhile,for,forEach,from,if,iif,in,index,indexStruct,is,key,like,loop,maintained,method,NOT,ObjectPAL,of,on,onFail,or,otherwise,passEvent,primary,proc,query,quitLoop,record,refIntStruct,retry,return,scan,secStruct,sort,step,struct,switch,switchMenu,tag,then,to,try,type,unique,uses,where,while,with,without,AnyType,Array,Binary,const,Currency,Date,DateTime,DynArray,endconst,endvar,Graphic,Logical,LongInt,Memo,Number,OLE,Point,SmallInt,String,Time,var,action,ActionEvent,canArrive,canDepart,changeValue,close,error,ErrorEvent,Event,keyChar,KeyEvent,keyPhysical,menuAction,MenuEvent,mouseClick,mouseDouble,mouseDown,mouseEnter,MouseEvent,mouseExit,mouseMove,mouseRightDouble,mouseRightDown,mouseRightUp,mouseUp,newValue,open,pushButton,removeFocus,setFocus,status,StatusEvent,timer,TimerEvent,ValueEvent,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PARADOX"), strAllSynWord);
break;
case _PERL:
strAllSynWord = _T(" __DATA__,__END__,__FILE__,__LINE__,accept,alarm,atan2,AUTOLOAD,BEGIN,bind,binmode,bless,caller,chdir,chmod,chomp,chop,chown,chr,chroot,close,closedir,connect,continue,CORE,cos,crypt,dbmclose,dbmopen,defined,delete,DESTROY,die,do,dump,each,else,elsif,END,endgrent,endhostent,endnetent,endprotoent,endpwent,endservent,eof,eq,eval,exec,exit,exp,fcntl,fileno,flock,for,foreach,fork,format,formline,getc,getgrent,getgrgid,getgrname,gethostbyaddr,gethostbyname,gethostent,getlogin,getnetbyaddr,getnetbyname,getnetent,getpeername,getpgrp,getppid,getpriority,getprotobyname,getprotobynumber,getprotoent,getpwent,getpwnam,getpwuid,getservbyname,getservbyport,getservent,getsockname,getsockopt,glob,gmtime,goto,grep,hex,if,index,int,ioctl,join,keys,kill,last,lc,lcfirst,length,link,listen,local,localtime,log,lstat,map,mkdir,msgctl,msgget,msgrcv,msgsnd,my,next,no,not,oct,open,opendir,or,ord,pack,package,pipe,pop,pos,print,printf,push,quotemeta,rand,read,readdir,readline,readlink,recv,redo,ref,rename,require,reset,return,reverse,rewinddir,rindex,rmdir,scalar,seek,seekdir,select,semctl,semgett,semop,send,setgrent,sethostent,setnetent,setpgrp,setpriority,setprotoent,setpwent,setservent,setsockopt,shift,shmctl,shmget,shmread,shmwrite,shutdown,sin,sleep,socket,socketpair,sort,splice,split,sprintf,sqrt,srand,stat,study,sub,substr,SUPER,symlink,syscall,sysopen,sysread,system,syswrite,tell,telldir,tie,tied,time,times,truncate,uc,ucfirst,umask,undef,UNIVERSAL,unless,unlink,unpack,unshift,until,use,utime,values,vec,wait,waitpid,wantarray,warn,while,write,xor,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PERL"), strAllSynWord);
break;
case _PHP:
strAllSynWord = _T(" __FILE__,__LINE__,BOOL,BREAK,CASE,CHAR,CLASS,CONTINUE,DEFAULT,DO,DOUBLE,E_ERROR,E_NOTICE,E_PARSE,E_WARNING,ELSE,ELSEIF,ENDFOR,ENDIF,ENDWHILE,EXTENDS,FALSE,FLOAT,FOR,FUNCTION,GLOBAL,IF,INCLUDE,INT,INTEGER,LONG,MIXED,NEW,OBJECT,OLD_FUNCTION,PHP,PHP_OS,PHP_VERSION,REAL,REQUIRE,RETURN,STATIC,STRING,SWITCH,TRUE,VAR,VOID,WHILE,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PHP"), strAllSynWord);
break;
case _PL1:
strAllSynWord = _T(" act,activate,alloc,allocate,begin,call,check,close,dcl,deact,deactivate,declare,declare,default,delay,delete,dft,display,do,do,else,end,end,entry,exit,fetch,format,free,get,go,goto,goto,halt,if,if,include,locate,on,open,page,print,proc,proc,procedure,procedure,process,put,read,release,return,revert,rewrite,select,signal,skip,stop,to,unlock,until,wait,while,write,area,auto,automatic,backward,based,bin,binary,bit,bkwd,buf,buffered,builtin,char,character,complex,cond,condition,conn,connected,controlled,cplx,ctl,dec,decimal,def,defined,direct,entry,env,environment,event,excl,exclusive,ext,external,file,fixed,float,generic,init,initial,input,int,internal,irred,irreducible,keyed,label,like,offset,output,pic,picture,pointer,pos,position,print,ptr,real,record,recursive,red,reducible,returns,sequential,static,stream,task,transient,unal,unaligned,unbuf,unbuffered,update,var,variable,varying, abs,acos,add,addr,all,allocation,allocn,any,asin,atan,atand,atanh,binary,bit,bool,ceil,ceil,char,compiletime,completion,complex,conjg,cos,cosd,cosh,count,counter,datafield,date,decimal,dim,divide,empty,erf,erfc,exp,fixed,float,floor,floor,hbound,high,imag,index,lbound,length,lineno,log,log10,log2,low,max,max,min,min,mod,mod,multiply,null,offset,onchar,oncode,oncount,onfile,onkey,onloc,onsource,pointer,poly,prec,precision,priority,prod,real,repeat,round,round,samekey,sign,sign,sin,sind,sinh,sqrt,status,string,substr,sum,sum,tan,tand,tanh,time,translate,trunc,trunc,unspec,verify,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PL1"), strAllSynWord);
break;
case _PROGRESS:
strAllSynWord = _T(" BIN,BYTE,CHAR,CHARACTER,COM-HANDLE,DATE,DEC,DECIMAL,DOUBLE,FLOAT,HANDLE,INT,INTEGER,LOG,LOGICAL,LONG,MEMPTR,RAW,RECID,ROWID,SHORT,UNSIGNED-SHORT,WIDGET,WIDGET-HANDLE,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PROGRESS"), strAllSynWord);
break;
case _PYTHON:
strAllSynWord = _T(" and,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,None,not,or,pass,print,raise,return,try,while,");
strAllSynWord = app->GetProfileString(_T("Keywords"), _T("_PYTHON"), strAllSynWord);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -