📄 source.txt
字号:
Out(PLUS,string);
if(oldch=='-')
Out(SBB,string);
if(oldch=='/')
Out(DEVIDE,string);
if(oldch=='*')
Out(MULI,string);
i--; //单回退
}
////////////双运算符//////
if(IsOperation(ch))
{
string[k++]=ch;
if((oldch=='+')&&(ch=='+'))
{
Out(ADDADD,string);
}
if((oldch=='-')&&(ch=='-'))
{
Out(SBBSBB,string);
}
if((oldch=='*')&&(ch=='*'))
{
Out(DBP,string);
}
if((oldch=='*')&&(ch=='/'))
{
Out(ZHUSHI,string);
}
if((oldch=='/')&&(ch=='*'))
{
Out(ZHUSHI,string);
}
}
//////算术赋值运算符///////
if(IsLogic(ch))
{
string[k++]=ch; //读进
if((oldch=='+')&&(ch=='='))
{
Out(ADDEQU,string);
}
if((oldch=='-')&&(ch=='='))
{
Out(SBBEQU,string);
}
if((oldch=='*')&&(ch=='='))
{
Out(MULEQU,string);
}
if((oldch=='/')&&(ch=='='))
{
Out(DEVEQU,string);
}
}
for(k=0;k<=49;k++) //清空string,存入\0,字符串的结束
{
string[k]='\0';
}
k=0; //k回退
}
////////////////////////////////////////
///////////////////如果是界符/////////////
if(IsBorder(ch))
{
char oldch;
//读进
oldch=string[k++]=ch;
if(oldch==34) //读字双引号内符串
{
ch=buffer[++i];
while(ch!=34)
{
string[k++]=buffer[i++];
ch=buffer[i];
}
string[k++]=ch;//buffer[i++]; //读后面的双引号
ch=buffer[i];
Out(STRING,string);
}
if(oldch=='{')
Out(LEFTBIG,string);
if(oldch=='}')
Out(RIGHTBIG,string);
if(oldch=='[')
Out(LEFTMID,string);
if(oldch==']')
Out(RIGHTMID,string);
if(oldch=='(')
Out(LEFTSMAL,string);
if(oldch==')')
Out(RIGHTSMAL,string);
if(oldch==',')
Out(DOUHAO,string);
if(oldch==';')
Out(FENHAO,string);
if(oldch==39)
Out(DYHAO,string);
for(k=0;k<=49;k++) //清空string,存入\0,字符串的结束
{
string[k]='\0';
}
k=0; //k回退
}
//////////////////////////////////////////
//////////////////特殊运算符//////////////
if(IsSpecial(ch))
{
char oldch;
char ooldch; //用来判断是否位与
ooldch=buffer[i-1];
oldch=string[k++]=buffer[i++];
ch=buffer[i];
/////////////单目////////////////
if(!(IsSpecial(ch)||IsLogic(ch)))
{
if(oldch=='!') //判断是取反还是不等
Out(NOT,string);
if(oldch=='#')
Out(JINGHAO,string);
if(oldch=='.')
Out(DOT,string);
if(oldch==':')
Out(MAOHAO,string);
if(oldch=='?')
Out(WENHAO,string);
if(oldch=='%') //判断是输出格式还是取余运算
Out(PENCENT,string);
if(oldch=='^')
Out(XOR,string);
if(oldch=='&')
Out(ADDRESS,string);
if(oldch=='|')
Out(BYTEOR,string);
i--; //单回退
}
////////////逻辑或,逻辑与////////////
if(IsSpecial(ch)||IsLogic(ch))
{
string[k++]=ch; //读进
if((oldch=='&')&&(ch=='&'))
{
Out(AND,string);
}
if((oldch=='&')&&(ch=='='))
{
Out(AND,string);
}
if((oldch=='|')&&(ch=='|'))
{
Out(OR,string);
}
if((oldch=='!')&&(ch=='='))
{
Out(UNEQUL,string);
}
}
for(k=0;k<=49;k++) //清空string,存入\0,字符串的结束
{
string[k]='\0';
}
k=0; //k回退
}
///////////////////////////////////////////////
//////////////////逻辑运算符<,>,==/////////////
if(IsLogic(ch))
{
char oldch;
char ooldch;
ooldch=buffer[i-1];
oldch=string[k++]=buffer[i++];
ch=buffer[i];
if(!IsLogic(ch))
{
if(oldch=='>')
Out(BIG,string);
if(oldch=='<')
Out(SMALL,string);
if(oldch=='=') //判断是否是算术赋值符
if(!(IsOperation(ooldch)))
Out(VALUE,string);
i--; //单回退
}
/////////////双目运算////////////
if(IsLogic(ch))
{
string[k++]=ch; //读进
if((oldch=='>')&&(ch=='='))
{
Out(BIGEQU,string);
}
if((oldch=='>')&&(ch=='>'))
{
Out(RIGHTMOVE,string);
}
if((oldch=='<')&&(ch=='='))
{
Out(SMALLEQU,string);
}
if((oldch=='<')&&(ch=='<'))
{
Out(LEFTMOVE,string);
}
if((oldch=='=')&&(ch=='='))
{
Out(EQUAL,string);
}
}//////位移运算////
}////逻辑运算符////
for(k=0;k<49;k++) //清准备接收下一个字符串
string[k]='\0';
k=0;
}////处理一行////
}/////扫描文件//
}
///////////////////////
//函数名:IsLetter
//功能:判断是否为字母
//参数说明:ch 字母
///////////////////////
bool IsLetter(char ch)
{
if((ch>=65&&ch<=90)||(ch>=97&&ch<=122))
return true;
else
return false;
}
///////////////////////
//函数名:IsNumber
//功能:判断是否为数字
//参数说明:ch 字母
///////////////////////
bool IsNumber(char ch)
{
if(ch>=48&&ch<=57)
return true;
else
return false;
}
/////////////////////////
//函数名:IsOperation
//功能:判断是否为操作符
//参数说明:ch 字母
/////////////////////////
bool IsOperation(char ch)
{
if(ch==42||ch==43||ch==45||ch==47)
return true;
else
return false;
}
///////////////////////
//函数名:IsBorder
//功能:判断是否为界符
//参数说明:ch 字母
//////////////////////
bool IsBorder(char ch)
{
if(ch==34||ch==39||ch==40||ch==41||ch==91||ch==93||ch==59||ch==123||ch==125||ch==44)
return true;
else
return false;
}
////////////////////////////
//函数名:IsLogic
//功能:判断是否为逻辑运算符
//参数说明:ch 字母
////////////////////////////
bool IsLogic(char ch)
{
if(ch==60||ch==61||ch==62)
return true;
else
return false;
}
/////////////////////////////
//函数名:IsSpecial
//功能:判断是否为特殊运算符
//参数说明:ch 字母
/////////////////////////////
bool IsSpecial(char ch)
{
if(ch==33||ch==35||ch==37||ch==38||ch==58||ch==63||ch==46||ch==94||ch==124)
return true;
else
return false;
}
//////////////////////////
//函数名:IsKeyword
//功能:判断是否为保留字
//参数说明:ch 字符串
//////////////////////////
bool IsKeyWord(char* ch)
{
int i;
bool flag;
flag=false;
for(i=0;i<=31;i++)
if(!strcmp(ch,keyword[i]))
{
flag=true;
break;
}
if(flag)
return true;
else
return false;
}
//////////////////////////
//函数名:IsMacro
//功能:判断是否为宏定义
//参数说明:ch 字符串指针
///////////////////////////
bool IsMacro(char* ch)
{
int i;
bool flag;
flag=false;
for(i=0;i<=4;i++)
if(!strcmp(ch,Macro[i]))
{
flag=true;
break;
}
if(flag)
return true;
else
return false;
}
////////////////////////////////////////////////////////
//函数名:Out
//功能:输出字符串
//参数说明:Identifier,字符串类型,str,待输出字符串
////////////////////////////////////////////////////////
void Out(int Identifier,char *str)
{
LV_ITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem = iIndex;
lvi.iSubItem = 0;
lvi.pszText = str;
ListView_InsertItem(hwndListView,&lvi);
switch(Identifier) //根据不同类型,在类型栏中输出对应文本
{
case KEYWORD:
ListView_SetItemText(hwndListView,iIndex,1,"关键字");
break;
case MACRO:
ListView_SetItemText(hwndListView,iIndex,1,"宏定义");
break;
case BORDER:
ListView_SetItemText(hwndListView,iIndex,1,"界符");
break;
case NUMBER:
ListView_SetItemText(hwndListView,iIndex,1,"数值");
break;
case LOGIC:
ListView_SetItemText(hwndListView,iIndex,1,"逻辑运算符");
break;
case OPERATION:
ListView_SetItemText(hwndListView,iIndex,1,"算术运算符");
case STRING:
ListView_SetItemText(hwndListView,iIndex,1,"字符串");
break;
case PLUS:
ListView_SetItemText(hwndListView,iIndex,1,"加操作符");
break;
case SBB:
ListView_SetItemText(hwndListView,iIndex,1,"减操作符");
break;
case MULI:
ListView_SetItemText(hwndListView,iIndex,1,"星号");
break;
case DEVIDE:
ListView_SetItemText(hwndListView,iIndex,1,"整除操作符");
break;
case ERRORSTRING:
ListView_SetItemText(hwndListView,iIndex,1,"错误类型,请改正!");
break;
case DOUBLEYH:
ListView_SetItemText(hwndListView,iIndex,1,"双引号");
break;
case LEFTBIG:
ListView_SetItemText(hwndListView,iIndex,1,"左大扩号");
break;
case RIGHTBIG:
ListView_SetItemText(hwndListView,iIndex,1,"右大扩号");
break;
case LEFTMID:
ListView_SetItemText(hwndListView,iIndex,1,"左中扩号");
break;
case RIGHTMID:
ListView_SetItemText(hwndListView,iIndex,1,"右中扩号");
break;
case LEFTSMAL:
ListView_SetItemText(hwndListView,iIndex,1,"左小扩号");
break;
case RIGHTSMAL:
ListView_SetItemText(hwndListView,iIndex,1,"右小扩号");
break;
case DOUHAO:
ListView_SetItemText(hwndListView,iIndex,1,"逗号");
break;
case FENHAO:
ListView_SetItemText(hwndListView,iIndex,1,"分号");
break;
case ADDEQU:
ListView_SetItemText(hwndListView,iIndex,1,"加法赋值运算符");
break;
case SBBEQU:
ListView_SetItemText(hwndListView,iIndex,1,"减法赋值运算符");
break;
case MULEQU:
ListView_SetItemText(hwndListView,iIndex,1,"乘法赋值运算符");
break;
case DEVEQU:
ListView_SetItemText(hwndListView,iIndex,1,"除法赋值运算符");
break;
case AND:
ListView_SetItemText(hwndListView,iIndex,1,"与运算符");
break;
case OR:
ListView_SetItemText(hwndListView,iIndex,1,"或运算符");
break;
case NOT:
ListView_SetItemText(hwndListView,iIndex,1,"取反运算符");
break;
case UNEQUL:
ListView_SetItemText(hwndListView,iIndex,1,"逻辑运算符-不等");
break;
case BYTEOR:
ListView_SetItemText(hwndListView,iIndex,1,"位或运算符");
break;
case BYTEAND:
ListView_SetItemText(hwndListView,iIndex,1,"位与运算符");
break;
case PENCENT:
ListView_SetItemText(hwndListView,iIndex,1,"百分号");
break;
case XOR:
ListView_SetItemText(hwndListView,iIndex,1,"位异或运算符");
break;
case MAOHAO:
ListView_SetItemText(hwndListView,iIndex,1,"冒号");
break;
case WENHAO:
ListView_SetItemText(hwndListView,iIndex,1,"问号");
break;
case JINGHAO:
ListView_SetItemText(hwndListView,iIndex,1,"井号");
break;
case DOT:
ListView_SetItemText(hwndListView,iIndex,1,"结构成员运算符");
break;
case BIG:
ListView_SetItemText(hwndListView,iIndex,1,"大于号");
break;
case SMALL:
ListView_SetItemText(hwndListView,iIndex,1,"小于号");
break;
case BIGEQU:
ListView_SetItemText(hwndListView,iIndex,1,"大于等于");
break;
case SMALLEQU:
ListView_SetItemText(hwndListView,iIndex,1,"小于等于");
break;
case EQUAL:
ListView_SetItemText(hwndListView,iIndex,1,"逻辑等于号");
break;
case LEFTMOVE:
ListView_SetItemText(hwndListView,iIndex,1,"左移");
break;
case RIGHTMOVE:
ListView_SetItemText(hwndListView,iIndex,1,"右移");
break;
case VALUE:
ListView_SetItemText(hwndListView,iIndex,1,"赋值运算符");
break;
case ADDADD:
ListView_SetItemText(hwndListView,iIndex,1,"自加运算符");
break;
case SBBSBB:
ListView_SetItemText(hwndListView,iIndex,1,"自减运算符");
break;
case DYHAO:
ListView_SetItemText(hwndListView,iIndex,1,"单引号");
break;
case ZHUSHI:
ListView_SetItemText(hwndListView,iIndex,1,"注释符号");
break;
case FLAG:
ListView_SetItemText(hwndListView,iIndex,1,"标识符");
break;
case ADDRESS:
ListView_SetItemText(hwndListView,iIndex,1,"特殊操作符&");
break;
case DBP:
ListView_SetItemText(hwndListView,iIndex,1,"二维指针");
break;
}
iIndex++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -