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

正文內容

編譯原理課程設計報告-在線瀏覽

2024-09-13 06:26本頁面
  

【正文】 9。, 39。, 39。, 39。 } }。然后我們將生成都是逆波蘭式轉化為四元式:(1)構造一個棧,存放運算對象。(3)自左至右掃描該簡單算術表達式并判斷該字符,如果該字符是運算對象,則將該字符入棧。如果該字符是一目運算符,則對棧頂部的元素實施該運算,將該棧頂部的元素彈出,將運算結果入棧。說明:每次進行計算時(即要算兩個操作數(shù)的結果時),我們將操作符作為四元式第一項,彈出的操作數(shù)依次作為四元式的第二和三項,運算結果作為四元式第四項,即Quat(運算符,操作數(shù)1,操作數(shù)2,結果),然后講Quat放入Quats中儲存起來,便于后續(xù)處理。下面是對when,if和while的處理對要執(zhí)行的語句進行規(guī)約并產生四元式,這里主要是指賦值語句和算數(shù)表達式。讀入代碼,并將代碼中的單詞分解成詞法三元式。語義分析嵌入在語法分析中。關鍵代碼(由組長劉鑫偉與我一起書寫)說明:本人寫此編譯器代碼時對Java知之甚少,所以主要是在組長幫助下,邊學邊寫。 。 private HashMapString, Synb synbTable = new HashMap()。 private ListArray arrayTable = new ArrayList()。 private ListStruts strutsTable = new ArrayList()。 private ListFunction functionTable = new ArrayList()。 private StackArrayListVall vallStack = new Stack()。 private String name。 private String value。:i(整型),r(實型),c(字符型),b(布爾型), a(數(shù)組型), * d(結構型)f(函數(shù)),c(常量),t(類型),d(域名),v,vn,vf(變量,換名形參,賦值形參)。 // 數(shù)據長度。}。 private String low。 private String up。 private String ctp。 private String clen。public class Struts { // 結構的域名。 // 區(qū)距。 // 域成分類型指針,指向idk域成分類型(在類型表中的信息)。}。 private String level。 private String off。 private String fn。 private String entry。 private String param。public class Vall { // 從屬于哪個活動記錄塊。 // 局部數(shù)據區(qū):用來存放局部變量、內情向量、臨時單元。 // 形式單元:用來存放實參的值或地址。 // 執(zhí)行動作。} 符號表的建立是在程序的聲明部分,或者說是在函數(shù)的聲明部分,因此我們只要對聲明部分進行處理就可以了。在進行符號表的建立過程中,我們又分了兩種情況,一種是含有function的語句,即函數(shù)的聲明語句,還有一種是普通的語句,即普通的變量和常量的聲明語句。4程序設計與實現(xiàn) 圖41 說明:a. 按照功能,分不同功能,分為5個package,(編譯器入口包)、(詞法掃描器包),(語法分析包)、(中間代碼包)、(符號表包)。 圖 421c. import包省去,僅顯示package部分,以顯示組織結構。/** * 編譯器前端。 RecursiveWay recursiveWay = new RecursiveWay()。 if (() == 0) { ForFour forFour = new ForFour()。 ()。 } } }package 。 Liu, Xinwei */public class WordScanner { // 詞表路徑。 // 代碼路徑。 // 待掃描代碼。 // token。 // 關鍵字表。 // 界符表。 // 標示符表。 // 常數(shù)表。 private StackString pastword = new Stack()。 writeToMap()。 } /** * 從文本中讀取代碼。 FileReader fileReader = new FileReader(myFile)。 String line = null。 } ()。 } } /** * 將詞表寫入Map。 FileReader fileReader = new FileReader(myFile)。 String line = null。 while ((line = ()) != null) { if (KeyWord.equals(line) || Border.equals(line)) { kind = line。 (splits[0], splits[1])。 (splits[0], splits[1])。 } catch (Exception ex) { ()。 * param code * 代碼字符串。 // 當前單詞。 // 開始字符。 // 當前字符。 while (( ) == 0) { code = (1)。 } start = (0)。A39。amp。Z39。a39。amp。z39。 while ((ch = 39。 amp。 ch = 39。) || (ch = 39。 amp。 ch = 39。) || (ch)) { i = i + 1。 } ch = (i)。 // 截取字符串 // 判斷當前單詞在哪個表中 if ((word)) { token = token + + word + , + Keyword + , + (word) + 。 } else { (word, 0 + (() + 1))。 } } else if ((start)) { int pointerTimes = 0。 while ((ch) || ((ch == 39。) amp。 pointerTimes == 0)) { if (ch == 39。) { pointerTimes++。 if (i = ()) { break。 } word = (0, i)。 } else { (word, 0 + (() + 1))。 } } else { start = (0)。39。39。=39。:39。 String signAdd = + start + ch。 token = token + + signAdd + , + border + , + (signAdd) + 。 token = token + + start + , + border + , + ( + start) + 。 token = token + + start + , + border + , + ( + start) + 。 token = token + 。 * * param code * 待識別的程序。 */ public String readWord() { String word = 。 char start。 char ch。 int i = 0。 } if (.equals(code)) { return 。 if ((start = 39。 amp。 start = 39。) || (start = 39。 amp。 start = 39。)) { ch = (0)。a39。amp。z39。A39。amp。Z39。 if (i = ()) { break。 } word = (0, i)。 ch = (0)。.39。amp。.39。 } i = i + 1。 } ch = (i)。 } else { if (start == 39。 || start == 39。 || start == 39。 || start == 39。) { ch = (1)。 if ((signAdd)) { i = i + 2。 } else { i = i + 1。 } } else { i = i + 1。 } } code = (i)。 } public String read() { String current = readWord()。 if ((current)) { currents = current + | + p。 } else if ((current)) { currents = current + | + k。 } else currents = current + | + err。 } public ArrayListString readWord(String code) { ArrayListString result = new ArrayList()。 while (!.equals()) { (readWord())。 } public ArrayListString fhq() { ArrayListString ret = new ArrayList()。 now = readWord()。 (past)。 now = readWord()。 now = readWord()。 } /** * return the code */ public String getCode() { return code。 } /** * return the token */ public String getToken() { return token。/** * 遞歸下降語法分析。 Liu, Xinwei * */public class RecursiveWay { String current。 String word。 static int tures = 0。 int type2 = 0。 // 拆開詞函數(shù) public String char2() { char ch = (0)。 return + ch。 currents = ()。 current = splits[0]。 } // 1 程序入口,1 程序program program 2 標識符ID3 分程序deputyProgram public void program() { read()。 tures++。 ID()。 } // 2判斷是否是符合標識符定義,a型,abc型,abc123型 public void ID() { if (!i.equals(kind)) { (標識符錯誤 + : + current)。 } // 3 3 分程序deputyProgram 10 變量說明VD4 復合語句poundStatement private void deputyprogram() { VD()。 } // 4復合語句的判斷,主體部分**,里面是主體架構,從begin 到最后的end. public void poundStatement() { if (!begin.equals(current)) { (關鍵字錯誤 + : + current + + 應該為begin)。 } read()。 } else if (if.equals(current)) { ifs()。 } read()。 tures++。 } } // 5號 5 標識符表IDTable 2 標識符ID {, 2 標識符ID} public void IDTable() { ID()。 ID()。 type2 = 1。 type2 = 2。 type2 = 3。 tures++。 } } // 7號語句表的判斷,主體部分*,主要的部分語句,和賦值語句聯(lián)系緊密 priv
點擊復制文檔內容
法律信息相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1