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

正文內容

編譯原理課程設計要求-wenkub

2024-11-14 22 本頁面
 

【正文】 代碼224。陳火旺.《程序設計語言編譯原理》(第3版).北京:、美 Alfred Ravi Sethi Jeffrey ,姜守旭譯.《編譯原理》.24 [在此處鍵入]北京:、美 Kenneth .《編譯原理及實踐》.北京:、金成植著.《編譯程序構造原理和實現技術》.北京:、體會和建議。測試錯誤檢測,程序缺少分號,錯誤列表中顯示該行缺少語句結束標志39。 數據結構 [在此處鍵入]public static void AddErrorMessage(int lineno,string content)函數用作在發(fā)現錯誤時保存錯誤信息以及行號。語法分析的功能是在詞法分析的基礎上將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達式” 數據結構下圖為實現語法分析的類Grammar,屬性與方法的作用都已說明 在此處鍵入]下面終結符與非終結符意義B程序開始Z 數據類型,如int,char,float等V 標識符S 語句P 語句塊E 加減算術表達式D 逗號表達式T 乘除算術表達式C 關系表達式L 邏輯表達式Q 標識符或圓括號e 表示空i 表示標識符 a)函數文法BZV()S[[在此處鍵入]b)語句塊文法PSP|eS{P} c)語句文法表達式語句文法SV=Egoto語句文法Si:SSgoto iif語句文法Sif(E)S[else S]while語句文法Swhile(E)S聲明語句文法SZVDD,VD|=ED|e d)表達式文法ET|E+T|ETTF|T*F|T/FCC|CL|C==C|C=LLQ|Lamp。關鍵字作為特殊標識符處理,把它們預先安排在一張表格中(稱為關鍵字表),當掃描程序識別出標識符時,查關鍵字表。Lexical類對外提供的函數主要有:static public int RecogId(string str, int i),static public int RecogDig(string str,int i),static public int RecogOperator(string str, int i),static public int RecogBound(string str, int i),以上幾個函數構成了詞法分析的骨架,在Lexical類中還有其他成員變量和函數,主要作為這三個函數處理過程的中間步驟,為這三個函數服務。然后Grammer類的語法分析程序就根據tokenList中的Token進行語法分析,生成語法樹,最后打印語法樹。工程文件總體上是按照九個類的格局分為十個文件,分別是九個類的聲明文件和實現文件。本程序采用C語言以面向對象的思想編寫,程序分為幾部分:詞法分析(Lexical),語法分析(Grammer),目標代碼生成(ObjectCode)。若語法正確,則用語法制導翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質和出錯位置(行號)。將詞法分析器設計成供語法分析器調用的子程序。編譯器將源程序(source language)編寫的程序作為輸入,翻譯產生目標語言(target language)機器代碼的等價程序。我們還做了附加功能,即編譯后端,有中間代碼優(yōu)化,生成目標代碼匯編語言。將詞法分析器設計成供語法分析器調用的子程序。3.在提交論文時填寫課程設計封面,詳細注明課程名稱、題目、學號、姓名、年級、專業(yè)班級等基本信息。3. 禁止課程設計抄襲,發(fā)現原文抄襲網站或報刊內容以零分記。 心得體會文檔不少于12頁,參考文獻不少于10個,最后提交源程序和文檔(檢查通過以后再打?。?,格式嚴格按照模版。 實現原理178。 程序流程圖178。第二篇:《編譯原理》課程設計要求《編譯原理》課程設計實施方案課程設計的具體內容以傳至共享《》中,由于學校沒有足夠大的機房供我們課程設計,所以課程設計采取單獨輔導形勢,同學們有任何問題,可以來我辦公室答疑。,發(fā)現雷同以零分記。(由各班班長統(tǒng)一用U盤拷貝給我)。詞法分析器具備預處理功能。通過此次課程設計,提高了我們的獨立分析問題、解決問題的能力,以及系統(tǒng)軟件設計的能力; 提高程序設計能力、程序調試能力,團結協(xié)作能力關鍵詞:詞法分析,語法分析,四元式生成,錯誤處理,符號表生成,語義動作插入,中間代碼優(yōu)化,生成目標代碼 [在此處鍵入]目錄摘要 設計任務 設計要求(流程) 詞法分析模塊 功能 數據結構 算法 語法分析模塊 數據結構 符號表模塊 數據結構 四元式模塊[在此處鍵入] 數據結構 語義動作分析模塊 數據結構 錯誤處理模塊 數據結構 目標代碼模塊 數據結構 程序流程圖 程序說明 實驗結果 。通常地,源程序為高級語言(highlevel language),C語言程序,而目標則是 機器語言的目標代碼(object code),也就是可以在計算機硬件中運行的機器代碼軟件程序。功能包括:。(流程)本節(jié)主要分析程序的代碼結構和代碼工程文件的劃分。Lexical類主要的工作是詞法分析獲取Token。,Four_Yuan,cs,,他們分別是Lexical類聲明文件、Lexical類實現文件、Grammer類聲明文件、Grammer類實現文件。同時,這也是程序的流程。Lexical類的代碼結構和主要的成員變量和函數及其含義如下圖所示:算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是[在此處鍵入]根據掃描到單詞符號的第一個字符的種類,拼出相應的單詞符號。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。amp。public static string PrintErrorList()把所有發(fā)現的錯誤格式化后統(tǒng)一輸出。39。直接拷貝好歹也檢查一下錯誤對于編譯原理的這次課程設計,自己經歷了從剛開始的不懂224。完成基本功能224。充分了解了詞法分析的任務之后,就開始理論知識的學習。再后來寫報告的時候,發(fā)現分析出Token的那個DFA并不是最簡的,有很多多余的狀態(tài),完全可以用一個flag標志來標識,從而簡化代碼結構,于是又重寫了一次詞法分析函數scan()的代碼,將狀態(tài)縮減為5個,且不再用15來表示,而是像書上那樣分別取了名字(START、INNUM、INID、INDBSYM、DONE),同時為了簡化代碼將輸出Token到文件的部分從scan()中剝離開來,而在Lexical類中加了一個printToken()的函數,使scan()函數邏輯更加清晰,使讀者能夠容易地將代碼與DFA進行查看比照。由于在編寫代碼的過程中需要確定分析是否正確或選擇多個文法中的某一個文法進行分析,有時必須探測需要的或下一個Token的類型,在這種情況下需要求First集合,在推導中若存在empty,又需要求Follow集合,所以這樣又需要我了解First集合和Follow集合,自己在程序中也根據求出的First集合和Follow集合進行判斷,以確定程序的走向。語法分析主要能根據遞歸向下的分析思想和C文法對詞法分析獲取的Token進行語法分析,能夠構造出語法樹,能夠判別語法分析過程中是否出錯以及出錯位置和錯誤類型。由于以前編寫代碼都是使用JAVA語言,所以C/C++很多內容都忘記了,通過本次的實踐,自己又重新拾起了以前的知識。通過本次課程設計掌握編譯程序調試技巧和設計編譯程序一般的原則,加深對詞法分析、語法分析、語義分析等編譯階段及實用編譯系統(tǒng)的認識。擴充var數組:VAR (:)〈下界〉和〈上界〉可用常量標識名。PL/0的目標程序為假想棧式計算機的匯編語言,與具體計算機無關。當源程序編譯正確時,PL/0編譯程序自動調用解釋執(zhí)行程序,對目標代碼進行解釋執(zhí)行,并按用戶程序的要求輸入數據和輸出運行結果。在源程序沒有錯誤編譯通過的情況下,調用類PCODE解釋程序解釋執(zhí)行生成的類PCODE代碼。詞法分析器的分析過程:調用GETSYM時,它通過GETCH過程從源程序中獲得一個字符。如果識別出其它合法的符號(比如:賦值號、大于號、小于等于號等),則把SYM則成相應的類型。這些過程在結構上構成一個嵌套的層次結構。如果是句號且分程序分析中未出錯,則是一個合法的PL/0程序,可以運行生成的代碼,否則就說明源PL/0程序是不合法的,輸出出錯提示即可。then后的語句處理完后,如果遇到else,就調用語句處理過程處理else語句后面的語句或語句塊,這時當前代碼段分配指針的位置就應該是上面的jpc指令的轉移位置。調用條件表達式處理過程生成相應代碼把結果放在數據棧頂,再生成條件轉移指令,轉移位置為上面記錄的CX1。// length of identifier table 標示符表的長度(容量)const int al = 10。// maximum depth of block nesting 最大允許的塊嵌套層數 const int cxmax = 200。// alfa類型用于標識符 typedef enum {CONSTANT,VARIABLE,PROCEDURE,ARRAY} obj0。// function code int l。t big than amax }。}inOther。class PL0 {protected:bool listswitch,sourceEnd。// last identifier read int num。int cx。// code line vector errorString。// 保留字表symbol wsym[norw+1]。// 聲明開始、表達式開始和項開始符號集 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)。// 構造函數// 析構函數// 出錯處理,打印出錯// 詞法分析,讀取一// 漏掉空格,讀取一// 生成目標代碼,并送入目標// 測試當前單詞符號是否// 分程序分析處理過程// 登入名字表// 查找標示符在名字表中// 常量定義處理// 變量說明處理// 列出目標代碼清單// 語句部分處理// 表達式處理// 項處理// 因子處理// 條件處理// 數組說明處理// 對目標代碼的解釋// 通過靜態(tài)鏈求出數據區(qū)的 // 保存代碼}?!? ”error 0018: while型循環(huán)語句中丟了do“, ”error 0019: 語句后的標識符不正確“, ”error 0020: 應為關系運算符“, ”error 0021: 表達式內標識符屬性不能是過程“, ”error 0022: 表達式中漏掉了右括號‘)’“, ”error 0023: 因子后的非法符號“, ”error 0024: 表達式開始符不能是此符號“, ”error 0025: 文件在不該結束的地方結束了“, ”error 0026: 結束符出現在不該結束的地方“, ”error 0027: “,”error 0028: “,”error 0029: “,”error 0030: “, ”error 0031: 數越界“, ”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+
點擊復制文檔內容
物理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1