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

正文內(nèi)容

編譯原理課程設計ll遞歸下降分析器-文庫吧

2024-10-29 06:36 本頁面


【正文】 )|| a == 39。_39。)//是否為標識符 { temp = temp + ()。j++。a = code[j]。while((a)){ temp = temp + ()。j++。a = code[j]。} if(isKey(temp)){//(”保留字:“+temp)。if(!(temp)){ // (”添加成功“)。(temp)。}} else {//(”標識符:“+temp)。if(!(temp)){ //(”添加成功標識符==“)。(temp)。} }} else if((a)){ temp = temp + ()。j++。a = code[j]。while((a)){ temp = temp + ()。j++。a = code[j]。} //判斷是否是小數(shù)if((39。.39。)){ temp = temp + ()。j++。a = code[j]。while((a)){ temp = temp + ()。j++。a = code[j]。} //判讀是否是科學記數(shù)法if((39。E39。)|| (39。e39。)){ temp = temp + ()。j++。a = code[j]。while((a)){temp = temp + ()。j++。a = code[j]。} }}// (”數(shù)字:“+temp)。if(!(temp)){ //(”添加成功標識符==“)。(temp)。} } else if(a == 39。39。){ temp = temp + ()。j++。a = code[j]。} //(”關系符“+temp)。if(!(temp)){ //(”添加成功標識符==“)。(temp)。} } else if(a == 39。=39。){ temp = temp + ()。j++。a = code[j]。// (”關系符“+temp)。if(!(temp)){ //(”添加成功關系==“)。(temp)。} } else if(a == 39。39。){ temp = temp + ()。j++。a = code[j]。if(a == 39。=39。){ temp = temp + ()。j++。a = code[j]。}// (”關系符“+temp)。if(!(temp)){ //(”添加成功標識符==“)。(temp)。}} else { if(a == 39。+39。 || a == 39。39。 || a == 39。/39。 || a == 39。*39。){ temp = temp + ()。j++。a = code[j]。//(”運算符“+temp)。if(!(temp)){ //(”添加成功標識符==“)。(temp)。} } else{ j++。}} } }//判斷是不是保留字的IsKey方法static bool isKey(string key){bool flag = false。for(int i = 0。i 。i++)if(keys[i] == key){ flag = true。//(key+”是不是key“+flag)。break。} else { flag = false。} //(key+”是不是key“)。// (flag+”是不是key)。return flag。} } }第三篇:編譯原理課程設計課 程 設 計 報 告設計題目:一個簡單文法的編譯器前端的設計與實現(xiàn)班級: 計算機1206 組長學號:201239 組長姓名:閆智宣 指導教師:李曉華 設計時間:2014年12月[在此處鍵入]設計分工組長學號及姓名: 20123974閆智宣分工:語法分析,四元式生成,目標代碼優(yōu)化及生成 組員1學號及姓名:20123977廖峭 分工:詞法分析,錯誤處理 組員2學號及姓名:20123959郭天龍分工:符號表生成,語義動作插入,操作界面[在此處鍵入]摘要編譯原理課程設計是通過C語言編譯器相關子系統(tǒng)的設計,進一步加深對編譯器構造的理解;第一部分詞法分析,設計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設計種別碼,制作掃描器識別一個個單詞,返回值為識別碼的序號,返回Token序列。將詞法分析器設計成供語法分析器調(diào)用的子程序。詞法分析器具備預處理功能。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設計一個供詞法分析調(diào)用的預處理子程序;第二部分,語法分析,用遞歸下降法,實現(xiàn)對表達式、各種說明語句、控制語句進行語法分析。若語法正確,則用語法制導翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。我們還做了附加功能,即編譯后端,有中間代碼優(yōu)化,生成目標代碼匯編語言。通過此次課程設計,提高了我們的獨立分析問題、解決問題的能力,以及系統(tǒng)軟件設計的能力; 提高程序設計能力、程序調(diào)試能力,團結(jié)協(xié)作能力關鍵詞:詞法分析,語法分析,四元式生成,錯誤處理,符號表生成,語義動作插入,中間代碼優(yōu)化,生成目標代碼 [在此處鍵入]目錄摘要 設計任務 設計要求(流程) 詞法分析模塊 功能 數(shù)據(jù)結(jié)構 算法 語法分析模塊 數(shù)據(jù)結(jié)構 符號表模塊 數(shù)據(jù)結(jié)構 四元式模塊[在此處鍵入] 數(shù)據(jù)結(jié)構 語義動作分析模塊 數(shù)據(jù)結(jié)構 錯誤處理模塊 數(shù)據(jù)結(jié)構 目標代碼模塊 數(shù)據(jù)結(jié)構 程序流程圖 程序說明 實驗結(jié)果 。、體會和建議。[在此處鍵入]編譯器是將C語言翻譯為匯編語言代碼的計算機程序。編譯器將源程序(source language)編寫的程序作為輸入,翻譯產(chǎn)生目標語言(target language)機器代碼的等價程序。通常地,源程序為高級語言(highlevel language),C語言程序,而目標則是 機器語言的目標代碼(object code),也就是可以在計算機硬件中運行的機器代碼軟件程序。這一過程可以表示為:源程序→編譯器 →目標機器代碼程序?qū)W生在學習《編譯原理》課程過程中,結(jié)合各章節(jié)的構造編譯程序的基本理論,要求用C語言描述及上機調(diào)試,實現(xiàn)一個 C編譯程序(包括詞法分析,語法分析等重要子程序),使學生將理論與實際應用結(jié)合起來,受到軟件設計等開發(fā)過程的全面訓練,從而提高學生軟件開發(fā)的能力。 要求:(1)設計詞法分析器設計各單詞的狀態(tài)轉(zhuǎn)換圖,并為不同的單詞設計種別碼。將詞法分析器設計成供語法分析器調(diào)用的子程序。功能包括:。將不翻譯的注釋等符號先濾掉,只保留要翻譯的符號串,即要求設計一個供詞法分析調(diào)用的預處理子程序;; [在此處鍵入](種別碼,屬性值,行號)。(2)語法分析要求用學習過的自底向上或自頂向下的分析方法等,實現(xiàn)對表達式、各種說明語句、控制語句進行語法分析。若語法正確,則用語法制導翻譯法進行語義翻譯;生成并打印出語法樹;若語法錯誤,要求指出出錯性質(zhì)和出錯位置(行號)。(流程)本節(jié)主要分析程序的代碼結(jié)構和代碼工程文件的劃分。(程序由幾個類組成: Token類和Variable類SymbolTable類ObjectCode類Lexical類Grammar類Four_Yuan類Action類ErrorItem類,分別為詞法分析和語法分析類。工程分為幾個文件:,,Four_Yuan,cs,)。本程序采用C語言以面向?qū)ο蟮乃枷刖帉?,程序分為幾部分:詞法分析(Lexical),語法分析(Grammer),目標代碼生成(ObjectCode)。Lexical類主要的工作是詞法分析獲取Token。Grammer類的主要工作是根據(jù)Lexical類詞法分析之后的Token進行語法分析,生成語法樹,最后并輸出語法樹。在處理過程中,Token類的對象作為Lexical類的一個成員變量,配合Grammer類進行語法分析。工程文件總體上是按照九個類的格局分為十個文件,分別是九個類的聲明文件和實現(xiàn)文件。,,Four_Yuan,cs,,他們分別是Lexical類聲明文件、Lexical類實現(xiàn)文件、Grammer類聲明文件、Grammer類實現(xiàn)文件。[在此處鍵入]程序流程在程序中,Lexical類的對象(Token)作為Grammer類中的一個成員變量,配合Grammer類進行語法分析。它們的關系是這樣的:Grammer類的一個成員變量temp首先對源程序刪除注釋,然后進行詞法分析獲取所有Token,并將獲取的Token存儲在Token對象的tokenList(List類型)中。然后Grammer類的語法分析程序就根據(jù)tokenList中的Token進行語法分析,生成語法樹,最后打印語法樹。同時,這也是程序的流程。[在此處鍵入] 詞法分析模塊 Lexical類主要的工作是詞法分析獲取Token序列。詞法分析階段的代碼被封裝成一個類——Lexical,Token中主要是Lexical類的聲明代碼。Lexical類對外提供的函數(shù)主要有: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),以上幾個函數(shù)構成了詞法分析的骨架,在Lexical類中還有其他成員變量和函數(shù),主要作為這三個函數(shù)處理過程的中間步驟,為這三個函數(shù)服務。Lexical類的代碼結(jié)構和主要的成員變量和函數(shù)及其含義如下圖所示:算法的基本任務是從字符串表示的源程序中識別出具有獨立意義的單詞符號,其基本思想是[在此處鍵入]根據(jù)掃描到單詞符號的第一個字符的種類,拼出相應的單詞符號。主程序示意圖:主程序示意圖如圖31所示。⑴ 關鍵字表的初值。關鍵字作為特殊標識符處理,把它們預先安排在一張表格中(稱為關鍵字表),當掃描程序識別出標識符時,查關鍵字表。如能查到匹配的單詞,則該單詞為關鍵字,否則為一般標識符。(2)程序中需要用到的主要變量為type和number 掃描子程序的算法思想:首先設置3個變量: [在此處鍵入]①token用來存放構成單詞符號的字符串; ②number用來整型單詞;③type用來存放單詞符號的種別碼。Token定義Token定義:Token類型(TokenType): 語法分析模塊語法分析是編譯過程的一個邏輯階段。語法分析的功能是在詞法分析的基礎上將單詞序列組合成各類語法短語,如“程序”,“語句”,“表達式” 數(shù)據(jù)結(jié)構下圖為實現(xiàn)語法分析的類Grammar,屬性與方法的作用都已說明 在此處鍵入]下面終結(jié)符與非終結(jié)符意義B程序開始Z 數(shù)據(jù)類型,如int,char,float等V 標識符S 語句P 語句塊E 加減算術表達式D 逗號表達式T 乘除算術表達式C 關系表達式L 邏輯表達式Q 標識符或圓括號e 表示空i 表示標識符 a)函數(shù)文法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。amp。Q|L||i|(E)|!Q對應于每個文法編寫如下遞歸下降子程序主程序(B)[在此處鍵入] [在此處鍵入] 符號表模塊進行符號表的儲存,添加,更新,查找,保存標識符活躍信息以及輸出。 數(shù)據(jù)結(jié)構在此處鍵入] 四元式模塊四元式為中間代碼,編譯程序進行完語義分析后,先生成中間代碼作為過渡,此時中間代碼與目標代碼已經(jīng)比較相似 數(shù)據(jù)結(jié)構[ 在此處鍵入]在語法分析中嵌入相應的語義動作,生成四元式 數(shù)據(jù)結(jié)構[[在此處鍵入] GEQ(+)()(*)(/)(+,i1,i2,t)PUSH(i)ASSI(=)(=,t,_,POP)LABER(i)(lb,_,_,i)GOTO(i)(gt,_,_,i)IF(if)(if,a,_,_)EL(el)(el,_,_,_)IE(ie)(ie,_,_,_)WH()(wh,_,_,_)DO()(do,a,_,_)WE(we)(we,_,_,_) 錯誤處理模塊 保存運行時發(fā)現(xiàn)的錯誤,儲存行號已經(jīng)詳細信息并輸出。 數(shù)據(jù)結(jié)構 [在此處鍵入]public static void AddErrorMessage(int lineno,string content)函數(shù)用作在發(fā)現(xiàn)錯誤時保存錯誤信息以及行號。public static string PrintErrorList()把所有發(fā)現(xiàn)的錯誤格式化后統(tǒng)一輸出。錯誤信息在語法分析,語義分析,符號表檢錯中添加。 目標代碼模塊目標代碼生成把優(yōu)化后的中間代碼變換成目標代碼,此處的目標代碼為匯編代碼,采用單寄存器生成目標代碼 數(shù)據(jù)結(jié)構[在此處鍵入]對于一個基本塊有如下流程圖W:操作符,B:第一操作數(shù),C:第二操作數(shù),R:寄存器網(wǎng)上找一段話抄上 [在此處鍵入]測試打開文件測試保存文件如果沒打開文件,直接敲代碼,點保存時會彈出另存為窗口[在此處鍵入]測試錯誤檢測,程序缺少main函數(shù)的類型,錯誤列表中顯示第一行函數(shù)缺少錯誤類型。測試錯誤檢測,程序缺少分號,錯誤列表中顯示該行缺少語句結(jié)束標志39。39。 單擊錯誤列表,
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1