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

📄 findidentify.cpp

📁 这个程序模拟了编译器功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				  while(oper_pos!=string::npos&&(oper_pos==0||aLine.at(oper_pos-1)==' '||aLine.at(oper_pos-1)=='\t'
				        ||aLine.at(oper_pos-1)==';'||aLine.at(oper_pos-1)==','||aLine.at(oper_pos)=='('||aLine.at(oper_pos)=='{'||isalnum(aLine.at(oper_pos-1))!=0))
				  {
					  if(aLine.at(oper_pos)=='=')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="==";
							  oper_line[q]=lineNum;
						  }
						  else if(oper_pos>=1&&isalnum(aLine.at(oper_pos-1))!=0)
						  {
							  oper_name[++q]="=";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='!')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="!=";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="!";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='#')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='#')
						  {
							  oper_name[++q]="##";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="#";
							  oper_line[q]=lineNum;
							  done=false;
						  }
						  break;

					  }
					  else if(aLine.at(oper_pos)=='~')
					  {
						  oper_name[++q]="~";
						  oper_line[q]=lineNum;
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='*')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="*=";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="*";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='/')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="/=";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="/";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='%')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="%=";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="%";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='^')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="^=";
							  oper_line[q]=lineNum;	
						  }
						  else{
							  oper_name[++q]="^";
							  oper_line[q]=lineNum;	 
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='&')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="&=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='&')
						  {
							  oper_name[++q]="&&";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="&";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='+')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="+=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='+')
						  {
							  oper_name[++q]="++";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="+";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='-')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="-=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='-')
						  {
							  oper_name[++q]="--";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="-";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='|')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="|=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='|')
						  {
							  oper_name[++q]="||";
							  oper_line[q]=lineNum;
						  }
						  else{
							  oper_name[++q]="|";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='?')
					  {
						  oper_name[++q]="?:";
						  oper_line[q]=lineNum;
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='<')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]="<=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='<')
						  { 
							  if((oper_pos+2<oper_temp)&&aLine.at(oper_pos+2)=='=')
							  {
								  oper_name[++q]="<<=";
							      oper_line[q]=lineNum;
							  }
							  else
							  {
								  oper_name[++q]="<<";
							      oper_line[q]=lineNum;
							  }
						  }
						  else{
							  oper_name[++q]="<";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
					  else if(aLine.at(oper_pos)=='>')
					  {
						  if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='=')
						  {
							  oper_name[++q]=">=";
							  oper_line[q]=lineNum;
						  }
						  else if((oper_pos+1<oper_temp)&&aLine.at(oper_pos+1)=='>')
						  {
							  if((oper_pos+2<oper_temp)&&aLine.at(oper_pos+2)=='>')
							  {
								  oper_name[++q]=">>>";
							      oper_line[q]=lineNum;
							  }
							  else if((oper_pos+2<oper_temp)&&aLine.at(oper_pos+2)=='=')
							  {
								  oper_name[++q]=">>=";
							      oper_line[q]=lineNum;
							  }
							  else
							  {
								  oper_name[++q]=">>";
							      oper_line[q]=lineNum;
							  }
						  }
						  else{
							  oper_name[++q]=">";
							  oper_line[q]=lineNum;
						  }
						  done=true;
						  break;
					  }
				  }
			}
		done=true;
			  
        getline(readFile,aLine);
	}

//输出identify not include function	
	cout << "Variables :"<<endl;                 
	for(  i=0;i<v1;i++)
		if( variableNumber[i]>0 )
        { 
          
		  cout << endl<<variableNames[i][0]<<endl;
		  for( j=1;j<=variableNumber[i];j++)
		  {   
			  cout << "Defined in line "<<varlineNum[i][j][0]<<": ";
			  cout  << variableNames[i][j]<<endl;
			  if(appearNumber[i][j]>=1)
				  cout<<"Changed in line: ";
			  for(p=1;p<=appearNumber[i][j];p++)
			  {
				  cout<<"#"<<varlineNum[i][j][p]<<"	";
				  if(p==appearNumber[i][j])
					  cout<<endl;
              }
		  }
		} 
 
//输出identify of function   
    cout << endl <<endl <<"Functions :"<<endl;    
    for( i=0;i<f1;i++)
		 if(functionNumber[i]>0)
		 {   
			 
			 cout << endl <<functionNames[i][0]<<endl;
			 for(j=1;j<=functionNumber[i];j++)
			 { 
				 cout << "line "<< funlineNum[i][j]<<" :";
			     cout << functionNames[i][j]<<endl;
             }
		 }
//输出运算符
	cout<<endl;
	for(i=0;i<=q;i++)
	{
		cout<<"Line "<<oper_line[i]<<" define operater: \""<<oper_name[i]<<"\";"<<endl;
	}
	cout<<endl;

}

⌨️ 快捷键说明

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