freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理詞法分析,語法分析實(shí)驗(yàn)報(bào)告(編輯修改稿)

2024-08-30 06:22 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 (1,temp)。 merge(follow[i],TEMP,2)。 } } } F[i]=39。139。}/******************************************* 判斷讀入文法是否為一個(gè)LL(1)文法********************************************/int ll1(){ int i,j,length,result=1。 char temp[50]。 for(j=0。j=49。j++) { /*初始化*/ first[j][0]=39。\039。 follow[j][0]=39。\039。 first1[j][0]=39。\039。 select[j][0]=39。\039。 TEMP[j]=39。\039。 temp[j]=39。\039。 f[j]=39。039。 F[j]=39。039。 } for(j=0。j=strlen(v)1。j++) first2(j)。 /*求單個(gè)符號(hào)的FIRST集合*/ printf(\nfirst1:)。 for(j=0。j=strlen(v)1。j++) printf(%c:%s ,v[j],first1[j])。 printf(\nempty:%s,empty)。 printf(\n:::\n_emp:)。 for(j=0。j=strlen(v)1。j++) printf(%d ,_emp(v[j]))。 for(i=0。i=count1。i++) FIRST(i,right[i])。 /*求FIRST*/ printf(\n)。 for(j=0。j=strlen(non_ter)1。j++) { /*求FOLLOW*/ if(fo[j]==0) { fo[0]=39。\039。 FOLLOW(j)。 } } printf(\nfirst:)。 for(i=0。i=count1。i++) printf(%s ,first[i])。 printf(\nfollow:)。 for(i=0。i=strlen(non_ter)1。i++) printf(%s ,follow[i])。 for(i=0。i=count1。i++) { /*求每一產(chǎn)生式的SELECT集合*/ memcpy(select[i],first[i],strlen(first[i]))。 select[i][strlen(first[i])]=39。\039。 for(j=0。j=strlen(right[i])1。j++) result*=_emp(right[i][j])。 if(strlen(right[i])==1amp。amp。right[i][0]==39。^39。) result=1。 if(result==1) { for(j=0。j++) if(v[j]==left[i]) break。 merge(select[i],follow[j],1)。 } } printf(\nselect:)。 for(i=0。i=count1。i++) printf(%s ,select[i])。 memcpy(temp,select[0],strlen(select[0]))。 temp[strlen(select[0])]=39。\039。 for(i=1。i=count1。i++) { /*判斷輸入文法是否為LL(1)文法*/ length=strlen(temp)。 if(left[i]==left[i1]) { merge(temp,select[i],1)。 if(strlen(temp)length+strlen(select[i])) return(0)。 } else { temp[0]=39。\039。 memcpy(temp,select[i],strlen(select[i]))。 temp[strlen(select[i])]=39。\039。 } } return(1)。}/******************************************* 構(gòu)造分析表M********************************************/void MM(){ int i,j,k,m。 for(i=0。i=19。i++) for(j=0。j=19。j++) M[i][j]=1。 i=strlen(termin)。 termin[i]=39。39。 /*將加入終結(jié)符數(shù)組*/ termin[i+1]=39。\039。 for(i=0。i=count1。i++) { for(m=0。m++) if(non_ter[m]==left[i]) break。 /*m為產(chǎn)生式左部非終結(jié)符的序號(hào)*/ for(j=0。j=strlen(select[i])1。j++) { if(in(select[i][j],termin)==1) { for(k=0。k++) if(termin[k]==select[i][j]) break。 /*k為產(chǎn)生式右部終結(jié)符的序號(hào)*/ M[m][k]=i。 } } }}/******************************************* 總控算法********************************************/void syntax(){ int i,j,k,m,n,p,q。 char ch。 char S[50],str[50]。 printf(請(qǐng)輸入該文法的句型:)。 scanf(%s,str)。 getchar()。 i=strlen(str)。 str[i]=39。39。 str[i+1]=39。\039。 S[0]=39。39。 S[1]=start。 S[2]=39。\039。 j=0。 ch=str[j]。 while(1) { if(in(S[strlen(S)1],termin)==1) { if(S[strlen(S)1]!=ch) { printf(\n該符號(hào)串不是文法的句型!)。 return。 } else if(S[strlen(S)1]==39。39。) { printf(\n該符號(hào)串是文法的句型.)。 return。 } else { S[strlen(S)1]=39。\039。 j++。 ch=str[j]。 } } else { for(i=0。i++) if(non_ter[i]==S[strlen(S)1]) break。 for(k=0。k++) { if(termin[k]==ch) break。 if(k==strlen(termin)) { printf(\n詞法錯(cuò)誤!)。 return。 } } if(M[i][k]==1) { printf(\n語法錯(cuò)誤!)。 return。 } else { m=M[i][k]。 if(right[m][0]==39。^39。) S[strlen(S)1]=39。\039。 else { p=strlen(S)1。 q=p。 for(n=strlen(right[m])1。n=0。n) S[p++]=right[m][n]。 S[q+strlen(right[m])]=39。\039。 } } } printf(\nS:%s str:,S)。 for(p=j。p=strlen(str)1。p++) printf(%c,str[p])。 printf( )。 }}/******************************************* 一個(gè)用戶調(diào)用函數(shù)********************************************/void menu(){ syntax()。 printf(\n是否繼續(xù)?(y or n):)。 scanf(%c,amp。choose)。 getchar()。 while(choose==39。y39。) { menu()。 }}/******************************************* 主函數(shù)********************************************/void main(){ int i,j。 start=grammer(termin,non_ter,left,right)。 /*讀入一個(gè)文法*/ printf(count=%d,count)。 printf(\nstart:%c,start)。 strcpy(v,non_ter)。 strcat(v,termin)。 printf(\nv:%s,v)。 printf(\nnon_ter:%s,non_ter)。 printf(\ntermin:%s,termin)。 printf(\nright:)。 for(i=0。i=count1。i++) printf(%s ,right[i])。 printf(\nleft:)。 for(i=0。i=count1。i++) printf(%c ,left[i])。 if(validity==1) validity=judge()。printf(\nvalidity=%d,validity)。 if(validity==1) { printf(\n文法有效)。 ll=ll1()。 printf(\nll=%d,ll)。 if(ll==0) printf(\n該文法不是一個(gè)LL1文法!)。 else { MM()。 printf(\n)。 for(i=0。i=19。i++) for(j=0。j=19。j++) if(M[i][j]=0) printf(M[%d][%d]=%d ,i,j,M[i][j])。 printf(\n)。 menu()。 } }}(1)輸入一個(gè)文法(2)輸入一個(gè)符號(hào)串(3)再次輸入一個(gè)符號(hào)串,然后退出程序 二.詞法分析一、 問題描述識(shí)別簡(jiǎn)單語言的單詞符號(hào)識(shí)別簡(jiǎn)單語言的基本字、標(biāo)識(shí)符、無符號(hào)整數(shù)、運(yùn)算符和界符。選擇計(jì)算機(jī)高級(jí)程序語言之一 —— C語言,運(yùn)用恰當(dāng)?shù)脑~法分析技術(shù)線路,設(shè)計(jì)和實(shí)現(xiàn)其對(duì)應(yīng)的詞法分析器。2. 要求 1). 給出一簡(jiǎn)單語言單詞符號(hào)的種別編碼。單詞符號(hào) 種別編碼begin 1if 2then 3while 4 do 5 end 6 l ( l | d ) * 10 dd * 11....... .. 2). 詞法分析程序的功能 輸入是源程序字符串,以‘’ 結(jié)束。輸出是單詞符號(hào)的二元組。分析器輸出結(jié)果存入到磁盤文件中
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1