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

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

?? 算符優先.txt

?? 求算符優先分析器 有待改進 還未實現功能
?? TXT
字號:



#include <stdio.h> 

void find_firstvt(); 


struct expression 
{ char vn; 
char vright[15]; 
}expr[15]; 



struct exp_first 
{ 
char name; 
char value[15] ; 
} ; 

int tablenum=0; 
char vn[15]; 
char vt[10*15]; 
char rightvn[15]; 
char rightvnlast[15]; 
struct exp_first cando[15]; 
struct exp_first candolast[15]; 
int num; 

struct exp_first vnname[15]; 
struct exp_first lastvt[15]; // 
void last(); 
void table(); 
int mysign=0; 
int sign2=0; 
int sign3=0; 
int mysign1=0; 
int sign4=0; 
int sign5=0; 
char fuhaotable[15][15]; 
char newvt[15]; 

main() 
{ 
int k; 
int i; 
char a[10]; 
int s; 
int sign=0; 
int biaoji=0; 
int t=0; 
int v=0; 
int j; 

printf("*******************************說明*******************************\n"); 
printf("注意!!!!本文法不支持一式含有多個產生式,例如:S->A|b|c\n請輸入時將其分解成三個表達式:S->A ; S->b; S->c\n"); 
printf("同時,要求輸入產生式時,先輸入產生式左部,回車后再輸入產生式右部 \n"); 
printf("*******************************************************************\n"); 
printf("請輸入你的產生式條數:" ); 
scanf(">d",&amt;num); 

for(i=0;i<num;i++) 
{ 
printf("請輸入第>d個產生式的[左部],然后回車:\n",i+1); 
scanf(">s",&amt;expr[i].vn); 
printf(" ->"); 
printf("[右部]",i+1); 
scanf(">s",expr[i].vright); 

} 


//存非終結符 
for(i=0;i<num;i++) 
{ 
if(expr[i].vn>64&amt;expr[i].vn<91) 
vn[i]=expr[i].vn; 
else { printf("error"); 
exit(0);} 
} 
for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
{ if((vn[i] ==vn[j] )&amt;&amt;(i<j)) 
vn[j]=0; 
}} 

//存終結符 以及右部非終結符 
for(i=0;i<num;i++) 
{ 
for(j=0;j<10;j++) 
{ 
for(s=0;s<num;s++) 
{ 
if((vn[s]==expr[i].vright[j])&amt;&amt;(vn[s]!=NULL)&amt;&amt;(expr[i].vright[j]!=NULL)) 
{biaoji=1; 
//rightvn 
rightvn[v]=expr[i].vright[j]; 
rightvnlast[v]=expr[i].vright[j]; 
v++;} 
} 
if(biaoji==0) 
{ 

if(t==0) 
{ 
vt[t]=expr[i].vright[j]; 
t++; 
} 
else 
{ 
for(k=0;k<t;k++) 
{ 
if((vt[k]==expr[i].vright[j])) 
{sign=1; } 
} 
if(sign==0) 
{ vt[t]=expr[i].vright[j]; 
t++; 
} 
sign=0; 
} 
} 
biaoji=0; 
} } 


find_firstvt(); //輸出文法的終結符集,非終結符集 
xiaolian(); //求各非終結符的FIRSTVT集 
last(); //求各非終結符的LASTVT集 
table(); //判定文法是否為算符優先文法,如是,則輸出構造出的算符優先關系表 
} 



void find_firstvt() //輸出文法的終結符集,非終結符集 
{ 
int i,j; 
printf(" *********************本文法中終結符為:***********************************\n"); 
for(i=0;i<15;i++) 
{ 
if(vt[i]!=0) { 
newvt[tablenum]=vt[i]; 
tablenum+=1; 
printf(" >c,",vt[i]); 
} 
} 
printf(" \n"); 
printf("********* ****************本文法中的非終結符為:**************************\n"); 
for(i=0;i<15;i++) 
{ 
if(vn[i]!=0) 
printf(" >c ,",vn[i]); 

} 
printf(" \n"); 
}//最后的括號 



xiaolian( ) //求各非終結符的FIRSTVT集 
{ 
int i,j,k,sign=0,v,a,h,c=0; 
int r; 
//kaishi 
for(i=0;i<num;i++) 
{ 
vnname[i].name=expr[i].vn; 


//求出第一個是終結符的表達式的 
for(k=0;k<15;k++) 
{ 
if(expr[i].vright[0]==vt[k]) 
{ 

vnname[i].value[0] =vt[k]; 



} // 求出第一個是終結符的表達式的,結束 

if ((expr[i].vright[0]==vn[k])&amt;&amt;(expr[i].vright[1]!=0) ) 
{ 
vnname[i].value[0] =expr[i].vright[1]; 
} //qiu第二個是終結符的 

if((expr[i].vright[0]==vn[k])&amt;&amt;(expr[i].vright[1]==0)) 
{ 
vnname[i].value[0] =vn[k]; 
} // qiu 右部只有一個非終結符的 
} } // for的括號 




k=1; 

for(i=0;i<num;i++) 
{ 

for(j=0;j<num;j++) 

{ 
if((vnname[i].name==vnname[j].name)&amt;&amt;(i!=j)) 
{ vnname[i].value[k]=vnname[j].value[0]; 
k++; 

} 
} 
} 


//唯一化 

for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
{ if((vnname[i].name==vnname[j].name)&amt;&amt;(i<j)) 
vnname[j].name=0; 
}} 

//rightvn's 
for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
{ if((rightvn[i]==rightvn[j] )&amt;&amt;(i<j)) 
rightvn[j]=0; 
}} 


//將右部的非終結符轉化為終結符 

AA: 
sign3=0; 
for(i=0;i<num;i++) { 
for(j=0;j<num;j++) 
{ 
if((vnname[i].name==rightvn[j])&amt;&amt;(rightvn[j]!=0)) 
{ 
for(k=0;k<15;k++){ 
for(v=0;v<num;v++){ 
if((vnname[i].value[k]==vn[v])&amt;&amt;(vn[v]!=0)) 
{mysign=1; } } } 

if(mysign==0) 
{cando[c].name=vnname[i].name; 
for(a=0;a<num;a++) 
{if(vnname[i].value[a]!=0) 
{cando[c].value[a]=vnname[i].value[a]; 

}} 
r=c; 
c++;} 
for(h=0;h<num;h++){ 
if((rightvn[h]==cando[r].name)&amt;&amt;(rightvn[h]!=0)) 
rightvn[h]=0;} 
mysign=0; }} 
} 



for(i=0;i<num;i++){ 
for(j=0;j<15;j++) 
{ for(k=0;k<num;k++){ 
if((vnname[i].value[j]==cando[k].name)&amt;&amt;(cando[k].name!=0)) 
{ sign2=1; 
} 

if(sign2==1){ 
for(a=0;a<15;a++){ 
if (cando[k].value[a]!=0) { 
for(h=0;h<15;h++) { 
if((vnname[i].value[h]==cando[k].name)||(vnname[i].value[h]==0)) 
{vnname[i].value[h]=cando[k].value[a]; 
break;}} } } 
} 
sign2=0; 
}} } 

for(h=0;h<num;h++){ 
if(rightvn[h]!=0) 
sign3=1;} 
if(sign3==1) goto AA; 

//將firstvt唯一化 
for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
for(k=0;k<15;k++){ 
{ if((vnname[i].value[j]==vnname[i].value[k])&amt;&amt;(j<k)) 
vnname[i].value[k]=0; 
}} } 

//output 
printf("**************************輸出firstvt:********************\n"); 

for(i=0;i<num;i++) 
{if(vnname[i].name!=0){ 

printf("firstvt:>c ",vnname[i].name); 
printf("{"); 
for(j=0;j<15;j++) 
{ if(vnname[i].value[j]!=0) 
printf(">c,",vnname[i].value[j]); 
} 
printf("}"); 
printf("\n"); 
}} 


}//lastkuohao 

//##################################################################### 

void last()//計算lastvt 
{ 

int i,j,k,sign=0,v,a,h,c=0; 
int r; int la; 




///kaishi 
for(i=0;i<num;i++) 
{ 
lastvt[i].name=expr[i].vn; 
for(j=0;j<15;j++) { 
la=j+1; 
//求出zuihou一個是終結符的表達式的 
for(k=0;k<15;k++) 
{ 
if((expr[i].vright[j]==vt[k])&amt;&amt;(expr[i].vright[j+1]==0) &amt;&amt;(vt[k]!=0)) 
{ 

lastvt[i].value[0] =vt[k]; 



} // 求出第一個是終結符的表達式的,結束 




if ((expr[i].vright[j]==vn[k])&amt;&amt;(expr[i].vright[la]==0)&amt;&amt;(vn[k]!=0) ) 
{ 


lastvt[i].value[0] =expr[i].vright[j-1]; 
} //qiu第二個是終結符的 


if((expr[i].vright[0]==vn[k])&amt;&amt;(expr[i].vright[1]==0)) 
{ 
lastvt[i].value[0] =vn[k]; 
} // qiu 右部只有一個非終結符的 


} 
} } // for的括號 




k=1; 
//last[0].lastname=vnname[0]; 
for(i=0;i<num;i++) 
{ 

for(j=0;j<num;j++) 

{ //if() 
if((lastvt[i].name==lastvt[j].name)&amt;&amt;(i!=j)) 
{ lastvt[i].value[k]=lastvt[j].value[0]; 
k++; 

} 
} 
} 




//唯一化 

for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
{ if((lastvt[i].name==lastvt[j].name)&amt;&amt;(i<j)) 
lastvt[j].name=0; 
}} 

//rightvn's 
for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
{ if((rightvnlast[i]==rightvnlast[j] )&amt;&amt;(i<j)) 
rightvnlast[j]=0; 
}} 

BB: 
sign5=0; 
for(i=0;i<num;i++) { 
for(j=0;j<num;j++) 
{ 
if((lastvt[i].name==rightvnlast[j])&amt;&amt;(rightvnlast[j]!=0)) 
{ 
for(k=0;k<15;k++){ 
for(v=0;v<num;v++){ 
if((lastvt[i].value[k]==vn[v])&amt;&amt;(vn[v]!=0)) 
{mysign1=1; } } } 

if(mysign1==0) 
{candolast[c].name=lastvt[i].name; 
for(a=0;a<num;a++) 
{if(lastvt[i].value[a]!=0) 
{candolast[c].value[a]=lastvt[i].value[a]; 

}} 
r=c; 
c++;} 
for(h=0;h<num;h++){ 
if((rightvnlast[h]==candolast[r].name)&amt;&amt;(rightvnlast[h]!=0)) 
rightvnlast[h]=0;} 
mysign1=0; }} 
} 


for(i=0;i<num;i++){ 
for(j=0;j<15;j++) 
{ for(k=0;k<num;k++){ 
if((lastvt[i].value[j]==candolast[k].name)&amt;&amt;(candolast[k].name!=0)) 
{ sign4=1; 
} 

if(sign4==1){ 
for(a=0;a<15;a++){ 
if (candolast[k].value[a]!=0) { 
for(h=0;h<15;h++) { 
if((lastvt[i].value[h]==candolast[k].name)||(lastvt[i].value[h]==0)) 
{lastvt[i].value[h]=candolast[k].value[a]; 
break;}} } } 
} 
sign4=0; 
}} } 

for(h=0;h<num;h++){ 
if(rightvnlast[h]!=0) 
sign5=1;} 
if(sign5==1) goto BB; 

//將lastvt唯一化 
for(i=0;i<num;i++) 
{for(j=0;j<num;j++) 
for(k=0;k<15;k++){ 
{ if((lastvt[i].value[j]==lastvt[i].value[k])&amt;&amt;(j<k)) 
lastvt[i].value[k]=0; 
}} } 


printf("***************************輸出lastvt:******************************\n"); 

for(i=0;i<num;i++) 
{if(lastvt[i].name!=0){ 

printf(" lastvt:>c ",lastvt[i].name); 
printf("{"); 
for(j=0;j<15;j++) 
{ if(lastvt[i].value[j]!=0) 
printf(">c , ",lastvt[i].value[j]); 
} 
printf("}"); 
printf("\n"); 
}} 

} 







//判定文法是否為算符優先文法 
//,如是,生成算符優先關系表 

void table() 
{ int i,j,k,v,h,w,a; 
int b,c; 
//table 初始花 
for(h=0;h<tablenum;h++){ 

{ 

fuhaotable[0][h+1]=newvt[h]; 
fuhaotable[h+1][0]=newvt[h];} 
} 


for(i=0;i<num+1;i++) 
{ 
for(j=0;j<15;j++) 
{for(k=0;k<num+1;k++) 
{ for(v=0;v<tablenum+1;v++) 
{//如果右部只有一個非終結符 
if((expr[i].vright[j]==vn[k])&amt;&amt;(expr[i].vright[j+1]==0)&amt;&amt;(vn[k]!=0)&amt;&amt;(j==0)); 
//如果右部只有一個終結符 
if((expr[i].vright[j]==vn[k])&amt;&amt;(expr[i].vright[j+1]==0)&amt;&amt;(vn[k]!=0)&amt;&amt;(j==0)); 
// 求出“〉”關系的 

if((expr[i].vright[j]==lastvt[k].name)&amt;&amt;(expr[i].vright[j+1]==newvt[v])&amt;&amt;(lastvt[k].name!=0)&amt;&amt;(newvt[v]!=0)) 
{for(h=0;h<tablenum+1;h++){ 

for(a=0;a<15;a++){ 

if((fuhaotable[h][0]==lastvt[k].value[a])&amt;&amt;(lastvt[k].value[a]!=0)) 
{ for(w=0;w<tablenum+1;w++) 
{if((fuhaotable[0][w]==newvt[v])&amt;&amt;(newvt[v]!=0)) 
{ 
if(fuhaotable[h][w]==0) 


fuhaotable[h][w]='>'; 
else {printf("本文法不是算符優先文法!!"); 
goto END;} 
} 
} 
} // } 
}} 
} 
// 
//求出“<”關系的 
// 

// 
if((expr[i].vright[j]==vnname[k].name)&amt;&amt;(expr[i].vright[j-1]==newvt[v])&amt;&amt;(vnname[k].name!=0)&amt;&amt;(newvt[v]!=0)&amt;&amt;(j!=0)) 
{for(h=0;h<tablenum+1;h++){ 


if((fuhaotable[h][0]==newvt[v])&amt;&amt;(newvt[v]!=0)) 
{ 
for(w=0;w<tablenum+1;w++) 
{ for(a=0;a<15;a++) 
{ 
if((fuhaotable[0][w]==vnname[k].value[a])&amt;&amt;(vnname[k].value[a]!=0)) 
{ 
if(fuhaotable[h][w]==0) 
fuhaotable[h][w]='<'; 
else {printf("本文法不是算符優先文法!!"); 
goto END;} 
} 
} 
} 
}} 
} 
//求出"="關系的 
if((expr[i].vright[j]==newvt[v])&amt;&amt;(expr[i].vright[j+2]==newvt[k])&amt;&amt;(newvt[k]!=0)&amt;&amt;(newvt[v]!=0)) 
{for(h=0;h<tablenum+1;h++){ 

// for(a=0;a<15;a++) 
{ if((fuhaotable[h][0]==newvt[v])&amt;&amt;(newvt[v]!=0)) 
{ 
for(w=0;w<tablenum+1;w++) 
{ 
if((fuhaotable[0][w]==newvt[k])&amt;&amt;(newvt[k]!=0)) 
{ 
if(fuhaotable[h][w]==0) 
fuhaotable[h][w]='='; 
else {printf("本文法不是算符優先文法!!"); 
goto END;} 

} 
} 
} 
}} 
} 


}}} } //for de 

//output 
printf("############################得到算符優先關系表如下:#########################\n "); 
for(h=0;h<tablenum+1;h++){ 
for(w=0;w<tablenum+1;w++) { 


printf(" >c ",fuhaotable[h][w] ) ;} 
printf("\n-------------------------------------------------\n"); 
} 
END:; 
} //table 的括號 






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲www| 久久伊人中文字幕| 一区二区三区自拍| 一本大道久久精品懂色aⅴ| 国产精品久久久久四虎| 丁香亚洲综合激情啪啪综合| 中文字幕不卡在线| 91成人看片片| 石原莉奈在线亚洲三区| 精品人伦一区二区色婷婷| 国产一区二区成人久久免费影院| 国产欧美精品一区二区三区四区 | 亚洲黄色小说网站| 欧美麻豆精品久久久久久| 蜜臀av性久久久久蜜臀av麻豆| 久久老女人爱爱| jiyouzz国产精品久久| 亚洲狠狠爱一区二区三区| 日韩一级高清毛片| 国产精品99久久久久久久vr| 亚洲三级理论片| 日韩亚洲国产中文字幕欧美| 国产成人午夜视频| 亚洲一区二区四区蜜桃| 日韩你懂的在线观看| av在线播放不卡| 蜜桃视频一区二区三区在线观看| 欧美国产乱子伦| 91精品国产综合久久久久久久久久 | 欧美一区欧美二区| 91在线无精精品入口| 麻豆一区二区三区| 亚洲视频在线观看一区| 欧美sm极限捆绑bd| 91久久国产最好的精华液| 精品一区二区精品| 亚洲午夜精品在线| 国产精品私人影院| 日韩一区二区三区免费观看| 91视频91自| 国产精品一区二区免费不卡| 亚洲一区二区精品3399| 久久久久综合网| 欧美精品在线视频| 99久久精品免费精品国产| 国内外成人在线| 亚洲成av人**亚洲成av**| 亚洲国产激情av| 欧美电视剧免费全集观看| 欧美性猛片xxxx免费看久爱| 国产老肥熟一区二区三区| 日韩不卡免费视频| 亚洲一区二区精品久久av| 国产精品沙发午睡系列990531| 日韩美女一区二区三区四区| 色综合久久综合网97色综合| 国产成人精品亚洲777人妖| 麻豆高清免费国产一区| 婷婷六月综合网| 亚洲黄色性网站| 中文字幕一区在线观看| 日本一区二区电影| 久久午夜电影网| 精品日产卡一卡二卡麻豆| 91精品国产综合久久香蕉的特点| 欧美日韩在线播| 欧美在线视频不卡| 一本到三区不卡视频| 色综合天天综合网天天看片| www.亚洲激情.com| 色综合久久久久网| 色综合久久精品| 91在线国产观看| 色域天天综合网| 在线日韩av片| 777亚洲妇女| 欧美成人在线直播| 日韩免费视频线观看| 欧美xxx久久| 久久久久久日产精品| 久久亚洲综合色| 国产精品午夜免费| 亚洲免费成人av| 亚洲成人第一页| 久久国产精品99久久人人澡| 极品少妇xxxx偷拍精品少妇| 国产麻豆91精品| 成人av综合在线| 91猫先生在线| 欧美一区欧美二区| 国产女同性恋一区二区| 中文字幕亚洲在| 亚洲国产精品久久久久婷婷884 | 日本一区中文字幕| 精品无码三级在线观看视频| 国产成人在线看| 欧美中文字幕一二三区视频| 91精品国产aⅴ一区二区| 久久精品综合网| 一区二区三区四区在线| 蜜桃av一区二区三区电影| 国产成人精品一区二区三区四区 | 国产免费久久精品| 亚洲一区二区三区在线看| 免费欧美日韩国产三级电影| 国产露脸91国语对白| 一本色道久久综合亚洲精品按摩| 欧美日韩高清一区二区三区| 欧美精品一区二区蜜臀亚洲| 国产精品天美传媒| 午夜精品久久久久久久蜜桃app| 久久精品免费看| 91在线免费播放| 日韩欧美一区在线| 亚洲日本韩国一区| 九一九一国产精品| 欧洲av一区二区嗯嗯嗯啊| 精品国产一二三区| 亚洲自拍都市欧美小说| 精品写真视频在线观看| 色欧美片视频在线观看| 日韩精品一区二区三区视频| 亚洲日本在线天堂| 国产精品一二三区在线| 欧美日韩精品一区二区在线播放| 国产女主播视频一区二区| 日韩精品久久理论片| av一二三不卡影片| 久久影视一区二区| 日日夜夜精品视频免费| 色综合久久99| 国产片一区二区| 麻豆精品视频在线观看视频| 色综合一区二区三区| 久久久久久久久久久电影| 日日骚欧美日韩| 在线免费观看日本一区| 国产女人aaa级久久久级| 久久er精品视频| 欧美人牲a欧美精品| 亚洲精品大片www| thepron国产精品| 欧美国产欧美综合| 国产一区二区三区视频在线播放| 欧美日韩精品是欧美日韩精品| 日本一区二区在线不卡| 久久超级碰视频| 91精品国产综合久久久久久漫画| 夜夜精品视频一区二区| 97精品久久久午夜一区二区三区| 久久久久9999亚洲精品| 国模一区二区三区白浆| 日韩精品一区二区在线| 日韩不卡在线观看日韩不卡视频| 欧美日韩成人综合| 手机精品视频在线观看| 欧美亚洲动漫精品| 亚洲一区在线看| 欧洲人成人精品| 亚洲地区一二三色| 欧美日韩精品三区| 午夜影院久久久| 欧美久久一二三四区| 亚洲高清视频在线| 欧美电影在线免费观看| 性久久久久久久| 欧美一级一区二区| 免费人成在线不卡| 精品国产一区二区亚洲人成毛片| 免费观看日韩av| 欧美精品一区二| 成人高清在线视频| 综合色天天鬼久久鬼色| 91亚洲国产成人精品一区二区三| 亚洲私人影院在线观看| 日本精品免费观看高清观看| 一个色在线综合| 日韩一区二区影院| 国产不卡一区视频| 亚洲免费电影在线| 3d动漫精品啪啪1区2区免费| 美日韩一区二区| 欧美国产一区视频在线观看| av午夜一区麻豆| 亚洲高清在线精品| 欧美大片在线观看一区二区| 国产一区二三区| ...中文天堂在线一区| 色综合天天综合色综合av | 色婷婷久久99综合精品jk白丝| 综合av第一页| 欧美日韩国产一二三| 日本欧美加勒比视频| 国产亚洲欧美日韩俺去了| 91香蕉视频污在线| 日本亚洲天堂网| 国产精品视频看| 欧美久久久久中文字幕| 国产91精品久久久久久久网曝门 | 99视频一区二区|