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

正文內(nèi)容

編譯原理課程設計報告-預覽頁

2025-11-09 23:33 上一頁面

下一頁面
 

【正文】 始符號集 Table table[txmax+1]。}void error(int n)。程序區(qū)void test(symset s1,symset s2,int n)。dx,int lev)。dx,int lev)。void listcode(int cx0)。void factor(symset fsys,int tx,int lev)。 dx,int lev)。// 構造函數(shù)// 析構函數(shù)// 出錯處理,打印出錯// 詞法分析,讀取一// 漏掉空格,讀取一// 生成目標代碼,并送入目標// 測試當前單詞符號是否// 分程序分析處理過程// 登入名字表// 查找標示符在名字表中// 常量定義處理// 變量說明處理// 列出目標代碼清單// 語句部分處理// 表達式處理// 項處理// 因子處理// 條件處理// 數(shù)組說明處理// 對目標代碼的解釋// 通過靜態(tài)鏈求出數(shù)據(jù)區(qū)的 // 保存代碼}。“, ”error 0018: while型循環(huán)語句中丟了do“, ”error 0019: 語句后的標識符不正確“, ”error 0020: 應為關系運算符“, ”error 0021: 表達式內(nèi)標識符屬性不能是過程“, ”error 0022: 表達式中漏掉了右括號‘)’“, ”error 0023: 因子后的非法符號“, ”error 0024: 表達式開始符不能是此符號“, ”error 0025: 文件在不該結束的地方結束了“, ”error 0026: 結束符出現(xiàn)在不該結束的地方“, ”error 0027: “,”error 0028: “,”error 0029: “,”error 0030: “, ”error 0031: 數(shù)越界“, ”error 0032: read語句括號中標識符不是變量“, ”error 0033: else附近錯誤“ , ”error 0034: repeat附近錯誤“}。strcpy(word[3],”const“)。strcpy(word[7],”if“)。strcpy(word[11],”repeat“)。strcpy(word[15],”while“)。留字對應的symbol類型wsym[3]= CONSTSYM。wsym[7]= IFSYM。wsym[11]= REPEATSYM。wsym[15]= WHILESYM。memset(table,0,sizeof(table))。]= PLUS。ssym[39。/39。]= LPAREN。ssym[39。,39。]= PERIOD。ssym[39。39。strcpy(mnemonic[LOD],” lod “)。strcpy(mnemonic[JMP],” jmp “)。// (IDENT),(NUMBER),(LPAREN)。// 代碼分配指針,代碼生成模塊總在cx所指位置生成新的代碼ll= 0。// 引入此變量是出于程序性能考慮 codeNo=0。sprintf(s,”第 %d 行:“,codeNo)。int i,j,k。// cls space and tab if(isalpha(ch))// id or reserved word {k=0。} getch()。else { do{a[kk]= 39。} strcpy(id,a)。if(strcmp(id, word[k])j= k1。} else if(isdigit(ch))// number { k= 0。039。if(k nmax)error(30)。if(ch == 39。} elsesym= NUL。if(ch == 39。} elsesym= GTR。sourceEnd=true。codeNo++。cc= cc+1。code[cx].a= z。symset::iterator it。//s1=s1+s2while((sym)==())getsym()。// initial table index int cx0。gen(JMP,0,0)。while(sym == COMMA){}getsym()。}while(sym==IDENT)。vardeclaration(tx,dx,lev)。} while(sym ==PROCSYM)// 處理過程的聲明 { getsym()。if(sym ==SEMICOLON)getsym()。block(lev+1,tx,tmp)。i((symbol)i)。(IDENT)。table[tx0].= cx。symset tmp=statbegsys。gen(OPR,0,0)。}// block end// 登入名字表void PL0::enter(obj0 k,int amp。table[tx].kind=k。break。break。break。while(strcmp(table[i].name,id)!=0)i。dx,int lev){ if(sym == IDENT){getsym()。getsym()。}elseerror(3)。dx,int lev){ if(sym == IDENT){enter(VARIABLE,tx,dx,lev)。tx,intamp。getsym()。if(sym == NUMBER || sym == CONSTSYM){downscript = num。getsym()。int i,cx1,cx2。i= 0。expression(fsys,tx,lev)。if(sym!=LPAREN)error(34)。if(i==0)error(35)。}while(sym == COMMA)。} else if(sym == WRITESYM){ getsym()。t((symbol)t)。if(sym!=RPAREN)error(33)。if(sym!=IDENT)error(14)。elseerror(15)。for(int i = THENSYM。elseerror(16)。statement(tmp,tx,lev)。cx2=cx。code[cx2].a=cx。i((symbol)i)。while((sym)!=()){if(sourceEnd)return。}elseerror(10)。if(sourceEnd)return。else if(!sourceEnd)error(17)。(DOSYM)。if(sym ==DOSYM)getsym()。code[cx2].a= cx。getsym()。while((sym)!= ()){if(sym == SEMICOLON)getsym()。condition(fsys,tx,lev)。test(fsys,setT,19)。t((symbol)t)。getsym()。while(sym =PLUSamp。term(tmp,tx,lev)。symbol mulop。factor(tmp,tx,lev)。getsym()。} }// term end// 因子處理void PL0:: factor(symset fsys,int tx,int lev){ int i。elseswitch(table[i].kind){case CONSTANT:gen(LIT,0,table[i].)。case PROCEDURE:error(21)。num= 0。symset tmp=fsys。elseerror(22)。(EQL),(NEQ),(LSS),(LEQ),(GTR),(GEQ)。} else {expression(tmp,tx,lev)。expression(fsys,tx,lev)。break。break。break。break。break。s[t]= s[t]+s[t+1]。break。case 5: t= t1。elses[t]=0。elses[t]=0。elses[t]=1。elses[t]=0。elses[t]=0。elses[t]=0。elses[t]=0。}。break。case CAL:// generate new block marks[t+1]= base(,b,s)。p=。case JMP:p= 。break。//find base l levels down while(l0){b1= s[b1]。ifprintf(fout,”%d %s %d %dn “,i,mnemonic[code[i].f],code[i].l,code[i].a)。(CONSTSYM),(VARSYM),(PROCSYM)。// 分程序分析處理功能()。在實現(xiàn)此程序中,由于要實現(xiàn)關鍵字和符號表中字段的搜索,實現(xiàn)中就必須注意快速查找的方法,而在實現(xiàn)的過程中多次用到了二分搜索的方法,這是個比較快的搜索方法。第二篇:編譯原理課程設計報告(格式)編譯原理課程設計報告課題名稱:提交文檔學生姓名:提交文檔學生學號:同組 成 員 名 單:無指導 教 師 姓 名:指導教師評閱成績:指導教師評閱意見:提交報告時間:年月日構造的編譯器的組成部分,能實現(xiàn)的功能。詞法分析器具備預處理功能。通過此次課程設計,提高了我們的獨立分析問題、解決問題的能力,以及系統(tǒng)軟件設計的能力; 提高程序設計能力、程序調(diào)試能力,團結協(xié)作能力關鍵詞:詞法分析,語法分析,四元式生成,錯誤處理,符號表生成,語義動作插入,中間代碼優(yōu)化,生成目標代碼 [在此處鍵入]目錄摘要 設計任務 設計要求(流程) 詞法分析模塊 功能 數(shù)據(jù)結構 算法 語法分析模塊 數(shù)據(jù)結構 符號表模塊 數(shù)據(jù)結構 四元式模塊[在此處鍵入] 數(shù)據(jù)結構 語義動作分析模塊 數(shù)據(jù)結構 錯誤處理模塊 數(shù)據(jù)結構 目標代碼模塊 數(shù)據(jù)結構 程序流程圖 程序說明 實驗結果 。通常地,源程序為高級語言(highlevel language),C語言程序,而目標則是 機器語言的目標代碼(object code),也就是可以在計算機硬件中運行的機器代碼軟件程序。功能包括:。(流程)本節(jié)主要分析程序的代碼結構和代碼工程文件的劃分。Lexical類主要的工作是詞法分析獲取Token。,Four_Yuan,cs,,他們分別是Lexical類聲明文件、Lexical類實現(xiàn)文件、Grammer類聲明文件、Grammer類實現(xiàn)文件。同時,這也是程序的流程。Lexical類的代碼結構和主要的成員變量和函數(shù)及其含義如下圖所示:算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是[在此處鍵入]根據(jù)掃描到單詞符號的第一個字符的種類,拼出相應的單詞符號。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。amp。public static string PrintErrorList()把所有發(fā)現(xiàn)的錯誤格式化后統(tǒng)一輸出。39。直接拷貝好歹也檢查一下錯誤對于編譯原理的這次課程設計,自己經(jīng)歷了從剛開始的不懂224。完成基本功能224。充分了解了詞法分析的任務之后,就開始理論知識的學習。再后來寫報告的時候,發(fā)現(xiàn)分析出Token的那個DFA并不是最簡的,有很多多余的狀態(tài),完全可以用一個flag標志來標識,從而簡化代碼結構,于是又重寫了一次詞法分析函數(shù)scan()的代碼,將狀態(tài)縮減為5個,且不再用15來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時為了簡化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個printToken()的函數(shù),使scan()函數(shù)邏輯更加清晰,使讀者能夠容易地將代碼與DFA進行查看比照。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個文法中的某一個文法進行分析,有時必須探測需要的或下一個Token的類型,在這種情況下需要求First集合,在推導中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據(jù)求出的First集合和Follow集合進行判斷,以確定程序的走向。語法分析主要能根據(jù)遞歸向下的分析思想和C文法對詞法分析獲取的Token進行語法分析,能夠構造出語法樹,能夠判別語法分析過程中是否出錯以及出錯位置和錯誤類型。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內(nèi)容都忘記了,通過本次的實踐,自己又重新拾起了以前的知識。在基本實驗完成的基礎上,逐步完成課程設計。如果該名字在符號表中不存在,則將其加入到符號表中,否則返回指向該名字的指針;:從符號表中刪除給定名字的表項。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設計一個供詞法分析調(diào)用的預處理子程序;;;(種別碼,屬性值)。(4)優(yōu)化器:設計出劃分基本塊的算法,在每一個基本塊中實現(xiàn):合并已知量、刪除多余運算和刪除無用賦值三種局部優(yōu)化。(5)目標代碼生成器能完成指定寄存器個數(shù)的情況下將一中間代碼程序段翻譯成匯編語言目標代碼(匯編指令應包括加、減、乘、除),要求指令條數(shù)最少的情況下,盡量使用寄存器,盡量少訪問內(nèi)存,這樣才能做到運行效率高。要求輸入一小段完整的C語言源程序,輸出各編譯階段的運行結果。通過該課程設計,收獲頗多。三、通過該課程設計,全面系統(tǒng)的理解了編譯原理程序構造的一般原理和基本實現(xiàn)方法。課程設計中程序比較復雜,在調(diào)試時應該仔細,在程序調(diào)試時,注意指針,將不必要的命
點擊復制文檔內(nèi)容
語文相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1