4、法分析表輸入需要驗證的字符串,以#結束輸出結果輸出結果結束輸入文法規(guī)則和數(shù)目NY243.3算符優(yōu)先文法例已知表達式文法為:E->E+TE->TT->T*FT->FF->(E)F->i⑴計算FIRSTVE和LASTVT集合FirstVT(E)={+,*,(,i}LastVT(E)={+,*,),i}FirstVT(T)={*,(,i}LastVT(T)={*,),i}FirstVT(F)={(,i}LastVT(F)={),i}FirstVT(Q)={#}LastVT(Q)={#}⑵構造算符優(yōu)先矩陣 +*()i#+><<>
5、<>*>><><>(<<<=<)>>>>i>> > > #<<< <=?、菍τ谳斎氪甶+i*i+i#的手動分析過程:步驟符號棧當前符號+剩余輸入串移進或歸約0#i+i*i+i#預備1#i+i*i+i#移進2#N+i*i+i#歸約3#N+i*i+i#移進4#N+i*i+i#移進5#N+N*i+i#歸約6#N+N*i+i#移進7#N+N*i+i#移進8#N+N*N+i#歸約9#N+N+i#歸約10#N+i#歸約11#N+i#移進12#N+i#移進13#N+N#歸約14#N#歸約15#N#接受24見附錄3.4程序調試例:1、
6、輸入產(chǎn)生式的個數(shù):2、輸入文法:3、判斷文法4、生成非終結符的FIRSTVT集和LASTVT集:5、生成算符優(yōu)先分析表:5、輸入字符串進行分析:24輸出結果與自己做的結果一模一樣,說明設計成功。4.總結經(jīng)過此次編譯課程設計,使我對算符優(yōu)先分析有了更深更進一步的理解,而且也鍛煉了自己的程序編碼能力,對自己今后的道路影響不小。當然還有不足之處以后會慢慢改進。在試驗過程中,我忘記在程序最后面加上一句getchar();,導致我試驗時,直接運行.exe文件,當運行到最后輸入歸約字符串時,執(zhí)行完后界面自動關閉,導致我不能截圖,經(jīng)過
7、不屑的努力,有兩種解決方法,第一可以用VC軟件運行,界面就不會關閉。第二種是在程序里加上getchar();,.exe文件運行到最后就不會自動關閉。附錄#include#include#includetypedefstruct{charR;charr;24intflag;}array;typedefstruct{charE;chare;}charLode;typedefstruct{charLode*base;inttop;}charstack;charstr
8、[80][80],arr[80][80],brr[80][80];arrayF[20];intm,kk,p,ppp,FF=1;charr[10];intcrr[20][20],FLAG=0;charccrr1[1][20],ccrr2[20][1];voidInitstack(charstack&s)//定義棧{s.