實(shí)驗(yàn)二 語法分析(算符優(yōu)先).doc

實(shí)驗(yàn)二 語法分析(算符優(yōu)先).doc

ID:56865428

大?。?5.50 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2020-07-16

實(shí)驗(yàn)二  語法分析(算符優(yōu)先).doc_第1頁(yè)
實(shí)驗(yàn)二  語法分析(算符優(yōu)先).doc_第2頁(yè)
實(shí)驗(yàn)二  語法分析(算符優(yōu)先).doc_第3頁(yè)
實(shí)驗(yàn)二  語法分析(算符優(yōu)先).doc_第4頁(yè)
實(shí)驗(yàn)二  語法分析(算符優(yōu)先).doc_第5頁(yè)
資源描述:

《實(shí)驗(yàn)二 語法分析(算符優(yōu)先).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、實(shí)驗(yàn)二語法分析實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)題目算符優(yōu)先分析程序二、實(shí)驗(yàn)內(nèi)容及要求(1)根據(jù)給定文法,先求出FirstVt和LastVt集合,構(gòu)造算符優(yōu)先關(guān)系表(要求算符優(yōu)先關(guān)系表輸出到屏幕或者輸出到文件);(2)根據(jù)算法和優(yōu)先關(guān)系表分析給定表達(dá)式是否是該文法識(shí)別的正確的算術(shù)表達(dá)式(要求輸出歸約過程)(3)給定表達(dá)式文法為:G(E’):E’→#E#E→E+T

2、TT→T*F

3、FF→(E)

4、i(4)分析的句子為:(i+i)*i和i+i)*i三、程序源代碼:#include#include#inclu

5、de#include#defineSIZE128charpriority[6][6];//算符優(yōu)先關(guān)系表數(shù)組charinput[SIZE];//存放輸入的要進(jìn)行分析的句子charremain[SIZE];//存放剩余串charAnalyseStack[SIZE];//分析棧voidanalyse();inttestchar(charx);//判斷字符X在算符優(yōu)先關(guān)系表中的位置voidremainString();//移進(jìn)時(shí)處理剩余字符串,即去掉剩余字符串第一個(gè)字符intk;v

6、oidinit()//構(gòu)造算符優(yōu)先關(guān)系表,并將其存入數(shù)組中{priority[0][0]='>';priority[0][1]='<';priority[0][2]='<';priority[0][3]='<';priority[0][4]='>';priority[0][5]='>';priority[1][0]='>';priority[1][1]='>';priority[1][2]='<';priority[1][3]='<';priority[1][4]='>';priority[1][5]='>';prio

7、rity[2][0]='>';priority[2][1]='>';priority[2][2]='$';//無優(yōu)先關(guān)系的用$表示priority[2][3]='$';priority[2][4]='>';priority[2][5]='>';priority[3][0]='<';priority[3][1]='<';priority[3][2]='<';priority[3][3]='<';priority[3][4]='=';priority[3][5]='$';priority[4][0]='>';priorit

8、y[4][1]='>';priority[4][2]='$';priority[4][3]='$';priority[4][4]='>';priority[4][5]='>';priority[5][0]='<';priority[5][1]='<';priority[5][2]='<';priority[5][3]='<';priority[5][4]='$';priority[5][5]='=';}voidanalyse()//對(duì)所輸入的句子進(jìn)行算符優(yōu)先分析過程的函數(shù){inti,j,f,z,z1,n,n1,z2,n

9、2;intcount=0;//操作的步驟數(shù)chara;//用于存放正在分析的字符charp,Q,p1,p2;f=strlen(input);//測(cè)出數(shù)組的長(zhǎng)度for(i=0;i<=f;i++){a=input[i];if(i==0)remainString();if(AnalyseStack[k]=='+'

10、

11、AnalyseStack[k]=='*'

12、

13、AnalyseStack[k]=='i'

14、

15、AnalyseStack[k]=='('

16、

17、AnalyseStack[k]==')'

18、

19、AnalyseStack[k]=='

20、#')j=k;elsej=k-1;z=testchar(AnalyseStack[j]);//從優(yōu)先關(guān)系表中查出s[j]和a的優(yōu)先關(guān)系if(a=='+'

21、

22、a=='*'

23、

24、a=='i'

25、

26、a=='('

27、

28、a==')'

29、

30、a=='#')n=testchar(a);else//如果句子含有不是終結(jié)符集合里的其它字符,不合法{printf("錯(cuò)誤!該句子不是該文法的合法句子!");break;}p=priority[z][n];if(p=='$'){printf("錯(cuò)誤!該句子不是該文法的合法句子!");return

31、;}if(p=='>'){for(;;){Q=AnalyseStack[j];if(AnalyseStack[j-1]=='+'

32、

33、AnalyseStack[j-1]=='*'

34、

35、AnalyseStack[j-1]=='i'

36、

37、AnalyseStack[j-1]=='('

38、

39、AnalyseStack[j-1]==')'

40、

41、Anal

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。