📄 scanner.cpp
字号:
{
buf[j] = PreDeal[i];
j++;
i++;
}
buf[j] = '\t';
buf[j+1] = '\t';
itoa(75,number,10);
buf[j+2] = number[0];
if(strlen(number)>1)
{
buf[j+3] = number[1];
}
buf[j+2+strlen(number)] = '\r';
buf[j+3+strlen(number)] = '\n';
buf[j+4+strlen(number)] = '\0';
PushIntoResult(buf);
}
else
{
buf[j] = '\0';
code = isKeyWord(buf);
buf[j] = '\t';
buf[j+1] = '\t';
itoa(code,number,10);
buf[j+2] = number[0];
if(strlen(number)>1)
{
buf[j+3] = number[1];
}
buf[j+2+strlen(number)] = '\r';
buf[j+3+strlen(number)] = '\n';
buf[j+4+strlen(number)] = '\0';
PushIntoResult(buf);
}
i--;
continue;
}
if(isdigit(PreDeal[i]))
{
j = 0;
for(int k = 0;k < 256;k++)
{
buf[k] = '\0';
}
buf[j] = PreDeal[i];
j++;
i++;
while(isdigit(PreDeal[i]))
{
buf[j] = PreDeal[i];
j++;
i++;
}
if(isalpha(PreDeal[i]))
{
buf[j] = PreDeal[i];
j++;
i++;
while(isalnum(PreDeal[i]))
{
buf[j] = PreDeal[i];
j++;
i++;
}
buf[j] = '\t';
buf[j+1] = '\t';
itoa(75,number,10);
buf[j+2] = number[0];
if(strlen(number)>1)
{
buf[j+3] = number[1];
}
buf[j+2+strlen(number)] = '\r';
buf[j+3+strlen(number)] = '\n';
buf[j+4+strlen(number)] = '\0';
PushIntoResult(buf);
}
else
{
buf[j] = '\0';
buf[j] = '\t';
buf[j+1] = '\t';
itoa(76,number,10);
buf[j+2] = number[0];
if(strlen(number)>1)
{
buf[j+3] = number[1];
}
buf[j+2+strlen(number)] = '\r';
buf[j+3+strlen(number)] = '\n';
buf[j+4+strlen(number)] = '\0';
PushIntoResult(buf);
}
i--;
continue;
}
if(ispunct(PreDeal[i]))
{
j = 0;
for(int k = 0;k < 256;k++)
{
buf[k] = '\0';
}
buf[j] = PreDeal[i];
j++;
i++;
if(ispunct(PreDeal[i]))
{
if(isDouble(PreDeal[i-1],PreDeal[i]))
{
buf[j] = PreDeal[i];
j++;
}
else
{
buf[j] = ' ';
j++;
i--;
}
}
else
{
buf[j] = ' ';
j++;
i--;
}
buf[j] = '\0';
code = isSignal(buf);
buf[j] = '\t';
buf[j+1] = '\t';
itoa(code,number,10);
buf[j+2] = number[0];
if(strlen(number)>1)
{
buf[j+3] = number[1];
}
buf[j+2+strlen(number)] = '\r';
buf[j+3+strlen(number)] = '\n';
buf[j+4+strlen(number)] = '\0';
PushIntoResult(buf);
}
}
}
SetWindowText(BOXNAME,Result);
}
int isSignal(char buf[2])
{if(buf[0]=='(')
{return 33;}
if(buf[0]==')')
{return 34;}
if(buf[0]=='[')
{return 35;}
if(buf[0]==']')
{return 36;}
if(buf[0]=='{')
{return 37;}
if(buf[0]=='}')
{return 38;}
if(buf[0]=='.')
{return 40;}
if(buf[0]=='~')
{return 42;}
if(buf[0]==',')
{return 72;}
if(buf[0]==';')
{return 73;}
if(buf[0]=='+')
{if(buf[1]==' ')
{return 50;}
if(buf[1]=='+')
{return 43;}
if(buf[1]=='=')
{return 64;}
}
if(buf[0]=='-')
{if(buf[1]==' ')
{return 45;}
if(buf[1]=='-')
{return 44;}
if(buf[1]=='=')
{return 65;}
if(buf[1]=='>')
{return 39;}
}
if(buf[0]=='=')
{if(buf[1]==' ')
{return 63;}
if(buf[1]=='=')
{return 57;}
}
if(buf[0]=='|')
{if(buf[1]==' ')
{return 60;}
if(buf[1]=='|')
{return 62;}
if(buf[1]=='=')
{return 71;}
}
if(buf[0]=='*')
{if(buf[1]==' ')
{return 46;}
if(buf[1]=='=')
{return 66;}
}
if(buf[0]=='<')
{if(buf[1]==' ')
{return 53;}
if(buf[1]=='<')
{return 51;}
if(buf[1]=='=')
{return 55;}
}
if(buf[0]=='>')
{if(buf[1]==' ')
{return 54;}
if(buf[1]=='>')
{return 52;}
if(buf[1]=='=')
{return 56;}
}
if(buf[0]=='!')
{if(buf[1]==' ')
{return 41;}
if(buf[1]=='=')
{return 58;}
}
if(buf[0]=='&')
{if(buf[1]==' ')
{return 47;}
if(buf[1]=='&')
{return 61;}
if(buf[1]=='=')
{return 69;}
}
if(buf[0]=='/')
{if(buf[1]==' ')
{return 48;}
if(buf[1]=='=')
{return 67;}
}
if(buf[0]=='%')
{if(buf[1]==' ')
{return 49;}
if(buf[1]=='=')
{return 68;}
}
if(buf[0]=='^')
{if(buf[1]==' ')
{return 59;}
if(buf[1]=='=')
{return 70;}
}
}
bool isDouble(char a,char b)
{
if(a=='-')
{if(b=='>')
{return true;}
if(b=='-')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='+')
{if(b=='+')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='<')
{if(b=='<')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='>')
{if(b=='>')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='&')
{if(b=='&')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='|')
{if(b=='|')
{return true;}
if(b=='=')
{return true;}
return false;
}
if(a=='!')
{if(b=='=')
{return true;}
return false;
}
if(a=='*')
{if(b=='=')
{return true;}
return false;
}
if(a=='/')
{if(b=='=')
{return true;}
return false;
}
if(a=='%')
{if(b=='=')
{return true;}
return false;
}
if(a=='^')
{if(b=='=')
{return true;}
return false;
}
if(a=='=')
{if(b=='=')
{return true;}
return false;
}
return false;
}
int isKeyWord(char buf[256])
{
int length = strlen(buf);
if(length<2 || length>8)
{
return 75;
}
if(strcmp(buf,"atuo")==0)
{return 1;}
if(strcmp(buf,"break")==0)
{return 2;}
if(strcmp(buf,"case")==0)
{return 3;}
if(strcmp(buf,"char")==0)
{return 4;}
if(strcmp(buf,"const")==0)
{return 5;}
if(strcmp(buf,"continue")==0)
{return 6;}
if(strcmp(buf,"default")==0)
{return 7;}
if(strcmp(buf,"do")==0)
{return 8;}
if(strcmp(buf,"double")==0)
{return 9;}
if(strcmp(buf,"else")==0)
{return 10;}
if(strcmp(buf,"enum")==0)
{return 11;}
if(strcmp(buf,"extern")==0)
{return 12;}
if(strcmp(buf,"float")==0)
{return 13;}
if(strcmp(buf,"for")==0)
{return 14;}
if(strcmp(buf,"goto")==0)
{return 15;}
if(strcmp(buf,"if")==0)
{return 16;}
if(strcmp(buf,"int")==0)
{return 17;}
if(strcmp(buf,"long")==0)
{return 18;}
if(strcmp(buf,"register")==0)
{return 19;}
if(strcmp(buf,"return")==0)
{return 20;}
if(strcmp(buf,"short")==0)
{return 21;}
if(strcmp(buf,"signed")==0)
{return 22;}
if(strcmp(buf,"sizeof")==0)
{return 23;}
if(strcmp(buf,"static")==0)
{return 24;}
if(strcmp(buf,"struct")==0)
{return 25;}
if(strcmp(buf,"switch")==0)
{return 26;}
if(strcmp(buf,"typedef")==0)
{return 27;}
if(strcmp(buf,"union")==0)
{return 28;}
if(strcmp(buf,"unsigned")==0)
{return 29;}
if(strcmp(buf,"void")==0)
{return 30;}
if(strcmp(buf,"volatile")==0)
{return 31;}
if(strcmp(buf,"while")==0)
{return 32;}
return 75;
}
void PushIntoResult(char buf[256])
{
int i = strlen(Result);
int j = 0;
while(buf[j]!='\0')
{
Result[i] = buf[j];
i++;
j++;
}
Result[i] = '\0';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -