算符優(yōu)先分析程序

算符優(yōu)先分析程序

ID:18215478

大?。?1.50 KB

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

時(shí)間:2018-09-15

算符優(yōu)先分析程序_第1頁(yè)
算符優(yōu)先分析程序_第2頁(yè)
算符優(yōu)先分析程序_第3頁(yè)
算符優(yōu)先分析程序_第4頁(yè)
算符優(yōu)先分析程序_第5頁(yè)
資源描述:

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

1、編譯原理實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:_____算符優(yōu)先分析程序___實(shí)驗(yàn)類型:________設(shè)計(jì)型實(shí)驗(yàn)_________指導(dǎo)教師:_________何中勝_____________專業(yè)班級(jí):________09計(jì)二______________姓名:_________周健_______________學(xué)號(hào):______09030231_____________電子郵件:____________________________實(shí)驗(yàn)地點(diǎn):_______院士樓720_____________實(shí)驗(yàn)成績(jī):_________________________一、試

2、驗(yàn)?zāi)康暮鸵笸ㄟ^(guò)設(shè)計(jì)、編制、調(diào)試一個(gè)典型的語(yǔ)法分析程序,實(shí)現(xiàn)對(duì)詞法分析程序所提供的單詞序列進(jìn)行語(yǔ)法檢查和結(jié)構(gòu)分析,進(jìn)一步掌握常用的語(yǔ)法分析方法。1、選擇最有代表性的語(yǔ)法分析方法,如LL(1)語(yǔ)法分析程序、算符優(yōu)先分析程序和LR分析分析程序,并至少完成兩個(gè)題目。2、選擇對(duì)各種常見程序語(yǔ)言都用的語(yǔ)法結(jié)構(gòu),如賦值語(yǔ)句(尤指表達(dá)式)作為分析對(duì)象,并且與所選語(yǔ)法分析方法要比較貼切。⑴實(shí)習(xí)前的準(zhǔn)備按實(shí)習(xí)目的和要求,編寫語(yǔ)法分析程序,同時(shí)考慮相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。⑵調(diào)試調(diào)試?yán)討?yīng)包括符合語(yǔ)法規(guī)則的算術(shù)表達(dá)式,以及分析程序能夠判別的若干錯(cuò)例。⑶輸出對(duì)于所輸入的算

3、術(shù)表達(dá)式,不論對(duì)錯(cuò),都應(yīng)有明確的信息告訴外界。⑷擴(kuò)充有余力的同學(xué),可適當(dāng)擴(kuò)大分析對(duì)象。譬如:①算術(shù)表達(dá)式中變量名可以是一般標(biāo)識(shí)符,還可含一般常數(shù)、數(shù)組元素、函數(shù)調(diào)用等等。②除算術(shù)表達(dá)式外,還可擴(kuò)充分析布爾、字符、位等不同類型的各種表達(dá)式。③加強(qiáng)語(yǔ)法檢查,盡量多和確切地指出各種錯(cuò)誤。⑸編寫上機(jī)實(shí)習(xí)報(bào)告。二、實(shí)驗(yàn)過(guò)程1、準(zhǔn)備:閱讀課本有關(guān)章節(jié),確定算術(shù)表達(dá)式的文法。2、考慮好設(shè)計(jì)方案。3、設(shè)計(jì)出模塊結(jié)構(gòu)、測(cè)試數(shù)據(jù),初步編制好程序。4、上機(jī)調(diào)試,發(fā)現(xiàn)錯(cuò)誤,分析錯(cuò)誤,在修改完善。算符優(yōu)先文法分為兩種:一種是自上而下的,一種是自下而上的,本次采用自上

4、而下的方式。三、試驗(yàn)結(jié)果三、討論與分析自下而上分析技術(shù):從輸入符號(hào)串出發(fā),試圖把它規(guī)約為識(shí)別符號(hào)。自下而上分析技術(shù)是一種“移進(jìn)-歸約”法。從輸入符號(hào)串開始,從左到右進(jìn)行掃描,將輸入符號(hào)逐個(gè)移入一個(gè)棧中,邊移入邊分析,一旦棧頂符號(hào)串形成某個(gè)產(chǎn)生式的右部時(shí),就用該產(chǎn)生式的左部非終結(jié)符代替,稱為歸約。重復(fù)這一過(guò)程,直到歸約到棧中只剩下文法的開始符號(hào)時(shí),則分析成功,稱為“移進(jìn)-歸約”方法。分析器做四種動(dòng)作:1、移進(jìn):將下一輸入符號(hào)移入棧2、歸約:當(dāng)棧頂出現(xiàn)句柄,用產(chǎn)生式左側(cè)的非終結(jié)符替換棧頂?shù)木浔?、接受:分析成功,是歸約的一種特殊情況4、出錯(cuò):棧

5、頂?shù)膬?nèi)容與輸入符號(hào)相悖,進(jìn)行出錯(cuò)處理構(gòu)造FIRESVT和LASTVT,建立算符優(yōu)先關(guān)系表來(lái)輔助判斷FIRESVT:對(duì)每個(gè)非終結(jié)符P,F(xiàn)IRSTVT(P)={a

6、P?a...或P?Qa...,a為終結(jié)符,P、Q為非終結(jié)符}LASTVT:對(duì)每個(gè)非終結(jié)符P,LASTVT(P)={a

7、P?...a或P?...aQ,a為終結(jié)符,P、Q為非終結(jié)符}構(gòu)造優(yōu)先關(guān)系表:1、如果每個(gè)非終結(jié)符的FIRSTVT和LASTVT集均已知,則可構(gòu)造優(yōu)先關(guān)系表。2、若產(chǎn)生式右部有...aP...的形式,則對(duì)于每個(gè)b∈FIRSTVT(P)都有a≦b(優(yōu)先集);3、若產(chǎn)生式右

8、部有...Pb的形式,則對(duì)于每個(gè)a∈LASTVT(P)集,都有a≧b;4、若產(chǎn)生是形如:A→…ab…或A→…aBb…形式,則有a≒b。5、#與其他終結(jié)符的優(yōu)先關(guān)系可利用拓廣文法S?à#S#來(lái)獲得。五、附錄#include"stdio.h"#include"malloc.h"structLchar{charchar_ch;structLchar*next;}LLchar,*p,*h,*temp,*top,*base;inttable[8][8]={{1,1,-1,-1,-1,1,-1,1},{1,1,-1,-1,-1,1,-1,1},{1,1

9、,1,1,-1,1,-1,1},{1,1,1,1,-1,1,-1,1},{-1,-1,-1,-1,-1,-1,-1,0},{1,1,1,1,0,1,0,1},{1,1,1,1,0,1,0,1},{-1,-1,-1,-1,-1,0,-1,-1}};//存儲(chǔ)算符優(yōu)先關(guān)系表,大于為1,小于或等于為-1,其它為0表示出錯(cuò)charcurchar;charcurcmp;intright;/*設(shè)置開關(guān)項(xiàng),當(dāng)出錯(cuò)時(shí)為0*/inti,j;intk;/*比較字符在棧的位置*/voidpush(charpchar)/*入棧函數(shù)*/{temp=(Lchar*)ma

10、lloc(sizeof(LLchar));temp->char_ch=pchar;temp->next=top;top=temp;}voidpop(void)/*出棧函數(shù)*/{i

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。