公務員期刊網 論文中心 正文

    編譯原理實驗教學設計

    前言:想要寫出一篇引人入勝的文章?我們特意為您整理了編譯原理實驗教學設計范文,希望能給你帶來靈感和參考,敬請閱讀。

    編譯原理實驗教學設計

    摘要:《編譯原理》課程知識點多、概念復雜、理論性強、算法難理解,具有很強的復雜性與抽象性、與實際聯系不緊密等問題。為了探索編譯原理的實驗教學方法,針對《編譯原理》課程中的實驗教學設計和分析,通過對實驗過程的創新性探索,尋找實驗教學的更優方案,加深學生對編譯原理的理解。

    關鍵詞:編譯原理;前端;實驗教學

    引言

    《編譯原理》作為計算機專業的一門重要專業課程,是日后深入研究專業領域知識的基礎。這門課作為計算機科學與技術的專業課,融合了離散數學、數據結構、操作系統、計算機組成原理等多個學科的知識,屬于綜合性與理論性較強的一門課[1],由于編譯原理課程內容的以上特點,目前在實驗教學中仍存在一些問題。天津工業大學崔光宇[2]提出編譯原理課程教學所存在的問題主要有:學生對于課程的認識模糊;編譯原理理論抽象,算法比較復雜;程序設計要求比較高。編譯原理實驗部分若要設計制作完整的編譯器,實驗周期長,涉及的模塊較多,各模塊間銜接較復雜,不易立即看到整體效果。若實驗由各個同學獨自設計完成代碼,具有一定難度;若通過小組形式合作完成,一部分同學易產生依賴思想,寄希望于組內其他同學,如此便達不到提升對編譯原理理解的目的[3]。

    一、實驗教學流程設計

    實驗教學以構建一個編譯程序前端的過程,進行流程設計,培養學生從部分到整體的程序設計概念。首先,需要對讀入的程序進行預處理。去除程序中多余的空格,相繼的若干空格只留一個作為分界標志,以便接下來的分析。接下來,開始詞法分析。根據詞法分析規則設計自動機,再將預處理好的程序運用詞法分析的原理逐個掃描,按照關鍵字、標識符、常數、運算符、分隔符這五類單詞符號進行分類,生成單詞符號屬性值與其對應單詞種別碼的二元式。然后,根據所得到的單詞符號二元式進一步進行語法分析,參照表示語法規則的正則文法設計函數,并運用遞歸下降法自上而下進行語法分析,依次掃描由詞法分析得到的符號單元,獲得滿足文法規則的語法單元。最后,在運用遞歸下降法進行語法分析的同時也進行語義分析及中間代碼生成。將符合語法規則的句子翻譯為四元式形式的中間代碼。以上,就是編譯原理實驗設計的幾個關鍵部分。實驗教學設計中應將一個龐大完整的編譯系統拆分成這樣的模塊,對每個模塊進行設計分析,研究現有源碼的實現方式,再根據各模塊具體功能設計接口實現要求,供學生思考及編程。

    (一)詞法分析

    編譯時要經過詞法分析識別出單詞符號,語法分析生成語法樹,語法樹生成中間代碼,中間代碼才能最終生成目標代碼。教學重點在于鍛煉學生從理論建模到代碼實現的能力,特別是從DFA到各個分支語句的建模與實現,實驗中應引導學生思考其中的對應關系及轉化過程。首先,讀入源程序,并依次去除多余空格,做好預處理之后,可以開始詞法分析。該部分實驗的理論教學路線從正則文法到NFA,再到狀態轉換矩陣,再到DFA及其化簡,將這些理論投入實驗教學,重點在于讓學生理解如何繪制狀態轉換圖,以及借助設計好的符號表對單詞符號進行逐個識別的思想,將狀態轉換圖的邏輯算法設計出程序,讓學生對程序中單詞符號分類方式有進一步的理解。教學應遵循從易到難、循序漸進的原則,一開始的詞法分析階段可以先實現識別一個單詞,然后進一步實現一類關鍵字,再按照關鍵字、標識符、常數、運算符、分隔符這五類單詞符號進行分類識別并生成相應的二元式。

    (二)語法分析

    語法分析的主要目的是利用詞法分析所得的單詞符號二元式進一步分析,判斷程序的語法結構是否符合語法規則。該實驗的重點在于根據產生式規則將程序中所讀取的語句結構進行推導。教學中,對語法分析所使用的理論方法有自上而下分析與自下而上分析,前者需要預先消除產生式規則中的左遞歸以及回溯,從而使語法樹唯一,即算法的唯一確定性,例如有LL(1)分析法;而后者需要借助符號棧進行歸約操作,重點在于判斷棧頂有無句柄以及句柄的長度,例如算符優先分析法、LR分析法等。其中LL(1)分析法根據語法規則構造出預測分析表,并利用棧的數據結構,通過將待識別的符號單元依次入棧,并結合預測分析表在合適的時機彈出棧,獲取語法分析所得的匹配結果。其重點在于深化學生對棧這種數據結構的理解,以及將其靈活應用于語法分析的匹配識別過程中。其中遞歸下降法在實驗教學設計中雖然從理論上需消除產生式規則的左遞歸及回溯,但在代碼實現的過程中利用遞歸的特點設計,可使用改寫文法的技巧,優化算法進行實現。在遞歸下降法過程中可根據不同語法規則設計出各個規則對應的接口,即將上一步詞法分析程序作為語法分析的一個功能函數,所得出的各類單詞符號二元式又作為語法分析的最小單元按照語法規則進一步分析,每一類語法規則又設計為一個函數單元,進行函數調用。教學實驗中,可以給出設計好的各函數接口所需實現的語法規則要求,主要包括總流程、Block程序塊、Stmts語句串、Bool邏輯判斷語句、Expr表達式、Term項、Stmt語句、Factor因子等。根據語法分析中的多種分析方法也可設計不同的功能接口,實驗中讓學生對比分析不同接口實現所用的數據結構。讓學生逐個進行編寫,并替換代入原編譯器代碼中,分析其中原理。

    (三)語義分析及中間代碼生成

    語義分析及中間代碼生成穿插在語法分析的掃描過程中,對語法規則進行判斷的同時生成四元式組。在實驗教學中,此部分實驗教學的重點在于對程序擴充能力的培養,指導學生在上一步遞歸下降法所設計的代碼中穿插四元式的生成以及嵌入地址跳轉的拉鏈回填技術。由于對語法單元只能從前往后依次掃描,逐步生成四元式,所以此過程的實現在選擇、循環結構中需根據實際情況,把部分跳轉地址暫時留空,直到向后掃描到相應位置,再把所得地址回填。此模塊可將生成四元式的功能作為單獨接口,設計所需參數讓學生進行實驗分析,并引導學生思考應在哪些位置對四元式生成的接口進行調用。

    二、實驗教學改進措施

    1.實驗前,應督促學生做好預習,根據所學理論進一步思考,結合實驗所給的模塊接口要求,設計各個模塊的算法流程圖及所需的數據結構。2.根據學生水平情況,因材施教,無需所有學生都獨立構造出一個具體完整的編譯器,而是剖析已有的編譯器源碼,分析各個部分的實現策略。3.可將一個完整編譯器的各階段功能拆分成各個小接口,設計好對應的輸入輸出參數及功能實現要求。通過由學生自行編寫各個小接口,嵌入編譯器代碼替換原模塊進行測試,這樣無需一次實現編譯器的全部功能也能及時進行功能實現的檢測,有利于增強學生信心,也能及時獲取實驗情況反饋。4.每場實驗的代碼實現任務完成后,分配一部分時間供學生討論遇到的常見問題并分析原因,從而更好地發現問題、解決問題,收到及時的教學效果反饋,有利于為下一堂課的重難點講解和教學進度進行補充與調整。教師可以選取其中一些優秀的例子進行講解分享,不僅能讓優秀的同學更加開闊思路,也能讓能力較弱的同學看到自己的不足,使全體學生都能對課程的各知識點有更深入的理解。5.最重要的是可提升學生對編譯原理課程學習的興趣,從易到難,循序漸進,讓學生吃透每一個部分的原理及編碼實現。

    三、結論

    本文主要通過設計編譯原理中詞法分析、語法分析、語義分析及中間代碼生成的實驗教學步驟,將編譯原理課程的理論與實踐教學相結合,對編譯原理的教學方式進一步探索,對編譯原理的知識點進行充分實踐與運用。本文所設計的教學實驗,有助于提高學生對編譯原理理論知識的實踐轉化能力,提升學生對課程知識的理解,并進一步提高動手能力,培養學生的編程能力,從而達到提高教學質量的目的。

    參考文獻:

    [1]丁志軍,周澤霞,衛志華.過程可視化類C編譯器的教學輔助軟件[J].計算機與現代化,2017,(6):34-39.

    [2]崔光宇.編譯原理教學現狀與創新研究[J].無線互聯科技,2017,(24):81-82.

    [3]曹瓊.淺談編譯原理實驗課程教學[J].計算機教育,2007,(18):45-46.

    作者:萬新燕 時招軍 單位:南昌航空大學信息工程學院

    精選范文推薦
    主站蜘蛛池模板: 亚洲国产成人精品无码一区二区 | 国产成人精品无码一区二区| 78成人精品电影在线播放 | 国产成人高清在线播放| 国产成人亚洲午夜电影| 亚洲综合在线成人一区| 亚洲国产成人99精品激情在线| 久久久久99精品成人片| 欧美成人怡红院在线观看| 四虎成人精品在永久免费| 亚洲国产成人久久一区二区三区| 亚洲AV午夜成人片| 国产成人黄网在线免| 1314成人网| 亚洲成人黄色在线| 国产成人综合欧美精品久久| 欧美成人看片一区二区三区尤物| 国产成人手机高清在线观看网站 | 国产成人精品一区二三区| 69成人免费视频| 国产成人亚洲精品91专区手机| 成人午夜18免费看| 色噜噜成人综合网站| 国产成人青青热久免费精品| av成人免费电影| 国产免费69成人精品视频| 成人一级黄色大片| 窝窝视频成人影院午夜在线| 亚洲国产成人精品无码区在线观看| 成人AAA片一区国产精品| 欧美成人免费午夜影视| a国产成人免费视频| 久久久久亚洲av成人网| 亚洲欧洲精品成人久久曰| 国产成人啪精品| 国产成人精品怡红院| 国产成人精品免费视频动漫| 天天成人综合网| 成人影片一区免费观看| 成人欧美在线视频| 青青国产成人久久激情911|