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

📄 analy_func.cpp

📁 操作系统实验,实现词法分析,内含源文件的输入与扫描.
💻 CPP
字号:
#include<iostream.h>
#include "constant_define.h"

int isReserve(const char* arr[],char strToken[],int);//是否是保留字
bool isInclude(char array[],char cCode ,int iLength);//判断某数组中是否包含某字符

////////////////判断是否是字母
bool isLetter(char cCode)
{
	char array[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	int iLength=sizeof(array);
	return isInclude(array,cCode,iLength);

}
////////////////判断是否是数字
bool isDigit(char cCode)
{
	char array[]="0123456789";
	int iLength=sizeof(array);
	return isInclude(array,cCode,iLength);
}

bool isOperator(char cCode)//判断是否是运算符
{
	char array[]="+-*/=<>!";
	int iLength=sizeof(array);
	return isInclude(array,cCode,iLength);
}
bool isSeparator(char cCode)//判断是否是间隔符
{
	char array[]=",;{}()";
	int iLength=sizeof(array);
	return isInclude(array,cCode,iLength);
}

bool isInclude(char array[],char cCode,int iLength)//判断某数组中是否包含某字符
{
	bool isInclude=false;
	for(int i=0;i<iLength;i++)
	{
		if(cCode==array[i])
		{
			isInclude=true;
		}
	}
	return isInclude;
}


void InitStr(char sStr[],int iLength)//初始化数组
{
	int i=0;
	while(sStr[i]!='\0' && i<iLength)
	{
		sStr[i]='\0';
		i++;
	}
}
void ConCat(char strToken[], char ch)//连接字符
{
	int i=0;
	while(strToken[i]!='\0')
	{
		i++;
	}
	strToken[i]=ch;
}
int Reserve(char strToken[])//查找保留字编码
{
	int iValue=2;
	int iLen_K=sizeof(arrKeyWord)/sizeof(arrKeyWord[0]);//取字符数组长度
	int iLen_O=sizeof(arrOperator)/sizeof(arrOperator[0]);
	int iLen_S=sizeof(arrSeparator)/sizeof(arrSeparator[0]);

	if(isReserve(arrKeyWord,strToken,iLen_K)==1)
	{
		iValue=1;
	};
	if(isReserve(arrOperator,strToken,iLen_O)==1)
	{
		iValue=4;
	};
	if(isReserve(arrSeparator,strToken,iLen_S)==1)
	{
		iValue=5;
	};
	return iValue;
}
int isReserve(const char* array[],char strToken[],int iLength)//字符匹配
{
	int j=0;
	int iValue=0;
	for(int i=0;i<iLength;i++,j=0)
	{
		while((array[i][j]!='\0') & (strToken[j]!='\0'))
		{
			if(array[i][j]!=strToken[j]) break;
			j++;
		};
		if((array[i][j]=='\0') & (strToken[j]=='\0')) 
		{
			iValue=1;
			break;
		}
		
	}
	return iValue;
}

⌨️ 快捷键说明

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