基于算符優(yōu)先分析方法

基于算符優(yōu)先分析方法

ID:14854868

大小:55.50 KB

頁數(shù):10頁

時(shí)間:2018-07-30

基于算符優(yōu)先分析方法_第1頁
基于算符優(yōu)先分析方法_第2頁
基于算符優(yōu)先分析方法_第3頁
基于算符優(yōu)先分析方法_第4頁
基于算符優(yōu)先分析方法_第5頁
資源描述:

《基于算符優(yōu)先分析方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、基于算符優(yōu)先分析方法的表達(dá)式語法分析器年級(jí):2007級(jí)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)四班姓名:毛群暉學(xué)號(hào):20074042154指導(dǎo)老師:段明秀年月日摘要:算符優(yōu)先分析法是Floyd在1963年首先提出來的,是一種古典而又實(shí)用的方法,用這種方法在分析程序語言中的各類表達(dá)式時(shí)尤為有效。不少編譯程序中都使用這種方法分析表達(dá)式。算符優(yōu)先分析法就是仿照算術(shù)表達(dá)式的運(yùn)算過程而提出的一種自底向上的語法分析方法。其基本思想是:首先規(guī)定算符,這里是文法的終極符之間的優(yōu)先關(guān)系,然后根據(jù)這種優(yōu)先關(guān)系,通過比較相鄰算符的優(yōu)先次序來確定句型中的“句柄”,然后進(jìn)行歸約。算符優(yōu)先分析法的關(guān)鍵:算符優(yōu)先分析

2、法的關(guān)鍵就是尋找當(dāng)前句型中的最左素短語,并歸約它。關(guān)鍵字:小于、大于、等于、句柄、歸約、一、對(duì)表達(dá)式文法G[E’]構(gòu)造算符優(yōu)先關(guān)系表。計(jì)算算符優(yōu)先只針對(duì)于終結(jié)符,終結(jié)符之間的優(yōu)先關(guān)系有三種,在計(jì)算優(yōu)先關(guān)系之前我們先定義兩個(gè)集合,對(duì)于任意兩個(gè)終結(jié)符(a,b)FIRSTVT(B)={b

3、B=>b…或B=>Cb…},其中…表示V*中的符號(hào)串。LASTVT(B)={a

4、B=>…a或B=>…aC}三種優(yōu)先關(guān)系:(1)等于關(guān)系:可直接查看產(chǎn)生式的右部,對(duì)如下形式的產(chǎn)生式A->…ab…A->…aBb…則有a=b成立。(2)小于關(guān)系:求出每個(gè)非終結(jié)符B的FIRSTVT(B),觀察如下形

5、式的產(chǎn)生式A->…aB…對(duì)每一b∈FIRSTVT(B)有a≮b成立(3)大于關(guān)系:計(jì)算每個(gè)非終結(jié)符B的LASTVT(B),觀察如下形式的產(chǎn)生式A->…Bb…對(duì)每一a∈LASTVT(B)有a≯b成立表達(dá)式文法G[E’]:E’→#E#E→E+Q

6、QQ→Q-T

7、TT→T*F

8、FF→F/M|MM→M^P|PP→(E)|i根據(jù)上面的規(guī)則手工構(gòu)造上述文法的算符優(yōu)先表如下:+-*/^()i#+≯≮≮≮≮≮≯≮≯-≯≯≮≮≮≮≯≮≯*≯≯≯≮≮≮≯≮≯/≯≯≯≯≮≮≯≮≯^≯≯≯≯≯≮≯≮≯(≮≮≮≮≮≮=≮)≯≯≯≯≯≯≯i≯≯≯≯≯≯≯#≮≮≮≮≮=packagecom.op.co

9、re;/********************************************************************************簡單表達(dá)式文法G[E’]構(gòu)造算符優(yōu)先關(guān)系表。*E’→#E#*E→E+Q

10、Q*Q→Q-T

11、T*T→T*F

12、F*F→F/M|M*M→M^P|P*P→(E)|i*@author*/publicclassPriorityTable{privatestaticchartable[][]={//+*/i()#^{'>','<','<','<','<','>','>','<'},//+{'>','>','>','<',

13、'<','>','>','<'},//*{'>','>','>','<','<','>','>','<'},///{'>','>','>','$','$','>','>','>'},//i{'<','<','<','<','<','=','$','<'},//({'>','>','>','$','$','>','>','>'},//){'<','<','<','<','<','$','=','<'},//#{'>','>','>','<','<','>','>','<'},//^};//算符優(yōu)先表/************************************

14、****************************************判斷一個(gè)符號(hào)在算符優(yōu)先表中位置**@paramc*@return*/privatestaticintjudgePriority(charc){intpriority=0;switch(c){case'+':priority=0;break;case'*':priority=1;break;case'/':priority=2;break;case'i':priority=3;break;case'(':priority=4;break;case')':priority=5;break;cas

15、e'#':priority=6;break;case'^':priority=7;break;}returnpriority;}/***判斷兩個(gè)算術(shù)符的優(yōu)先級(jí)**@paramm*為符號(hào)棧的棧頂元素*@paramn*為當(dāng)前輸入算術(shù)符*@return*/publicstaticchargetPriority(charm,charn){returnPriorityTable.table[judgePriority(m)][judgePriority(n)];}}二、根據(jù)算符優(yōu)先表用棧結(jié)構(gòu)來實(shí)現(xiàn)算符優(yōu)先分析設(shè)置兩個(gè)棧:存放運(yùn)算符的OPTR棧和存放

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

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(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)系客服處理。