亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xlj.cpp

?? 條件語句if,then,else的簡單優先法,輸出三地址碼,顯示簡單優先矩陣.
?? CPP
字號:
#define N 100
#include<iostream.h>
#include<string.h>
#include<stdio.h>
 static char a[N];  /*存放輸入的語句*/
 static char str[N]; /*存放構成單詞符號的字符串*/
 static int b[N];
 static char copy[N][N];
 static char ch;
 static int i=0;
 static int j=0;
 static int m;
 static int n;
 int p;
 int h[14][14];
 int l[14][14];
struct list   //定義結點
{
  int data;
  list *next;
};
class stack//定義棧類
{
private:
list *ptr;
public:
stack()
{ ptr=NULL;
}
void push(int i);
int pop();
};
void stack::push(int x)
{   list *q=new list;
	q->data=x;
	q->next=ptr;
	ptr=q;
}
int stack:: pop()
{list *p;
int value;
value=ptr->data;
p=ptr;
ptr=ptr->next;
delete p;
return value;
}
//***************詞法分析程序***********************


 int word()
 {	 
  if((a[i]>=65&&a[i]<=90)||(a[i]>=97&&a[i]<=122))
  {/* 識別標識符和關鍵字*/
   ch=a[i];
   str[j]=ch;
   i++;
   j++;
  while((a[i]>=65&&a[i]<=90)||(a[i]>=97&&a[i]<=122 )||(a[i]>=48&&a[i]<=57))
   {ch=a[i];
   str[j]=ch;
   i++;
   j++;
   }
    if(a[i]!=' ')
    i--;/*使i回調*/
  if(strcmp(str,"if")==0||strcmp(str,"IF")==0)
  return(2);
  else if(strcmp(str,"then")==0||strcmp(str,"THEN")==0)
  return(3);
  else if(strcmp(str,"else")==0||strcmp(str,"ELSE")==0)
  return(4);
  else if(strcmp(str,"AND")==0||strcmp(str,"and")==0)
  return(5);
  else if(strcmp(str,"or")==0||strcmp(str,"OR")==0)
  return(6);
  else if(strcmp(str,"not")==0||strcmp(str,"NOT")==0)
  return(7);
  else return(1);
 } 
 else if(a[i]>=48&&a[i]<=57)
 {/*識別常數*/
   ch=a[i];
   str[j]=ch;
   i++;
   j++;
  while((a[i]>=48&&a[i]<=57)&&i<N)
   {
	ch=a[i];
   str[j]=ch;
   i++;
   j++;
   }
   if(a[i]!=' ')
   i--;
   return(8);
 }
 else if(a[i]=='<')
 {ch=a[i];
   str[j]=ch;
	 i++;
	 j++;
 if(a[i]=='=')
  {ch=a[i];
   str[j]=ch;
  return(10);
 }
 else
  { i--;
   return(9);
  }
} 
 else if(a[i]=='>')
 {ch=a[i];
   str[j]=ch;
	 i++;
	 j++;
 if(a[i]=='=')
  {ch=a[i];
   str[j]=ch;
  return(12);
 }
 else
  { i--;
   return(11);
  }
}
 else if(a[i]=='!')
 {ch=a[i];
   str[j]=ch;
	 i++;
	 j++;
 if(a[i]=='=')
  {ch=a[i];
   str[j]=ch;
  return(13);
 }
 else
  { i--;
   return(-1);
  }
}
else if(a[i]=='=')
 {ch=a[i];
   str[j]=ch;
	 i++;
	 j++;
 if(a[i]=='=')
  {ch=a[i];
   str[j]=ch;
  return(15);
 }
  else
  { i--;
   return(14);
  }
}
else if(a[i]=='(')
   {ch=a[i];
   str[j]=ch;
   return(17);
   }
 else if(a[i]==')')
   {ch=a[i];
   str[j]=ch;
  return(18);
   }
 else if(a[i]==' ')
 {
	 return(16);
 }
 else
	 return (-1);
}
int bn()
 { int k=0;
 while(k<strlen(a))
 {
 b[n]=word();
 if(b[n]==16)
 { i++;
   k=i;
   n--;
 }
 else if(b[n]!=-1)
 { 
   i++;
   k=i;
   strcpy(copy[n],str);
   cout<<str<<"<"<<b[n]<<">"<<"  ";
 }
 else
 {
  cout<<endl;
  cout<<"error!詞法分析器分析到第"<<n+1<<"個單詞符號這里發現錯誤!"<<endl;
  return (-1);
  break;
 }
  n++; 
for(m=0;m<N;m++)
 str[m]='\0';
 j=0;
 }
 }
//*****************語法分析程序*******************


 stack A,B;
 void inserth(int i,int j)
 {if(!h[i][j])
 {
  h[i][j]=1;
 A.push(h[i][j]);
 }
 }
void insertl(int i,int j)
 {if(!l[i][j])
 {
   l[i][j]=1;
  B.push(l[i][j]);
 }
 }
int sentence_judge()
{
 if(b[0]==2)
 {
	 if(b[1]==1)
 {
		 if(b[2]==3)
 {
			 if(b[3]==1)
 {
				 if(b[4]==14)
 {
					 if(b[5]==8)
 {
						 if(b[6]==4)
  {
							 if(b[7]==1)
 {
								 if(b[8]==14)
 {
									 if(b[9]==8)
    return (1);
 else 
   return (-1);
 }
 else 
    return (-1);
 }
else 
    return (-1);
 }
 else 
    return (-1);
 }
else 
    return (-1);
 }
else 
    return (-1);
 }
else 
   return (-1);
 }
else if((b[2]==9)||(b[2]==11)||(b[2]==15))
 {
			 if(b[3]==1)
 {
				 if(b[4]==3)
 {
					 if(b[5]==1)
 {
						 if(b[6]==14)
  {
							 if(b[7]==8)
 {
								 if(b[8]==4)
 {
									 if(b[9]==1)
  {
									 if(b[10]==14)
 	 {
									 if(b[11]==8)								 
                                    return (2);
 else 
   return (-1);
 }
 else 
   return (-1);
 }
 else 
   return (-1);
 }
 else 
    return (-1);
 }
else 
    return (-1);
 }
 else 
    return (-1);
 }
else 
    return (-1);
 }
else 
    return (-1);
 }
else 
   return (-1);
 }
 else 
    return (-1);
	 }
	 else 
		 return(-1);
 }
 else 
	 return(-1);
}
 void sentence()
 {
  char c[][N]={"S→if E then B else B","E→id1 A id2|id1","A→<|>|==","B→id1=num"};
  char d[][N]={"S","E","A","B","if","then","else","id1","id2","<",">","==","=","num"};//非終結符4個,終結符10個
  char e[][N][N]={{"S","→","if","E","then","B","else","id1","=","num","#"},{"E","→","id1","A", "id2","|","id1","#"},{"A","→","<","|",">","|","==","#"},{"B","→","id1","=","num","#"}};
  int  f[N][N];
  int  g[N][N];//存放關系,1代表=關系,2代表<關系,3代表>關系
  int k,n;
  i=0;
  g[1][5]=1;g[2][8]=1;
  g[3][6]=1;g[4][2]=1;
  g[4][7]=2;g[5][3]=1;
  g[5][7]=2;g[6][3]=1;
  g[6][7]=2;g[7][2]=1;
  g[7][5]=3;g[7][9]=2;
  g[7][10]=2;g[7][11]=2;
  g[7][12]=1;g[8][5]=3;
  g[9][8]=3;g[10][8]=3;
  g[11][8]=3;g[11][13]=1;
  g[13][6]=3;
  cout<<"條件語句的文法如下:"<<endl;
  for(i=0;i<4;i++)
	  cout<<c[i]<<endl;
  
  //**********求非終結符號的FIRST集和LAST集***************


   for(j=0;j<4;j++)
 {
	for(i=0;i<4;i++)
	{	if(strcmp(e[j][0],d[i])==0)
		for(k=0;k<14;k++)
				if(strcmp(e[j][2],d[k])==0)
           				inserth(i,k);
	}                                           
 }
 for(j=0;j<4;j++)
  {       
	  for(k=0;k<8;k++)
	  {
	  if(strcmp(e[j][k],"|")==0)
	  {
	    for(i=0;i<4;i++)
		{	
			if(strcmp(e[j][0],d[i])==0)
		      for(m=0;m<14;m++)
			     if(strcmp(e[j][k+1],d[m])==0)
	                inserth(i,k+1);
		}
	 }				  
	 }
  }
    for(j=0;j<4;j++)
 {
	n=0;
	while(strcmp(e[j][n],"#")!=0)
		n++;
	for(i=0;i<4;i++)
	{	if(strcmp(e[j][0],d[i])==0)
		for(k=0;k<14;k++)
		{
			if(strcmp(e[j][n-1],d[k])==0)
           			insertl(i,k);
		}
	}
 }
 for(j=0;j<4;j++)
  {       
	  for(k=0;k<8;k++)
	  {
	  if(strcmp(e[j][k],"|")==0)
	  {
	    for(i=0;i<4;i++)
		{	
			if(strcmp(e[j][0],d[i])==0)
		      for(m=0;m<14;m++)
			     if(strcmp(e[j][k-1],d[m])==0)
	                insertl(i,k-1);
		}
	 }				  
	 }
 }
 //*******************利用FIRST集和LAST集求出優先關系****************************


 for(j=0;j<4;j++)
 {
	 for(i=2;i<10;i++)
 {
		 if(strcmp(e[j][i],"|")!=0&&strcmp(e[j][i+1],"|")!=0&&strcmp(e[j][i+1],"#"))
		 {
			 for(k=0;k<14;k++)
		      if(strcmp(e[j][i],d[k])==0)
			   f[j][k]=1;
		 }
       	
	 }
 }
 cout<<"構造簡單優先關系表如下:"<<endl;
 cout<<"    ";
 for(i=0;i<14;i++)
	 cout<<d[i]<<" ";
 cout<<endl;
 cout<<d[0]<<endl;
 cout<<d[1]<<"               "<<"="<<endl;
 cout<<d[2]<<"                            "<<"="<<endl;
 cout<<d[3]<<"                    "<<"="<<endl;
 cout<<d[4]<<"    "<<"="<<"                   "<<"<"<<endl;
 cout<<d[5]<<"      "<<"="<<"               "<<"<"<<endl;
 cout<<d[6]<<"      "<<"="<<"               "<<"<"<<endl;
 cout<<d[7]<<"     "<<"="<<"        "<<">"<<"              "<<"<"<<" "<<"<"<<" "<<"<"<<"  "<<"="<<endl;
 cout<<d[8]<<"              "<<">"<<endl;
 cout<<d[9]<<"                            "<<">"<<endl;
 cout<<d[10]<<"                            "<<">"<<"            "<<"="<<endl;
 cout<<d[11]<<"                           "<<">"<<endl;
 cout<<d[12]<<endl;
 cout<<d[13]<<"              "<<">"<<endl;
 if(sentence_judge()!=-1) //sentence_judge()進行規約
	 cout<<"輸入的句子符合語法要求!";
else
	 cout<<"輸入的句子不符合語法要求!";
}
//***********************中間代碼生成,輸出三地址碼*******************************


void code()
{ 
   if(sentence_judge()==1)
   {
	   cout<<"L1: "<<"if "<<copy[1]<<"   goto L2\n";
       cout<<"                   goto L3\n";
	   cout<<"L2: "<<copy[3]<<copy[4]<<copy[5]<<"\n";
	   cout<<"             goto Lnext\n"<<endl;
	   cout<<"L3: "<<copy[7]<<copy[8]<<copy[9]<<"\n";
	   cout<<"              goto Lnext\n"<<endl;
	  cout<<"Lnext:\n"<<endl;  
   }
   else
	   if(sentence_judge()==2)
	   {
       cout<<"L1:  if "<<copy[1]<<copy[2]<<copy[3]<<" goto L2\n";
	   cout<<"            goto L3\n"<<endl;
       cout<<"L2: "<<copy[5]<<copy[6]<<copy[7]<<"\n";
	   cout<<"         goto Lnext\n"<<endl;
       cout<<"L3: "<<copy[9]<<copy[10]<<copy[11]<<"\n";
	   cout<<"         goto Lnext\n"<<endl;
       cout<<"Lnext:\n "<<endl;
	   }
}
//******************************主函數*************************************


 int main()
{
 int value;
 cout<<"--------IF THEN ELSE-------"<<endl;
 cout<<"請輸入條件語句:"<<endl;
 gets(a); /*輸入一個句子*/
 cout<<endl;
 cout<<"詞法分析分析出的單詞及其對應的編碼如下:"<<endl;
 value=bn();
 cout<<endl<<endl;
 if(value!=-1)
 {
 sentence();
 }
 cout<<endl;
  if(sentence_judge()!=-1)
  {
	  cout<<"進行語義分析輸出的三地址碼如下:"<<endl;
      code();
  }
return 0;
}
































































?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产精品亚洲专区无| 99久久精品免费精品国产| 国产在线视频精品一区| 在线视频欧美精品| 国产欧美日本一区视频| 午夜欧美电影在线观看| 不卡的av网站| 国产亚洲精品aa| 日本欧美一区二区三区| 在线观看日产精品| 国产午夜精品理论片a级大结局| 日韩精品亚洲一区| 91久久一区二区| 国产精品萝li| 国产精品主播直播| 欧美成人精品福利| 日韩va亚洲va欧美va久久| 色视频欧美一区二区三区| 久久精品在线免费观看| 美国一区二区三区在线播放| 欧美日韩卡一卡二| 亚洲午夜私人影院| 一本到不卡免费一区二区| 国产日韩欧美高清在线| 国产一区二区看久久| 欧美成人vr18sexvr| 日韩av一区二区三区四区| 欧美午夜精品电影| 亚洲福利一二三区| 欧美丝袜丝交足nylons图片| 亚洲激情六月丁香| 91搞黄在线观看| 亚洲国产三级在线| 欧美日韩国产高清一区二区三区 | 日韩欧美中文字幕精品| 亚洲成人一区二区| 欧美精选一区二区| 美女爽到高潮91| 亚洲精品在线网站| 国产精品一品视频| ...xxx性欧美| 色婷婷综合久久久中文一区二区| 中文字幕日韩欧美一区二区三区| 99综合影院在线| 一区二区三区精品在线| 在线不卡一区二区| 紧缚捆绑精品一区二区| 国产人妖乱国产精品人妖| 成人美女在线视频| 依依成人精品视频| 日韩一区二区免费高清| 狠狠色伊人亚洲综合成人| 久久精品无码一区二区三区| 99久久综合99久久综合网站| 亚洲精品菠萝久久久久久久| 777午夜精品免费视频| 精品一区二区av| 亚洲欧美偷拍三级| 欧美一级二级三级蜜桃| 国产91对白在线观看九色| 一区二区三区成人在线视频| 欧美一二三区精品| www.一区二区| 人人精品人人爱| 国产精品私房写真福利视频| 欧美丝袜第三区| 国产精品一卡二卡在线观看| 亚洲欧美偷拍另类a∨色屁股| 欧美日韩精品二区第二页| 国产一区二区0| 亚洲综合成人网| 国产蜜臀av在线一区二区三区| 在线欧美小视频| 国产精品一区不卡| 丝袜亚洲另类丝袜在线| 国产精品网站在线观看| 91精品国产手机| 91老师国产黑色丝袜在线| 久久精品国产精品亚洲综合| 亚洲欧美日韩一区| 精品久久99ma| 欧美无砖砖区免费| 丁香桃色午夜亚洲一区二区三区| 天天综合天天综合色| 国产精品不卡在线观看| 精品国产一区久久| 欧美自拍丝袜亚洲| 成人精品在线视频观看| 日韩av电影免费观看高清完整版 | 91碰在线视频| 国产精品中文字幕欧美| 男女性色大片免费观看一区二区| 国产精品国产三级国产有无不卡| 日韩欧美国产一区在线观看| 在线亚洲免费视频| www.av亚洲| 粉嫩嫩av羞羞动漫久久久 | 欧美精选午夜久久久乱码6080| 成人国产精品免费观看动漫| 久久成人久久鬼色| 亚洲国产你懂的| 亚洲女同一区二区| 中文字幕中文字幕中文字幕亚洲无线 | 日韩中文字幕av电影| 亚洲欧美偷拍卡通变态| 亚洲国产精品激情在线观看| 欧美大片一区二区三区| 欧美精品久久久久久久多人混战| 91黄视频在线| 91久久国产综合久久| 色综合久久中文综合久久97| 成人av网址在线| 成人性生交大合| 国产成人免费在线观看| 国产酒店精品激情| 国产精品888| 从欧美一区二区三区| 成人中文字幕在线| 成人av网站免费观看| av不卡免费电影| 色综合久久天天综合网| 91极品视觉盛宴| 欧美日韩不卡在线| 欧美一二三在线| 久久久国产午夜精品| 国产日韩欧美综合一区| 国产精品国产三级国产三级人妇 | 一区二区三区中文字幕电影 | 2021久久国产精品不只是精品| 精品嫩草影院久久| xnxx国产精品| 国产精品激情偷乱一区二区∴| 亚洲桃色在线一区| 亚洲第一主播视频| 美女在线视频一区| 成人综合婷婷国产精品久久 | 国产999精品久久| 99久久er热在这里只有精品15 | 一本到高清视频免费精品| 欧美日韩一区二区三区不卡| 日韩一区二区在线观看| 国产午夜精品福利| 一区二区三区视频在线看| 天堂精品中文字幕在线| 国产美女精品一区二区三区| 99国产精品久久久久久久久久 | 日韩欧美一级特黄在线播放| 久久久91精品国产一区二区精品| 国产欧美精品日韩区二区麻豆天美| 国产精品网友自拍| 午夜视频一区二区| 国产真实精品久久二三区| 色综合一个色综合亚洲| 日韩欧美国产精品| 中文字幕一区av| 青青青伊人色综合久久| 风流少妇一区二区| 欧美久久久久久久久| 国产精品无人区| 麻豆成人在线观看| 91视视频在线观看入口直接观看www | 麻豆精品在线播放| 不卡的av在线播放| 欧美一级片在线看| 亚洲色图在线视频| 狠狠色综合播放一区二区| 91成人在线观看喷潮| 久久综合色8888| 日一区二区三区| 91网站在线播放| 久久综合色播五月| 婷婷综合在线观看| 91色在线porny| 国产午夜亚洲精品理论片色戒| 亚洲福中文字幕伊人影院| 777a∨成人精品桃花网| 日本一区二区三区电影| 老司机一区二区| 欧美久久久一区| 亚洲精品五月天| 波多野结衣一区二区三区 | 欧美日韩一区二区三区在线看 | 日韩午夜激情av| 亚洲综合视频在线| 99精品1区2区| 国产精品国产三级国产普通话三级| 精品午夜久久福利影院 | 久久久久久99久久久精品网站| 午夜精品在线视频一区| 在线免费视频一区二区| 亚洲视频每日更新| 成人免费视频免费观看| 久久天堂av综合合色蜜桃网 | 亚洲午夜精品久久久久久久久| 成人黄色小视频| 国产精品五月天| 成年人国产精品| 欧美国产日韩亚洲一区| 国产成人亚洲综合色影视| 国产色一区二区|