freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

編譯原理課程設(shè)計(jì)---編譯代碼生成器設(shè)計(jì)-wenkub

2023-01-28 17:27:10 本頁面
 

【正文】 (3) 程序的功能描述從文件中讀入表達(dá)式,輸出其四元式的結(jié)果序列 是否為main?調(diào)用scanner是否為(?調(diào)用scanner是否為)?調(diào)用scanner調(diào)用語句塊分析函數(shù)staBlock出錯(cuò)處理 遞歸下降示意圖 (4)詳細(xì)功能描述void scanner()。編譯器。在前兩次試驗(yàn)的基礎(chǔ)上改進(jìn)。 } } ;判別整數(shù) (3) 詞法分析的運(yùn)行結(jié)果 輸入begin x:=1。939。039。amp。 break。 ch=prog[p++]。amp。A39。Z39。amp。A39。Z39。amp。)) ch=prog[p++]。 有關(guān)scaner1()中關(guān)鍵點(diǎn)解析: ①while((ch==39。通過課程設(shè)計(jì)可以達(dá)到綜合設(shè)計(jì)編譯程序的目的。 按要求完成課程設(shè)計(jì)內(nèi)容,課程設(shè)計(jì)報(bào)告要求文字和圖表工整、思路清晰、算法正確。但是一旦對(duì)其掌握,對(duì)以后的程序語言設(shè)計(jì),系統(tǒng)軟件分析,系統(tǒng)軟件設(shè)計(jì),形式語言研究等方面都是非常有好處的。 現(xiàn)在人們已經(jīng)建立了多種編制部分編譯程序或整個(gè)編譯程序的有效工具。如果源語言諸如Fortran,Pascal,C,Ada或java這樣的高級(jí)語言,而目標(biāo)程序是諸如匯編語言或者機(jī)器語言這類的低級(jí)語言,這樣的一個(gè)翻譯程序就是稱為編譯程序?,F(xiàn)在計(jì)算機(jī)系統(tǒng)一般都含有不只一個(gè)的高級(jí)語言的編譯程序,對(duì)有些高級(jí)語言甚至配置了幾個(gè)不同性能的編譯程序,供用戶按不同需要進(jìn)行選擇。高級(jí)語言編譯程序是計(jì)算機(jī)系統(tǒng)軟件最主要的組成部分之,也是用戶最直接關(guān)系的工具之一。 一個(gè)編譯程序的工作過程一般可以劃分為五個(gè)階段:詞法分析、語法分析、語義分析與中間代碼生成、優(yōu)化、目標(biāo)代碼生成。有些能用于自動(dòng)生成掃描器(如LEX),有些可以用于自動(dòng)產(chǎn)生語法分析器(如YACC),有些甚至可以用來自動(dòng)產(chǎn)生整個(gè)的編譯程序。關(guān)鍵字:C語言、編譯、掃描器、語法分析一、課程設(shè)計(jì)的目的編譯原理課程兼有很強(qiáng)的理論性和實(shí)踐性,是計(jì)算機(jī)專業(yè)的一門非常重要的專業(yè)基礎(chǔ)課程,它在系統(tǒng)軟件中占有十分重要的地位,是計(jì)算機(jī)專業(yè)學(xué)生的一門主修課。 寫出完整的算法框架。本課程的課程設(shè)計(jì)要求學(xué)生編寫一個(gè)完整的編譯程序,包括詞法分析器、語法分析器以及實(shí)現(xiàn)對(duì)簡單程序設(shè)計(jì)語言中的邏輯運(yùn)算表達(dá)式、算術(shù)運(yùn)算表達(dá)式、賦值語句、IF語句、While語句以及do…while語句進(jìn)行編譯,并生成中間代碼和直接生匯編指令的代碼生成器。 39。 ;忽略空格 ②if(((ch=39。(ch=39。)amp。))) { while(((ch=39。(ch=39。)amp。))||((ch=39。(ch=39。 } ;判別標(biāo)識(shí)符 ③for(n=0。 } ;標(biāo)識(shí)符是否是關(guān)鍵字 ④if((ch=39。(ch=39。)amp。)) { sum=sum*10+ch39。 y:=1+2。詞法分析程序 224。不斷完善,不斷改進(jìn)。 //掃描void lrparser()。 //語句void fuzhi()。 //Expresiion表達(dá)式char* T()。 //回填int merge(int p1,int p2)。void fuzhi()該函數(shù)的功能是對(duì)賦值語句進(jìn)行分析。 printf(Move %5s,Ax\n,fourCom[i].result)。}if(strcmp(fourCom[i].opera,)==0) {printf(Mov AX,%1s\n,fourCom[i].arg1)。 printf(MUL %1s\n,fourCom[i].arg2)。 printf(Mov %1s,AL\n,fourCom[i].result)。 詞法分析的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),其基本思想是根據(jù)掃描到單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)。調(diào)用IrParse224。調(diào)用語句串分析函數(shù)224。amp。通過把該算法的內(nèi)容,算法的執(zhí)行順序在計(jì)算機(jī)上實(shí)現(xiàn),把原來以為很深?yuàn)W的書本知識(shí)變的更為簡單,對(duì)實(shí)驗(yàn)原理有更深的理解。把學(xué)過的計(jì)算機(jī)編譯原理的知識(shí)強(qiáng)化,能夠把課堂上學(xué)的知識(shí)通過自己設(shè)計(jì)的程序表示出來,加深了對(duì)理論知識(shí)的理解。define MAX 100char inputstream[50]。//sum用于計(jì)算運(yùn)算符的個(gè)數(shù) //m用于標(biāo)記輸入表達(dá)式中字符的個(gè)數(shù) char JG=39。//左括號(hào)的標(biāo)志char prog1[80],token1[8],ch1。char prog[80]。 //syn:種別編碼 double sum。int isDecimal。 //指數(shù)冪 int isNegative。 //是否連續(xù)出現(xiàn)+,int nextq。 struct{ char result[10]。}fourCom[20]。scaner1()。void t1()。 //語句塊void staString(int *nChain)。 //條件語句void xunhuan()。 //Factor因子char *newTemp()。 //生成四元式void scanner()。 if(syn==1) //main {scanner()。nChain)。}//語句塊 ::= 39。void staBlock(int *nChain) //語句塊{if(syn==28) //{{scanner()。 //讀下一個(gè) else printf(缺少}號(hào)\n)。void staString(int *nChain) //語句串{sta(nChain)。sta(nChain)。 } else if(syn==6) //if {tiaojian(nChain)。 //條件表達(dá)式關(guān)系運(yùn)算符表達(dá)式 if(syn==6) //if {scanner()。 if((syn=37)amp。 case 33: strcpy(op,=)。 case 35: strcpy(op,=)。 case 37: strcpy(op,!=)。 strcpy(num2,E())。 ntc=nextq。 //第一個(gè)0已回填 backpatch(ntc,nextq)。 //語句塊 *nChain=merge(nChainTemp,nfc)。 //記住if語句位置,emit之后nextq就變了 //emit(0,if,num1,goto)。 //語句塊 if(syn==9) //while {scanner()。amp。 break。 break。 break。 strcat(num1,op)。 backpatch(nnb,nnc)。 } if(syn==27) //) scanner()。 if(syn==21) //= {scanner()。 }}}char* E() //Expression表達(dá)式{char *res,*num1,*op,*num2。 num2=(char *)malloc(10)。 scanner()。 strcpy(num1,res)。num1=(char *)malloc(10)。while((syn==24)||(syn==25)) //* / {if(syn==24) strcpy(op,*)。 strcpy(res,newTemp())。}char* F() //Factor因子{char *res。 } else if(syn==20) //二進(jìn)制數(shù) {itoa((int)sum,res,10)。 if(syn==27) //) {scanner()。}char *newTemp(){char *p。 itoa(kk,varTemp,10)。 return p。 //把t填進(jìn)四元式circle的第四分量 sprintf(fourCom[circle].result,%d,t)。 if(p2==0) nResult=p1。 sprintf(fourCom[circle].result,%s,p1)。strcpy(fourCom[nextq].opera,op)。 decimal=0。n++) token[n]=NULL。||ch==39。a39。z39。amp。a39。z39。amp。039。939。\039。n9。039。939。039。939。 } if(ch==39。 count=0。amp。039。 ch=prog[p++]。||ch==39。 if(ch==39。 } while((ch=39。(ch=39。 ch=prog[p++]。 } if(isSignal==1) { sum=sum。 } else switch(ch) { case 39。 ch=prog[p++]。 token[m++]=ch。 case 39。 ch=prog[p++]。 token[m++]=ch。 case 39。 ch=prog[p++]。 token[m++]=ch。 case 39。 if((temp2=39。(temp2=39。(repeat==1)) {isSignal=2。 } if(((temp2==39。))amp。 } syn=22。: temp2=prog[p]。)amp。)amp。 //讀下一個(gè)字符 repeat=0。)||(temp2==39。(repeat==0)) //如果重復(fù)出現(xiàn)符號(hào),才將后邊的+,視為正負(fù)號(hào) {repeat=1。 case 39。 if(temp2==39。 } else if(temp2==39。 } syn=24。: syn=25。(39。+39。39。 break。 token[m++]=ch。: syn=28。}39。 case 39。 break。 token[m++]=ch。: syn=0。 }}zhongjiandaima(){p=0。 repeat=0。 prog[p++]=ch。 p=0。 for(i=1。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1