《《編譯原理》實驗(基于教學內容的簡單語言的實驗可選JavaCCPP).ppt》由會員分享,可在線閱讀,更多相關《《編譯原理》實驗(基于教學內容的簡單語言的實驗可選JavaCCPP).ppt(12頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、《編譯原理基礎》實驗 基于教學內容的一個簡單語言的編譯實驗 可選實驗語言:Java, C, C++等,Table of contents,實驗目的 實驗對象語言 實驗任務 實驗考核 參考方案,2,1. 實驗目的,通過編程實踐進一步理解和應用《編譯原理基礎》課堂所講授的原理性知識:詞法分析、語法分析、語義分析、中間代碼生成、目標代碼生成等; 根據(jù)實驗任務能夠選擇恰當?shù)臄?shù)據(jù)結構,使用合適的編程語言進行編程,鞏固已學知識并提高分析和解決問題的能力。,3,2. 實驗對象語言,一個簡單的面向過程編程語言SPL (Simple Programming Language) 類型:整型變量、整型常量; (先聲
2、明變量后使用:“類型 變量;”) 運算:加法、乘法; 語句: 順序語句:“statement1;statement2;” 賦值語句:“被賦值變量=整型值;” 條件轉移語句:“if (bool_expr) statements;” 循環(huán)語句:“while (bool_expr) statements;” 布爾表達式,4,3. 實驗任務,針對使用SPL編寫的一個簡單源程序,如: main() { int a;int b;int c;int d; if (c>a) } 完成詞法分析、語法分析、語義分析與中間代碼生成、匯編代碼生成等任務。 規(guī)范命名變量或域、函數(shù)或方法。,5,3. 實驗任務:詞法分析,
3、接收SPL源程序,如果源程序沒有詞法錯誤則輸出單詞符號流,否則提示出錯行號。 具體要求: 正確使用文件的相關操作,分離源程序中單詞符號。 按《編譯原理基礎》中的細分法中的5類(關鍵字、算符、界符(分隔符)、標識符和常量)將單詞符號轉換為相應編碼。 使用合理的數(shù)據(jù)結構、數(shù)據(jù)庫或文件保存單詞符號流和符號表。 如果出現(xiàn)非法單詞符號,需要提示所在行號。,6,3. 實驗任務:語法分析,接收詞法分析的單詞符號流,選擇SLR(1)、LALR或LR(1)中的一種方法進行語法分析。如果沒有語法錯誤則輸出語法分析動作,否則提示語法錯誤。 具體要求: 列表說明所使用文法(產生式需要有對應的編號)。 列出所用FIRS
4、T集和FOLLOW集,全部項目集及編號。 使用JFLAP v8.0beta (http://www.jflap.org,3060KB,需要JRE) 做識別活前綴DFA的狀態(tài)轉換圖 。 給出action子表和goto子表。 輸出語法分析動作(語法制導翻譯時還要輸出中間代碼)。,7,3. 實驗任務:語義分析,設計在語法分析時調用的語義子程序,歸約時給出相應的語義運作,輸出中間代碼。如果有語義錯誤則提示相應的錯誤,例如哪個變量未聲明等。 具體要求: 給出正確的翻譯方案。 正確使用回填技術。 選擇四元式、三元式或間接三元式中的一種作為中間代碼輸出。,8,3. 實驗任務:代碼生成,把語義分析得到的中間代
5、碼轉化為匯編碼并輸出。 具體要求: 根據(jù)中間代碼形式確定匯編代碼模式。 輸出目標碼。,9,4. 實驗考核,分組:一人一組 程序設計語言:C、C++或Java等 實驗機時:4*4h 提交時間:第4次實驗課結束時 提交(放在“學號姓名”文件夾下壓縮后提交): 源代碼(變量和函數(shù)等必須注釋說明)、相關類庫文件和數(shù)據(jù)庫(用到則需提交)、配置說明; 演示錄屏視頻(簡要說明變量或域、函數(shù)或方法,程序的運行過程與結果,不超過5分鐘,分辨率適中,錄屏和語音清晰即可,文件大小控制在10MB內); 實驗報告電子版(.doc,體現(xiàn)實驗任務具體要求,圖表清晰,文字通順);,10,4. 實驗考核,成績: 不得抄襲; 實驗的完整性、正確性; 代碼的規(guī)范性; 實驗報告的規(guī)范性; 演示錄屏視頻講解的條理性。,11,4. 參考方案,demo 及存在的問題 JFLAP的具體操作演示,12,