2025年深度語義解析研究與實踐報告_第1頁
2025年深度語義解析研究與實踐報告_第2頁
2025年深度語義解析研究與實踐報告_第3頁
2025年深度語義解析研究與實踐報告_第4頁
2025年深度語義解析研究與實踐報告_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

試驗三語法分析通過使用、剖析和擴充TINY語言的語義分析程序,掌握編譯器的語義分析程序的構(gòu)造措施。(一)運行TINY的語義分析程序(二)擴充TINY的語法分析程序考慮作用域(如:函數(shù))和數(shù)組時也許需要修改符號表。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é)點進(jìn)行類型檢測2.擴充TINY的語法分析程序本次試驗我首先將源程序?qū)崿F(xiàn)的功能改成符合C_MINUS的符號表與類型檢測然后加入沒申明調(diào)用與數(shù)組調(diào)用錯誤即數(shù)組沒申明而調(diào)用數(shù)組類型。1.對的的測試程序}intgcd(intu,intv[J){}{試驗成果:檢測到13行t沒有申明檢測到15行x不是一種數(shù)組通過本次試驗學(xué)會了使用、剖析和擴充TINY語言的語義分析程序,掌握編譯器的語義分析程序的構(gòu)造措施。加深了對書本語義分析的理解,感受到學(xué)以致用的快感,增強對本課程的愛好。試驗中碰到的最大問題:怎樣查詢符號表判斷數(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論