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

📄 compilerone.cpp

📁 操作系统实验,实现词法分析,内含源文件的输入与扫描.
💻 CPP
字号:
#include<fstream.h>
#include<iostream.h>
#include"get_code.h"
#include"analy_func.h"
void main()
{
	LCode* head;//代码链链首
	LCode* pS;//代码链当前节点位置
	head=InPutCode();//读取文本放入链表并返回其链首,链表结构见get_code.h
	pS=head;
	char cCode;//当前读出的字符
	char strToken[15];
	int iCode;
	const int iLength=sizeof(strToken);
	/////
	InitStr(strToken,iLength);//初始化数组
	//////////action////////////
	int iTemp=0;
	while((pS->cCode)!=NULL)
	{
		cCode=GetCode(pS);
		GetBC(pS,cCode);
		if(isLetter(cCode))//是标识符或保留字
		{
			while(isLetter(cCode) | isDigit(cCode))
			{
				ConCat(strToken,cCode);
				cCode=GetCode(pS);
			}
			Retract(pS);
			iCode=Reserve(strToken);
			cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
		}
		else if(isDigit(cCode))//是常数
		{
			while(isDigit(cCode))
			{
				ConCat(strToken,cCode);
				cCode=GetCode(pS);
			}
			Retract(pS);
			cout<<"(3"<<","<<"\""<<strToken<<"\""<<")"<<endl;
		}
		else if(isOperator(cCode))//是运算符
		{
			ConCat(strToken,cCode);
			cCode=GetCode(pS);
			if(cCode=='=')
			{
				ConCat(strToken,'=');
			}
			else
			{
				Retract(pS);
			}
			iCode=Reserve(strToken);
			cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
		}
		else if(isSeparator(cCode))//是分隔符
		{
			ConCat(strToken,cCode);
			iCode=Reserve(strToken);
			cout<<"("<<iCode<<","<<"\""<<strToken<<"\""<<")"<<endl;
		}
		else if(cCode=='"')
		{
			cout<<"(6,\"\"\")"<<endl;
		}
		iTemp++;
		InitStr(strToken,iLength);//初始化数组
	}
	////////////////////////////////////////////////////////////////////////////

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -