⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java-scanner.cpp

📁 java词法分析器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -