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

正文內(nèi)容

編譯原理課程設(shè)計ll遞歸下降分析器-展示頁

2024-10-29 06:36本頁面
  

【正文】 程序。return flag。} //(key+”是不是key“)。break。i++)if(keys[i] == key){ flag = true。for(int i = 0。} } else{ j++。if(!(temp)){ //(”添加成功標識符==“)。a = code[j]。){ temp = temp + ()。 || a == 39。 || a == 39。 || a == 39。}} else { if(a == 39。if(!(temp)){ //(”添加成功標識符==“)。a = code[j]。){ temp = temp + ()。if(a == 39。j++。39。(temp)。// (”關(guān)系符“+temp)。j++。=39。(temp)。} //(”關(guān)系符“+temp)。j++。39。(temp)。} }}// (”數(shù)字:“+temp)。j++。a = code[j]。)){ temp = temp + ()。)|| (39。} //判讀是否是科學(xué)記數(shù)法if((39。j++。a = code[j]。)){ temp = temp + ()。} //判斷是否是小數(shù)if((39。j++。a = code[j]。} }} else if((a)){ temp = temp + ()。if(!(temp)){ //(”添加成功標識符==“)。(temp)。} if(isKey(temp)){//(”保留字:“+temp)。j++。a = code[j]。)//是否為標識符 { temp = temp + ()。if((a)|| a == 39。while(j ){ a = code[j]。string temp = “。} static void analysisByLine(string code)//輸出所有的數(shù)字 //輸出所有的關(guān)系運算符//輸出所有的算數(shù)運算符{char a = 39。}(“輸入回車退出”)。()。foreach(string id in gx){ (id)。}(“關(guān)系運算符,輸入回車”)。()。foreach(string id in bsf){ (id)。}(“標識符,輸入回車”)。//輸出所有的關(guān)鍵字 ()。analysisByLine(date[i])。i 。//保存數(shù)字運算符//數(shù)字,標識符,空白,關(guān)系符,運算符static void Main(string[] args){string[] date = (“d:”)。//保存數(shù)字static List gx = new List()。//保存關(guān)鍵字static List bsf = new List()。namespace LexicalAnalysis { class Program { static string[] keys = { “static”, “true”, “return”, “string”, “Length”, “break”, “Console”, “WriteLine”, “bool”, “false”, “ture”, “void”, “if”, “else”, “while”, “int”, “float”, “for”, “enum”, “default”, “case”, “double”, “do” }。using 。附件2:1.Code文檔截圖using System。通過本次試驗,不僅僅是我學(xué)會了C基礎(chǔ)知識,而且還是我對詞法分析器有了更深入的認識,雖然在編寫詞法分析器過程中遇到了很多困難,例如:C語言不熟悉,對此法分析器的工作原理分析的不透徹,但在老師和同學(xué)的幫助下,我有了很大的提高,通過不斷的努力最終順利的完成了課程設(shè)計,很感謝幫助我的XX同學(xué)和XX老師。詞法分析器的任務(wù)是把構(gòu)成源程序的字符流翻譯成詞法記號流。參考文獻《編譯原理》 機械工業(yè)出版社出版Alfred Ravi Sethi Jeffrey D,Ullman著李建中 姜守旭等譯《程序設(shè)計語言 編譯原理(第三版)》 國防工業(yè)出版社出版陳火旺 劉春林 譚慶平趙克佳 劉越 著第二篇:《編譯原理》課程設(shè)計報告詞法分析器201X201X學(xué)年第x學(xué)期《編譯原理》課程設(shè)計報告院 系: 計算機科學(xué)與技術(shù) 班 級: XX級XX 班 學(xué)生姓名: XXXXXX 學(xué) 號: XXXXXXXX 指導(dǎo)老師: XXXXXX計算機科學(xué)與技術(shù)學(xué)院監(jiān)制20XX年X月目錄 附件1:參考文獻 附件2:核心源代碼(1)編寫詞法分析器(2)加深對詞法分析器工作原理的了解和認識編寫詞法分析器,詞法分析器能夠識別關(guān)系算符,詞法分析器能夠識別標識符和關(guān)鍵字,詞法分析器能夠識別無符號數(shù)。通過本次編譯原理課程設(shè)計,對面向?qū)ο蟮亩x又有了更深一步的理解,對編譯程序有了進一步的理解,同時也認識到自己各方面知識的薄弱點,以后在學(xué)習(xí)中也能有針對性對這方面進行深入學(xué)習(xí)。今后學(xué)習(xí)的日子還很長,希望通過這次編譯原理的課程設(shè)計,不僅對編程語言的進一步復(fù)習(xí),還是對更深層次的學(xué)習(xí)作一個簡單的準備。缺點是對文法要求高,必須是LL(1)文法,同時由于遞歸調(diào)用較多,影響分析器的效率。但是要注意的是,在編寫代碼時,要根據(jù)LL(1)文法的工作原理去設(shè)計。雖然這花費了一定的時間和精力,但那點付出也是值得的,通過復(fù)習(xí)讓我加深理解了有關(guān)自上而下語法分析的內(nèi)容,而且也為用高級語言實現(xiàn)遞歸下降分析器帶來便利。本次課程設(shè)計,我選的課程設(shè)計題目是LL(1)遞歸下降分析器,這個題目涉及的內(nèi)容有關(guān)課本第四章 語法分析——自上而下分析里面的內(nèi)容。本人因為上課無法做到打醒十二分專心聽課,經(jīng)常會分神,所以學(xué)習(xí)的效果也不怎么好。我覺得編譯原理這門課是一門非常難學(xué)的課程,它涉及文法、詞法分析、語法分析屬性文法和語義分析等等一系列內(nèi)容,課本里的內(nèi)容和定義也非常的抽象且枯燥。cout(E)”測試分析圖2 測試分析成功圖3 測試分析失敗用戶手冊開發(fā)工具:visual c++ 開發(fā)環(huán)境:windows XP操作系統(tǒng)運行環(huán)境:windows 9x,windows NT,Windows 2000,windows XP 注意:輸入時,程序最多只能接受50個字符,輸入完算術(shù)表達式后要以“”號結(jié)束。(39?!?FT39。/39。*39?!盕T39。cout^”TE39。)39。39。39。+39。coutTE39。void main(){}void e(){}void e1()right=1。void t1()。void e1()。//數(shù)組下標 int right。(3)當(dāng)遇到Aε規(guī)則時,則編寫語句If(當(dāng)前讀到的輸入符號不屬于Follow(A))error()(4)當(dāng)某個非終結(jié)符的規(guī)則有多個候選式時,按LL(1):圖1遞歸下降子程序流程圖詳細設(shè)計include char inputstream[50]。需要先將原算術(shù)表達式方法改寫為LL(1)文法為:ETE’E’+TE’|TE’| ε TFT’T’*FT’|/FT’| ε F(E)| i 然后再為每個非終結(jié)符設(shè)計一個對應(yīng)的函數(shù),通過各函數(shù)之間的遞歸調(diào)用從而實現(xiàn)遞歸下降語法分析的功能。算術(shù)表達式文法如下: EE+T|ET|T TT*F|T/F|F F(E)| i 首先改寫文法為LL(1)文法;然后為每一個非終結(jié)符,構(gòu)造相應(yīng)的遞歸過程,過程的名字表示規(guī)則左部的非終結(jié)符;過程體按規(guī)則右部符號串的順序編寫。這樣的一個分析程序稱為遞歸下降分析器。FOLLO(WA)=fLL(1)中的第一個L表示從左到右掃描輸入串,第二個L表示最左推導(dǎo),1表示分析時每 一步只需向前查看一個符號。FIRST(aj)=f (i185。即,若A174。由于上述原因,我們需要把原算術(shù)表達式改寫為LL(1)文法,LL(1)文法的文法條件如下: 文法不含左遞歸。最后,由于帶回溯的自上而下分析實際上采用了一種窮盡一切可能的試探法,因此,效率很低,代價極高。第三,在自上而下分析過程中,當(dāng)一個非終結(jié)符用某一候選匹配成功時,這種成功可能僅是暫時的。如果我們走了一大段錯路,最后必須回頭,那么,就應(yīng)把已經(jīng)做的一大堆語義工作(指中間代碼產(chǎn)生工作和各種表格的簿記工作)推倒重來。因此,使用自上而下分析法必須消除文法的左遞歸性。Pa,含有左遞歸的文法使上述的自上而下的分析過程陷入無限循環(huán)。首先,是文法的左遞歸性問題。按照語法分析樹的建立方法,我們可以粗略地把語法分析辦法分成兩類,一類是自上而下分析,另一類是自下而上分析法。如:程序設(shè)計語言中的表達式,各種說明和語句乃至全部源程序,指出其中的語法錯誤;必要時,可生成內(nèi)部形式,便于下一階段處理。第一篇:編譯原理課程設(shè)計 LL遞歸下降分析器仲愷農(nóng)業(yè)技術(shù)學(xué)院編譯原理課程設(shè)計課程設(shè)計題目 :LL(1)遞歸下降分析器姓名 : 院(系):專業(yè)班級 : 學(xué)號 :指導(dǎo)教師 :設(shè)計日期 :目 錄需求分析...................................................................................................1概要設(shè)計...................................................................................................2詳細設(shè)計...................................................................................................3測試分析...................................................................................................8用戶手冊...................................................................................................9課程總結(jié)...................................................................................................9參考文獻.................................................................................................10題目:LL(1)遞歸下降分析器需求分析語法分析是編譯過程的核心部分。語法分析器的任務(wù)是識別和處理比單詞更大的語法單位。我們知道,語言的語法結(jié)構(gòu)是用上下文無關(guān)文法描述的。而自上而下這種方法是帶“回溯”的,且存在許多困難和缺點。一個文法是含有左遞歸的,如果存在非終結(jié)符P且+P222。即,當(dāng)試圖用P去匹配輸入串時,我們會發(fā)現(xiàn),在沒有識別任何輸入符號的情況下,有得重新要求P去進行新的匹配。其次,由于回溯,就碰到一大堆麻煩問題。這些事情既麻煩又費時間,所以,最好應(yīng)設(shè)法消除回溯。第四,當(dāng)最終報告分析不成功時,我們難于知道輸入串中出錯的確切位置。嚴重的低效使得這種分析法只有理論意義,而在實踐上價值不大。對于文法中每一個非終結(jié)符A的各個產(chǎn)生式的候選首集符兩兩不相交。a1|a2|K|an,則FIRST(ai)199。j)對文法中的每個非終結(jié)符A,若它存在某個候選首符集包含ε,則FIRS(TA)199。當(dāng)一個文法滿足LL(1)條件時,我們就可以為它構(gòu)造一個不帶回溯的自上而下分析程序,這個分析程序是由一組遞歸過程組成的,每個過程對應(yīng)文法的一個非終結(jié)符。概要設(shè)計編程實現(xiàn)給定算術(shù)表達式的遞歸下降分析器。上述算法表達式文法屬于比較典型的遞歸下降語法分析。具體方法為:(1)當(dāng)遇到終結(jié)符a時,則編寫語句If(當(dāng)前讀到的輸入符號==a)讀入下一個輸入符號(2)當(dāng)遇到非終結(jié)符A時,則編寫語句調(diào)用A()。//存儲輸入句子 int temp=0。//判斷輸出信息 void e()。void t()。void f()。coutinputstream。”}void t(){} if(inputstream[temp]==39。){} else if(inputstream[temp]==39。){} else if(inputstream[temp]!=39。||inputstream[temp]!=39。){} else right=0?!?TE39?!眎f(inputstream[temp]==39。){} else if(inputstream[temp]==39。){} else cout/FT39。”}void f(){{} cout^”i”} } elseif(inputstream[temp]==39。){cout(E)”} else } right=0。課程總結(jié)通過一個星期的努力,終于把編譯原理課程設(shè)計給完成了。如果上課沒有好好的認真聽課,自己獨自學(xué)習(xí)就感到非常的吃力,而且效果也不好。這也給做編譯原理課程設(shè)計帶來了困難。在開始動手對題目進行設(shè)計和編程之前,我重復(fù)的仔細認真的閱讀和理解課本第四章里面的內(nèi)容,弄懂自上而下分析面臨的問題、何謂左遞歸,搞清楚如何消除左遞歸、如何消除回溯、提左因子,理解構(gòu)造LL(1)文件需要什么條件。在用C++編程時,基本上沒有遇到什么困難,只需把所有遞歸過程都寫出就行了。通過本次課程設(shè)計清楚地了解到遞歸下降分析法的優(yōu)缺點,其優(yōu)點是簡單、直觀,易于構(gòu)造分析程序。課程設(shè)計雖然只有短短的一周,但讓我認識到學(xué)習(xí)好編譯原理,是對程序設(shè)計和編譯的一個很好的進化橋梁和奠基石。編程的能力不是一朝一夕能鍛煉出來,堅持學(xué)習(xí),堅持編程的學(xué)習(xí),多看,多編是最好的學(xué)習(xí)和提高方法
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1