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

正文內(nèi)容

編譯原理課程設(shè)計(jì)教學(xué)大綱優(yōu)秀范文5篇(參考版)

2024-10-20 16:03本頁面
  

【正文】 // 變量的。// initial table index int cx0。int dx。//s1=s1+s2while((sym)==())getsym()。it!=()。symset::iterator it。}//gen end// 測(cè)試當(dāng)前單詞符號(hào)是否合法void PL0::test(symset s1,symset s2,int n){ if(sourceEnd)return。code[cx].a= z。}code[cx].f= x。cc= cc+1。if(line[ll1]==10)ll。codeNo++。}cc= 0。sourceEnd=true。// 其它符號(hào)的賦值getch()。} elsesym= GTR。){sym= GEQ。if(ch == 39。// extra stuff added to support 39。} elsesym= NUL。){sym= BECOMES。if(ch == 39。:39。if(k nmax)error(30)。getch()。039。sym= NUMBER。} else if(isdigit(ch))// number { k= 0。}while(i j)sym= wsym[k]。if(strcmp(id, word[k])j= k1。j= norw。} strcpy(id,a)。kk= kk1。else { do{a[kk]= 39。}while(isalpha(ch)||isdigit(ch))。} getch()。// 檢測(cè)一個(gè)單詞長(zhǎng)度 do{ if(k al){a[k]= ch。// cls space and tab if(isalpha(ch))// id or reserved word {k=0。 39。int i,j,k。err= err+1。sprintf(s,”第 %d 行:“,codeNo)。fout=fopen(destination,”w“)。// 引入此變量是出于程序性能考慮 codeNo=0。 39。// 代碼分配指針,代碼生成模塊總在cx所指位置生成新的代碼ll= 0。cc= 0。// (IDENT),(NUMBER),(LPAREN)。(CONSTSYM),(VARSYM),(PROCSYM)。strcpy(mnemonic[JMP],” jmp “)。strcpy(mnemonic[CAL],” cal “)。strcpy(mnemonic[LOD],” lod “)。strcpy(mnemonic[LIT],” lit “)。39。]= GTR。ssym[39。39。]= PERIOD。ssym[39。,39。]= EQL。ssym[39。)39。]= LPAREN。ssym[39。/39。]= TIMES。ssym[39。39。]= PLUS。ssym[39。memset(table,0,sizeof(table))。memset(code,0,sizeof(code))。wsym[15]= WHILESYM。wsym[13]= UNTILSYM。wsym[11]= REPEATSYM。wsym[9]= PROCSYM。wsym[7]= IFSYM。wsym[5]= ELSESYM。留字對(duì)應(yīng)的symbol類型wsym[3]= CONSTSYM。wsym[1]= BEGINSYM。strcpy(word[15],”while“)。strcpy(word[13],”until“)。strcpy(word[11],”repeat“)。strcpy(word[9],”procedure“)。strcpy(word[7],”if“)。strcpy(word[5],”else“)。strcpy(word[3],”const“)。strcpy(word[1],”begin“)。“, ”error 0018: while型循環(huán)語句中丟了do“, ”error 0019: 語句后的標(biāo)識(shí)符不正確“, ”error 0020: 應(yīng)為關(guān)系運(yùn)算符“, ”error 0021: 表達(dá)式內(nèi)標(biāo)識(shí)符屬性不能是過程“, ”error 0022: 表達(dá)式中漏掉了右括號(hào)‘)’“, ”error 0023: 因子后的非法符號(hào)“, ”error 0024: 表達(dá)式開始符不能是此符號(hào)“, ”error 0025: 文件在不該結(jié)束的地方結(jié)束了“, ”error 0026: 結(jié)束符出現(xiàn)在不該結(jié)束的地方“, ”error 0027: “,”error 0028: “,”error 0029: “,”error 0030: “, ”error 0031: 數(shù)越界“, ”error 0032: read語句括號(hào)中標(biāo)識(shí)符不是變量“, ”error 0033: else附近錯(cuò)誤“ , ”error 0034: repeat附近錯(cuò)誤“}?!? ”error 0006: 過程說明后的符號(hào)不正確(應(yīng)是語句開始符或過程開始符)“, ”error 0007: 應(yīng)是語句開始符“, ”error 0008: 過程體內(nèi)語句部分的后跟符不正確“, ”error 0009: 程序皆為丟了句號(hào)‘.’“, ”error 0010: 語句之間漏了‘。// 構(gòu)造函數(shù)// 析構(gòu)函數(shù)// 出錯(cuò)處理,打印出錯(cuò)// 詞法分析,讀取一// 漏掉空格,讀取一// 生成目標(biāo)代碼,并送入目標(biāo)// 測(cè)試當(dāng)前單詞符號(hào)是否// 分程序分析處理過程// 登入名字表// 查找標(biāo)示符在名字表中// 常量定義處理// 變量說明處理// 列出目標(biāo)代碼清單// 語句部分處理// 表達(dá)式處理// 項(xiàng)處理// 因子處理// 條件處理// 數(shù)組說明處理// 對(duì)目標(biāo)代碼的解釋// 通過靜態(tài)鏈求出數(shù)據(jù)區(qū)的 // 保存代碼}。執(zhí)行程序int base(int l,int b,int s[])。 dx,int lev)。void arraydeclaration(intamp。void factor(symset fsys,int tx,int lev)。void expression(symset fsys,int tx,int lev)。void listcode(int cx0)。tx,intamp。dx,int lev)。的位置void constdeclaration(intamp。dx,int lev)。void enter(obj0 k,int amp。程序區(qū)void test(symset s1,symset s2,int n)。個(gè)單詞void getch()。}void error(int n)。public:PL0(char* source,char*destination)。// 聲明開始、表達(dá)式開始和項(xiàng)開始符號(hào)集 Table table[txmax+1]。// 一些符號(hào)對(duì)應(yīng)的symbol類型表合 char mnemonic[8][6]。// 保留字表symbol wsym[norw+1]。// 詞法分析器中用于臨時(shí)存放正在分析的詞instruction code[cxmax+1]。// code line vector errorString。// code line string errStr[]。int cx。// character count int ll。// last identifier read int num。// last character read symbol sym。class PL0 {protected:bool listswitch,sourceEnd。}other。}inOther。obj0 kind。t big than amax }。t big than levmaxint a。// function code int l。// functions typedef set symset。// alfa類型用于標(biāo)識(shí)符 typedef enum {CONSTANT,VARIABLE,PROCEDURE,ARRAY} obj0。// 行緩沖區(qū)長(zhǎng)度typedef enum {NUL,IDENT,NUMBER,PLUS,MINUS,TIMES,SLASH,ODDSYM,EQL,NEQ,LSS,LEQ,GTR,GEQ,LPAREN,RPAREN,COMMA,SEMICOLON,PERIOD,BECOMES,BEGINSYM,ENDSYM,IFSYM,THENSYM,WHILESYM,WRITESYM,READSYM,DOSYM,CALLSYM,CONSTSYM,VARSYM,PROCSYM,ELSESYM,REPEATSYM,UNTILSYM} symbol。// maximum depth of block nesting 最大允許的塊嵌套層數(shù) const int cxmax = 200。// digits in numbers 數(shù)字的最大長(zhǎng)度 const int amax = 2047。// length of identifier table 標(biāo)示符表的長(zhǎng)度(容量)const int al = 10。const int norw = 16。調(diào)用條件表達(dá)式處理過程生成相應(yīng)代碼把結(jié)果放在數(shù)據(jù)棧頂,再生成條件轉(zhuǎn)移指令,轉(zhuǎn)移位置為上面記錄的CX1。Repeat語句的處理:首先用CX1變量記下當(dāng)前代碼段分配位置,作為循環(huán)的開始位置。then后的語句處理完后,如果遇到else,就調(diào)用語句處理過程處理else語句后面的語句或語句塊,這時(shí)當(dāng)前代碼段分配指針的位置就應(yīng)該是上面的jpc指令的轉(zhuǎn)移位置。接下去記錄下代碼段分配位置(即下面生成的jpc指令的位置),然后生成 條件轉(zhuǎn)移jpc指令(遇0或遇假轉(zhuǎn)移),轉(zhuǎn)移地址未知暫時(shí)填0。如果是句號(hào)且分程序分析中未出錯(cuò),則是一個(gè)合法的PL/0程序,可以運(yùn)行生成的代碼,否則就說明源PL/0程序是不合法的,輸出出錯(cuò)提示即可。由PL/0的語法圖可知:一個(gè)完整的PL/0程序是由分程序和句號(hào)構(gòu)成的。這些過程在結(jié)構(gòu)上構(gòu)成一個(gè)嵌套的層次結(jié)構(gòu)。語法分析子程序分析:語法分析子程序采用了自頂向下的遞歸子程序法,語法分析同時(shí)也根據(jù)程序的語義生成相應(yīng)三元代碼,并提供了出錯(cuò)處理的機(jī)制。如果識(shí)別出其它合法的符號(hào)(比如:賦值號(hào)、大于號(hào)、小于等于號(hào)等),則把SYM則成相應(yīng)的類型。查保留字表時(shí)使用了二分法查找以提高效率。詞法分析器的分析過程:調(diào)用GETSYM時(shí),它通過GETCH過程從源程序中獲得一個(gè)字符。Getch過程通過反復(fù)調(diào)用Getch子過程從源程序過獲取字符,并把它們拼成單詞。在源程序沒有錯(cuò)誤編譯通過的情況下,調(diào)用類PCODE解釋程序解釋執(zhí)行生成的類PCODE代碼。詞法分析和代碼生成作為獨(dú)立的子程序供語法分析程序調(diào)用。當(dāng)源程序編譯正確時(shí),PL/0編譯程序自動(dòng)調(diào)用解釋執(zhí)行程序,對(duì)目標(biāo)代碼進(jìn)行解釋執(zhí)行,并按用戶程序的要求輸入數(shù)據(jù)和輸出運(yùn)行結(jié)果。其編譯過程采用一趟掃描方式,以語法分析程序?yàn)楹诵?,詞法分析和代碼生成程序都作為一個(gè)獨(dú)立的過程,當(dāng)語法分析需要讀單詞時(shí)就調(diào)用詞法分析程序,而當(dāng)語法分析正確需要生成相應(yīng)的目標(biāo)代碼時(shí),則調(diào)用代碼生成程序。PL/0的目標(biāo)程序?yàn)榧傧霔J接?jì)算機(jī)的匯編語言,與具體計(jì)算機(jī)無關(guān)。}UNTIL 可根據(jù)自己具體情況從中選擇2個(gè)以上題目進(jìn)行擴(kuò)充。擴(kuò)充var數(shù)組:VAR (:)〈下界〉和〈上界〉可用常量標(biāo)識(shí)名。二、實(shí)驗(yàn)內(nèi)容1)仔細(xì)閱讀PL/0編譯程序文本(編譯原理(第二版)張素琴 呂映芝 蔣維杜 戴桂蘭 主編清華大學(xué)出版社),并上機(jī)調(diào)試通過。通過本次課程設(shè)計(jì)掌握編譯程序調(diào)試技巧和設(shè)計(jì)編譯程序一般的原則,加深對(duì)詞法分析、語法分析、語義分析等編譯階段及實(shí)用編譯系統(tǒng)的認(rèn)識(shí)。章節(jié)內(nèi)容代碼生成概述一個(gè)計(jì)算機(jī)模型一個(gè)簡(jiǎn)單的代碼生成器代碼生成研究現(xiàn)狀注:使用教材-編譯原理(第二版).張素琴,呂映芝,蔣維杜,戴桂蘭編著,清華大學(xué)出版社。教學(xué)難點(diǎn):寄存器分配策略。教學(xué)內(nèi)容:目標(biāo)機(jī)器模型,一個(gè)簡(jiǎn)單代碼生成器,寄存器分配,DAG目標(biāo)代碼,窺孔優(yōu)化。教學(xué)時(shí)間分配及進(jìn)度安排:建議本章教學(xué)時(shí)數(shù)6學(xué)時(shí)。教學(xué)重點(diǎn):局部?jī)?yōu)化;DAG的構(gòu)造與應(yīng)用。章節(jié)內(nèi)容數(shù)據(jù)空間的三種不同使用方法棧式存儲(chǔ)分配的實(shí)現(xiàn)參數(shù)傳遞第九章 代碼優(yōu)化教學(xué)目的及要求:本章介紹優(yōu)化的相關(guān)知識(shí),要求掌握局部?jī)?yōu)化,基本塊的DAG表示及其應(yīng)用,控制流分析和循環(huán)查找算法,到達(dá)定值與引用定值鏈,循環(huán)優(yōu)化。教學(xué)難點(diǎn):嵌套過程語言棧式分配,活動(dòng)記錄、運(yùn)行時(shí)棧的組織。教學(xué)內(nèi)容:目標(biāo)程序運(yùn)行時(shí)的活動(dòng),運(yùn)行時(shí)存儲(chǔ)器的劃分,靜態(tài)存儲(chǔ)管理,簡(jiǎn)單的棧式存儲(chǔ)分配的實(shí)現(xiàn),嵌套過程語言的棧式實(shí)現(xiàn),堆式動(dòng)態(tài)存儲(chǔ)分配。章節(jié)內(nèi)容符號(hào)表的作用和地位符號(hào)表的主要屬性及作用符號(hào)表的組織符號(hào)表的管理 第八章 運(yùn)行時(shí)存儲(chǔ)空間組織教學(xué)目的及要求:本章介紹目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織方式,包括靜態(tài)存儲(chǔ)分配和動(dòng)態(tài)存儲(chǔ)分配。教學(xué)難點(diǎn):符號(hào)表的內(nèi)容。教學(xué)內(nèi)容:符號(hào)表的作用、建立、符號(hào)表欄目的組織、符號(hào)表上的操作。教學(xué)難點(diǎn):屬性文法的處理方法教學(xué)時(shí)間分配及進(jìn)度安排:建議本章教學(xué)時(shí)數(shù)9學(xué)時(shí)。教學(xué)內(nèi)容:語法制導(dǎo)翻譯的基本概念、中間代碼的形式,可執(zhí)行語句和說明語句的語法制導(dǎo)翻譯方法。教學(xué)時(shí)間分配及進(jìn)度安排:建議本章教學(xué)時(shí)數(shù)12學(xué)時(shí)。教學(xué)重點(diǎn):歸約,算符優(yōu)先表構(gòu)造,LR分析法。章節(jié)內(nèi)容確定的自頂向下分析思想LL(1)文法的判別某些非LL(1)文法到LL(1)文法的等價(jià)變換不確定的自頂向下分析思想確定的自頂向下分析方法 第五章 語法分析—自下而上分析教學(xué)目的及要求:要求理解算符優(yōu)先文法、最左素短語、有效項(xiàng)目的基本概念;掌握算符優(yōu)先分析方法、L
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1