📄 java-scanner.cpp
字号:
currenttoken.label=11;
currenttoken.name[0]='(';
currenttoken.name[1]='\0';
load();
output();
break;
case')':
currenttoken.code=0x11d;
currenttoken.label=11;
currenttoken.name[0]=')';
currenttoken.name[1]='\0';
load();
output();
break;
case'.':
currenttoken.code=0x11d;
currenttoken.label=11;
currenttoken.name[0]='.';
currenttoken.name[1]='\0';
load();
output();
break;
case',':
currenttoken.code=0x120;
currenttoken.label=11;
currenttoken.name[0]=',';
currenttoken.name[1]='\0';
load();
output();
break;
case'{':
currenttoken.code=0x121;
currenttoken.label=11;
currenttoken.name[0]='{';
currenttoken.name[1]='\0';
load();
output();
break;
case'}':
currenttoken.code=0x121;
currenttoken.label=11;
currenttoken.name[0]='}';
load();
output();
break;
case';':
currenttoken.code=0x122;
currenttoken.label=11;
currenttoken.name[0]=';';
currenttoken.name[1]='\0';
load();
output();
break;
case'=':
currenttoken.label=12;
currenttoken.name[0]='=';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x117;
load();
}else
currenttoken.code=0x110;
output();
break;
case'+':
currenttoken.label=12;
currenttoken.name[0]='+';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else if(buffer[f]=='+')
{
currenttoken.name[1]='+';
currenttoken.code=0x11c;
load();
}
else if(buffer[f]>47&&buffer[f]<58)
{
currenttoken.code=0x11c;
}
else
{
currenttoken.code=0x11a;
}
output();
break;
case'-':
currenttoken.label=12;
currenttoken.name[0]='-';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else if(buffer[f]=='-')
{
currenttoken.name[1]='-';
currenttoken.code=0x11c;
load();
}
else if(buffer[f]>47&&buffer[f]<58)
{
currenttoken.code=0x11c;
}
else
{
currenttoken.code=0x11a;
}
output();
break;
case'*':
currenttoken.label=12;
currenttoken.name[0]='*';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else
{
currenttoken.code=0x11b;
}
output();
break;
case'%':
currenttoken.label=12;
currenttoken.name[0]='%';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else
{
currenttoken.code=0x11b;
}
output();
break;
case'&':
currenttoken.label=12;
currenttoken.name[0]='&';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else if(buffer[f]=='&')
{
currenttoken.name[1]='&';
currenttoken.code=0x113;
load();
}
else
{
currenttoken.code=0x116;
}
output();
break;
case'^':
currenttoken.label=12;
currenttoken.name[0]='^';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else
{
currenttoken.code=0x115;
}
output();
break;
case'|':
currenttoken.label=12;
currenttoken.name[0]='|';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x110;
load();
}
else if(buffer[f]=='|')
{
currenttoken.name[1]='|';
currenttoken.code=0x112;
load();
}
else
{
currenttoken.code=0x114;
}
output();
break;
case'>':
currenttoken.label=12;
currenttoken.name[0]='>';
load();
if(buffer[f]=='>')
{
currenttoken.name[1]='>';
load();
if(buffer[f]=='=')
{
currenttoken.name[2]='=';
currenttoken.code=0x110;
load();
}
else if(buffer[f]=='>')
{
currenttoken.name[2]='>';
load();
if(buffer[f]=='=')
{
currenttoken.name[3]='=';
currenttoken.code=0x110;
load();
}
else
{
currenttoken.code=0x119;
}
}
else
{
currenttoken.code=0x119;
}
}
else if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x118;
load();
}
else
{
currenttoken.code=0x118;
}
output();
break;
case'<':
currenttoken.label=12;
currenttoken.name[0]='<';
load();
if(buffer[f]=='<')
{
currenttoken.name[1]='<';
load();
if(buffer[f]=='=')
{
currenttoken.name[2]='=';
currenttoken.code=0x110;
load();
}
else
{
currenttoken.code=0x119;
}
}
else if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x118;
load();
}
else
{
currenttoken.code=0x118;
}
output();
break;
case'?':
currenttoken.name[0]='?';
load();
if(buffer[f]==':')
{
currenttoken.name[1]=':';
currenttoken.label=12;
currenttoken.code=0x111;
output();
break;
}
else
{
error();
}
case'!':
currenttoken.label=12;
currenttoken.name[0]='!';
load();
if(buffer[f]=='=')
{
currenttoken.name[1]='=';
currenttoken.code=0x117;
load();
}
else
{
currenttoken.code=0x11c;
}
output();
break;
case'~':
currenttoken.name[0]='~';
currenttoken.name[1]='\0';
currenttoken.label=12;
currenttoken.code=0x11c;
load();
output();
break;
case' ':
load(); break;
case 10:
printf("第%d行共有%d个单词\n",currentline,currentaddr);
currentline++;
count+=currentaddr;
currentaddr=0;
load();
break;
}
}
//--------------错误处理----------------------
void error()
{
printf("错误位置:第%d行-第%d单词\n",currentline,++currentaddr);
currenttoken.code=0x100;
currenttoken.label=0;
err_count++;
}
//--------------输出处理----------------------
void output()
{
switch(currenttoken.label) {
case 0:
fprintf(tokenfout,"第%d行-第%2d单词----错误的单词--0x%3x--[%s]\n",currentline,currentaddr,currenttoken.code,currenttoken.name); break;
case 3:
fprintf(tokenfout,"第%d行-第%2d单词----关键字--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 4:
fprintf(tokenfout,"第%d行-第%2d单词----标识符--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 6:
fprintf(tokenfout,"第%d行-第%2d单词----字符型--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 7:
fprintf(tokenfout,"第%d行-第%2d单词----整型--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 8:
fprintf(tokenfout,"第%d行-第%2d单词----浮点型--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 9:
fprintf(tokenfout,"第%d行-第%2d单词----字符串--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
case 10:
fprintf(tokenfout,"第%d行-第%2d单词----转义字符--[%s]\n",currentline,++currentaddr,currenttoken.name); break;
case 11:
fprintf(tokenfout,"第%d行-第%2d单词----界限符--[%s]\n",currentline,++currentaddr,currenttoken.name); break;
case 12:
fprintf(tokenfout,"第%d行-第%2d单词----运算符--0x%3x--[%s]\n",currentline,++currentaddr,currenttoken.code,currenttoken.name); break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -