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

📄 by2view.cpp

📁 VC编译环境下实现编译器。 实现词法和语法分析。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			   if(i<j)
			   temp=(char)str.GetAt(i);
			   else
			   temp=001;
			   i++;
			   break;
		  case 13:			   
			   if(i<j)
			   temp=(char)str.GetAt(i);
			   else
			   temp=001;
			   i++;
			   break;
		  case 10:
			   if(i<j)
			   temp=(char)str.GetAt(i);
			   else
			   temp=001;
			   i++;
			   flag++;
			   break;
		  case '=':
			   if(i<j)
			   temp=(char)str.GetAt(i);
			   else
			   temp=001;
			   i++;
			   if(temp=='=')
			   {
                   char t[5]="11";
				   pDoc->result+='(';
				   pDoc->result+=t;
				   pDoc->result+=" ,  ";
				   pDoc->result+="  ==  ";
				   pDoc->result+=')';
				   pDoc->result+='\r';
				   pDoc->result+='\n';
				   result[r][0]=11;
				   result[r][1]=flag;
				   r++;
				   //chuli
				  if(i<j)
				  temp=(char)str.GetAt(i);
				  else
				  temp=001;
			      i++;
			   }
			   else
			   {
				   char t[5]="14";
				   pDoc->result+='(';
				   pDoc->result+=t;
				   pDoc->result+=" ,  ";
				   pDoc->result+="  =  ";
				   pDoc->result+=')';
				   pDoc->result+='\r';
				   pDoc->result+='\n';
				   result[r][0]=14;
				   result[r][1]=flag;
				   r++;
			   }
			   break;
		  case 001:
			   break;
		  default:
             char ch[10];
			 CBY2Doc* pDoc = GetDocument();
			 pDoc->result+="The Error in the ROW:";
			 itoa(flag,ch,10);
			 pDoc->result+=ch;
			 pDoc->result+='\r';
			 pDoc->result+='\n';         
		     if(i<j)
             temp=(char)str.GetAt(i);
			 else
			 temp=001;
			 i++;
			 break;
          
		}
	}//while(i<=j)
//	  this->MessageBox(pDoc->result);
//      GetEditCtrl().SetSel(j,j+100);   
//     GetEditCtrl().ReplaceSel(pDoc->result);   	  
	  result[r][1]=flag;
	  result[r][0]=1024;
	  Even_S();
	  (pView->GetEditCtrl()).SetWindowText(pDoc->result);
	  
}


char CBY2View::Check_alphabet(char *TT)
{
	int i=0;
	while(i<6)
	{
		if(TT==keyword[i])
		{
		  if(i==0) return '0';
		  if(i==1) return '1';
		  if(i==2) return '2';
		  if(i==3) return '3';
		  if(i==4) return '4';
		  if(i==5) return '5';
		}
		i++;
	}
    if(i==6)
	{
      return '6';
	}
	return -1;
}

//DEL char CBY2View::Check_error(int flag)
//DEL {
//DEL     
//DEL }

int CBY2View::Even_S()
{
    r=0;
	if(0==result[r][0])
	{ 
		r++;
		if(16==result[r][0])
		{
			r++;
			if(17==result[r][0])
			{
				r++;
				if(18==result[r][0])
				{
					r++;
					Even_A();
					if(19==result[r][0])
					{
						r++;
						if(1024==result[r][0])
						    finishi();
						else
							error(result[r][1],29);
					}//19
					else
					{
						error(result[r][1],19);
						return 0;
					}//else19
				}//18
				else
				{
					error(result[r][1],18);
					return 0;
				}//else18						    
			}//17
			else
			{
               error(result[r][1],17);
			   return 0;
			}//else17
		}//16
		else
		{
           error(result[r][1],16);
		   return 0;
		}//else16
	}//0
	else
	{
		error(result[r][1],0);
		return 0;
	}
}

int CBY2View::Even_A ()
{
    Even_B ();
	Even_C ();
	return 1;
}

int CBY2View::Even_B ()
{
    Even_D ();
	if(6==result[r][0])
	{
		r++;
        if(25==result[r][0])
		{
			r++;
		}//25
		else
		{
			error(result[r][1],25);
			return 0;
		}//else25
	}//6
	else
	{
		error(result[r][1],6);
		return 0;
	}
}

int CBY2View::Even_D ()
{
   if(1==result[r][0])
	   r++;
   else
	   if(2==result[r][0])
		   r++;
	   else
		   if(3==result[r][0])
			   r++;
		   else
		   {
			   error(result[r][1],1);
			   return 0;
		   }
		       
}

int CBY2View::Even_C ()
{
   switch(result[r][0])
   {
   case 1:
	   Even_B();
	   Even_C();
	   break;
   case 2:
       Even_B();
	   Even_C();
	   break;
   case 3:
	   Even_B();
	   Even_C();
	   break;
   case 4:
	   Even_G();
	   Even_C();
	   break;

   case 6:
	   Even_F();
	   Even_C();
	   break;
   case 19:
	   break;
   default:
	   error(result[r][1],30);
	   return 0;
   }
   return 1;
}

int CBY2View::Even_G ()
{
	if(4==result[r][0])
	{
		r++;
		if(16==result[r][0])
		{
			r++;
			Even_H();
			if(17==result[r][0])
			{
				r++;
				if(18==result[r][0])
				{
					r++;
					Even_C();
					if(19==result[r][0])
					{
						r++;
						Even_G1();
					}//19
					else
					{
						error(result[r][1],19);
						return 0;
					}//else19										
				}//18
				else
				{
					error(result[r][1],18);
			        return 0;
				}//else18
			}//17
			else
			{
			   error(result[r][1],17);
			   return 0;
			}//else17
		}//16
		else
		{
			   error(result[r][1],16);
			   return 0;
		}
	}//4
	else
	{
			error(result[r][1],4);
			return 0;
	}//else4
	return 1;
}

int CBY2View::Even_F ()
{
	if(6==result[r][0])
    {
		r++;
        if(14==result[r][0])
		{
			r++;
			Even_I();
			if(25==result[r][0])
			{
				r++;
			}//25
			else
			{
				error(result[r][1],25);
				return 0;
			}//else25
		}//14
		else
		{
			error(result[r][1],14);
			return 0;
		}//else14
	}//6
	else
	{
		error(result[r][1],6);
		return 0;
	}
	return 1;
}

int CBY2View::Even_I ()
{
    Even_J();
	Even_I1();
	return 1;
}

int CBY2View::Even_J ()
{
    Even_K();
	Even_J1();
	return 1;
}

int CBY2View::Even_K ()
{
    switch(result[r][0])
	{
	case 6:
		r++;
		break;
	case 7:
		Even_L();
		break;
	case 16:
		{
			r++;
			Even_I();
			if(17==result[r][0])
			{
				r++;
			}
			else
			{
				error(result[r][1],17);
				return 0;
			}
		}
		break;
	default:
		error(result[r][1],30);
		return 0;
	}
}

int CBY2View::Even_H ()
{
    Even_I();
	Even_N();
	Even_I();
	return 0;
}

int CBY2View::Even_L ()
{
	if(7==result[r][0])
    {
		r++;
		Even_L1();
	}
	else
	{
		error(result[r][1],7);
		return 0;
	}
}

int CBY2View::Even_N ()
{
   switch(result[r][0])
   {
    case 8:
	   r++;
	   break;
	case 9:
		r++;
		break;
	case 10:
		r++;
		break;
	case 11:
		r++;
		break;
	case 12:
		r++;
		break;
	case 13:
		r++;
		break;
	case 15:
		r++;
		break;
	default:
		error(result[r][1],30);
		return 0;
   }
}

int CBY2View::Even_G1 ()
{
   switch(result[r][0])
   {
	case 1:	  
	   break;
	case 2:	  
	   break;
    case 3:	  
	   break;
    case 4:	  
	   break;
	case 6:		
		break;
	case 19:
		break;
	case 5:
		{
		  r++;
		  if(18==result[r][0])
		  {
			  r++;
			  Even_C();
			  if(19==result[r][0])
			  {
				  r++;				  
			  }//19
			  else
			  {
				    error(result[r][1],19);
					return 0;
			  }//else19
		  }//18
		  else
		  {
			  error(result[r][1],18);
			  return 0;
		  }//else18
		}
		break;

	default:
		error(result[r][1],30);
		return 0;
   }
}

int CBY2View::Even_I1 ()
{
   switch(result[r][0])
   {
	case 8:		
		break;
	case 9:		
		break;
	case 10:	  
	   break;
	case 11:
		break;
	case 12:	
		break;
	case 13:	
		break;
	case 15:	
		break;
	case 17:	
		break;
	case 25:	
		break;
	case 20:
		{
			r++;
			Even_J();
			Even_I1();
		}
		break;
	case 21:
		{
			r++;
			Even_J();
			Even_I1();
		}
		break;
	default:
		error(result[r][1],30);
		return 0;
   }
}

int CBY2View::Even_J1 ()
{
   switch(result[r][0])
   {
	case 8:		
		break;
	case 9:		
		break;
	case 10:	  
	   break;
	case 11:
		break;
	case 12:	
		break;
	case 13:	
		break;
	case 15:	
		break;
	case 17:	
		break;
    case 20:	  
	   break;
	case 21:		
		break;
	case 22:
		{
			r++;
			Even_K();
			Even_J1();
		}
		break;
	case 23:
		{
			r++;
			Even_K();
			Even_J1();
		}
		break;
	case 25:
		break;
	default:
		error(result[r][1],30);
		return 0;
   }
}

int CBY2View::Even_L1 ()
{
   switch(result[r][0])
   {
	case 8:		
		break;
	case 9:		
		break;
	case 10:	  
	   break;
	case 11:
		break;
	case 12:	
		break;
	case 13:	
		break;
	case 15:	
		break;
	case 17:	
		break;
    case 20:	  
	   break;
	case 21:		
		break;
    case 22:	  
	   break;
	case 23:		
		break;
	case 24:
		{
			r++;
			if(7==result[r][0])
			{
			  r++;
			}
			else
			  error(result[r][1],17);
			  return 0;
		}
        break;
	case 25:
		break;
	default:
		error(result[r][1],30);
		return 0;
   }
}

void CBY2View::error(int flag,int type)
{
	char ch[10];
	itoa(flag,ch,10);
	CString re;
	switch(type)
	{
	case 0:
		re="Miss The main ";
		break;
	case 1:
		re="Miss The type:int,real,char";
		break;
	case 4:
		re="Miss The if";
		break;
	case 5:
		re="Miss The else";
		break;
	case 6:
		re="Miss The Variable";
		break;
	case 7:
		re="Miss The Number";
		break;
	case 8:
		re="Miss The Connection Symbol";
		break;
	case 14:
		re="Miss The = Symbol";
		break;
	case 16:
		re="Miss The ( Symbol";
		break;
	case 17:
		re="Miss The ) Symbol";
		break;
	case 18:
		re="Miss The { Symbol";
		break;
	case 19:
		re="Miss The } Symbol";
		break;
	case 20:
		re="Miss The + Symbol";
		break;
	case 21:
		re="Miss The - Symbol";
		break;
	case 22:
		re="Miss The * Symbol";
		break;
	case 23:
		re="Miss The / Symbol";
		break;
	case 24:
		re="Miss The . Symbol";
		break;
	case 25:
		re="Miss The ;";
		break;
	case 29:
		re="Donot Finish !!!";
	default:
		re="near the ";
		re+=ch;

	}
    CBY2Doc* pDoc = GetDocument();
	pDoc->result+="The Error is:";
    pDoc->result+=re;
	pDoc->result+=" In thr Row :";
    pDoc->result+=ch;
	pDoc->result+='\r';
	pDoc->result+='\n';
}

void CBY2View::finishi()
{
     CBY2Doc* pDoc = GetDocument();
	 pDoc->result+="Check Completely! Your Program have no error!";
	 pDoc->result+='\r';
	 pDoc->result+='\n';

}

⌨️ 快捷键说明

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