




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
試驗(yàn)三語法分析通過使用、剖析和擴(kuò)充TINY語言的語義分析程序,掌握編譯器的語義分析程序的構(gòu)造措施。(一)運(yùn)行TINY的語義分析程序(二)擴(kuò)充TINY的語法分析程序考慮作用域(如:函數(shù))和數(shù)組時(shí)也許需要修改符號(hào)表。1.先讀懂TINY語義程序(有關(guān)聯(lián)的文獻(xiàn):MAIN.CANALYZE.CANALYZE.H)進(jìn)行staticvoidinsertNode(TreeNode*t),這樣將碰到與ID有關(guān)的Node信息通過voidst_insert(char*name,intlineno,intloc,intlen)加入到hashTable[h]數(shù)據(jù)構(gòu)造中。(2)接著調(diào)用typeCheck(syntaxTree);進(jìn)行類型檢測通過遞歸調(diào)用traverse(syntaxTree,nullProc,checkNode);將語法樹遍歷,然后調(diào)用staticvoidcheckNode(TreeNode*t)對節(jié)點(diǎn)進(jìn)行類型檢測2.擴(kuò)充TINY的語法分析程序本次試驗(yàn)我首先將源程序?qū)崿F(xiàn)的功能改成符合C_MINUS的符號(hào)表與類型檢測然后加入沒申明調(diào)用與數(shù)組調(diào)用錯(cuò)誤即數(shù)組沒申明而調(diào)用數(shù)組類型。1.對的的測試程序}intgcd(intu,intv[J){}{試驗(yàn)成果:檢測到13行t沒有申明檢測到15行x不是一種數(shù)組通過本次試驗(yàn)學(xué)會(huì)了使用、剖析和擴(kuò)充TINY語言的語義分析程序,掌握編譯器的語義分析程序的構(gòu)造措施。加深了對書本語義分析的理解,感受到學(xué)以致用的快感,增強(qiáng)對本課程的愛好。試驗(yàn)中碰到的最大問題:怎樣查詢符號(hào)表判斷數(shù)組,背面在其數(shù)據(jù)構(gòu)造中增長了一種屬性Len,假如不是數(shù)組將其賦為-1./**********************************************/**********************************************void(*preProc)(TreeNodvoid(*postProc)(TreeNodtraverse(t->child[i],preProc,post}traverse(t->sibling,preProc,post}}staticvoidnullProc(TreeNode*}staticvoidtypeError(TreeNode*t,char*message){fprintf(listing,"Typeerroratline%d:%sln",t->linstaticvoidunDecError(TreeNode*t)}staticvoidnotArrayError(TreeNode}if(st_lookup(t->attr.n{//st_insert(t->,t->lineno,location}{//printf("LEN:%d\n",t->lengif(t->length!=-1&&st_isArray(t->attrst_insert(t->,t-}}definition*/st_insert(t->,t->lineno,st_insert(t->,t->lineno,locati}}addlinenumberofuseonly*/st_insert(t->,t-}if(st_lookup(t->attr.nast_insert(t->,t->lineno,st_insert(t->,t->lineno,locatist_insert(t->,t-if(st_lookup(t->attr.nst_insert(t->,t->lineno,st_insert(t->,t-break}}voidbuildSymtab(TreeNode*syntaxfprintf(listing,"\nunDecErrorandarrayCallErrtraverse(syntaxTree,insertNode,nullfprintf(listing,"\nunDecErrorandarrayCallErrorcheck{/*ProcedurecheckNodstaticvoidcheckNode(TreeNode*t)switch(t->if(t->child[0]->type!=typeError(t,"Opappliedtonon-inteif(t->attr.op==EQ)Il(t->attr.op=l(t->attr.op==LE)|Ⅱ(t->attr.op==BG)I|(t}if(t->child[0]->typetypeError(t->child[0],"iftestisnotBoolean");if(t->child[0]->typetypeError(t->child[0],"whiletestisnotBoolean");if(t->child[0]->type!typeError(t->child[0],"writeofnon-inte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川省攀枝花市鹽邊縣2024-2025學(xué)年九年級上學(xué)期1月期末數(shù)學(xué)試題(原卷版+解析版)
- 西站框構(gòu)中橋施工方案 投標(biāo)方案(技術(shù)方案)
- 交通行業(yè)智能交通信號(hào)燈智能運(yùn)維與數(shù)據(jù)分析方案
- 移動(dòng)支付技術(shù)與其應(yīng)用模擬試題及答案
- 項(xiàng)目延期原因說明書
- 2025年度北京市汽車零部件倉儲(chǔ)租賃合作協(xié)議樣本
- 發(fā)電機(jī)組保養(yǎng)及維護(hù)
- 市場拓展整車運(yùn)輸合同模板
- 互聯(lián)網(wǎng)金融風(fēng)險(xiǎn)評估模型構(gòu)建
- 中國無人機(jī)行業(yè)發(fā)展報(bào)告
- 2025年海南保亭縣事業(yè)單位招聘綜合歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 污水處理設(shè)施運(yùn)維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2024年蘇州高博軟件技術(shù)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試歷年參考題庫含答案解析
- 紀(jì)念抗日戰(zhàn)爭暨世界反法西斯戰(zhàn)爭勝利70周年主題班會(huì) 課件
- AB變頻器使用說明書
- 新疆維吾爾自治區(qū)和田地區(qū)各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)及行政區(qū)劃代碼
- DB13-T2355-2016蒸壓加氣混凝土砌塊專用砂漿
- 【課件】時(shí)代與變革-為人生而藝術(shù) 課件高中美術(shù)人美版(2019)美術(shù)鑒賞
- DB44∕T 876-2011 物業(yè)服務(wù) 會(huì)務(wù)服務(wù)規(guī)范
- 橫河氧量變送器標(biāo)定及檢修
- ArcGIS應(yīng)用基礎(chǔ)培訓(xùn)(共98張)
評論
0/150
提交評論