• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向“新質(zhì)生產(chǎn)力”的編譯原理”課程實(shí)驗(yàn)教學(xué)改革實(shí)踐

    2025-07-01 00:00:00邢建國(guó)
    中國(guó)信息技術(shù)教育 2025年12期
    關(guān)鍵詞:實(shí)驗(yàn)學(xué)生

    中圖分類號(hào):G434文獻(xiàn)標(biāo)識(shí)碼:A論文編號(hào):1674—2117(2025)12-0090—07

    前言

    “編譯原理”課程是計(jì)算機(jī)專業(yè)的核心課程之一,主要介紹編譯程序構(gòu)造的一般原理和基本方法,內(nèi)容涵蓋了語言和文法、詞法分析、語法分析、語法制導(dǎo)翻譯、中間代碼生成、存儲(chǔ)管理、代碼優(yōu)化和目標(biāo)代碼生成等。通過該課程的學(xué)習(xí),使學(xué)生在了解編程語言的設(shè)計(jì)理念和實(shí)現(xiàn)機(jī)制的同時(shí),能更好地理解計(jì)算機(jī)如何處理和執(zhí)行代碼。同時(shí),通過理解編譯過程,學(xué)生能夠更好地編寫高效、可維護(hù)的代碼,避免常見的編程錯(cuò)誤,提高代碼的可讀性和可重用性。這對(duì)于學(xué)生未來從事編程開發(fā)、語言/編譯器設(shè)計(jì)或相關(guān)領(lǐng)域的工作具有重要意義。上述目標(biāo)的實(shí)現(xiàn)除了要學(xué)習(xí)編譯理論外,還需要大量的實(shí)踐。然而在教學(xué)實(shí)施過程中,由于理論教學(xué)內(nèi)容多、課時(shí)少且?guī)熧Y缺乏,實(shí)驗(yàn)教學(xué)課時(shí)往往不足,實(shí)驗(yàn)內(nèi)容的深度和廣度也不夠,使得學(xué)生雖然學(xué)習(xí)了編譯原理課程,卻難以自己動(dòng)手去實(shí)現(xiàn)一個(gè)編譯器或解釋器。筆者研究發(fā)現(xiàn),現(xiàn)有的編譯原理教學(xué)體系,特別是實(shí)驗(yàn)教學(xué),存在以下幾個(gè)問題,無法滿足新質(zhì)生產(chǎn)力對(duì)人才培養(yǎng)的需求。

    一是,實(shí)驗(yàn)內(nèi)容的碎片化。大多數(shù)編譯原理實(shí)驗(yàn)內(nèi)容是理論課程配套的小實(shí)驗(yàn),如DFA、NFA自動(dòng)機(jī)、LL/LR分析器、語法制導(dǎo)翻譯等,這些實(shí)驗(yàn)雖然與理論授課進(jìn)度同步,有助于學(xué)生理解課堂學(xué)習(xí)的知識(shí),但人為分裂了編譯程序的完整性,導(dǎo)致學(xué)生不能學(xué)習(xí)到一個(gè)完整的編譯器的開發(fā)運(yùn)行過程。

    二是,教學(xué)偏重理論。教學(xué)內(nèi)容過多放在詞法分析、語法分析及代碼優(yōu)化上,對(duì)實(shí)際編程語言及目標(biāo)機(jī)器翻譯較少。學(xué)習(xí)難度大,導(dǎo)致學(xué)生興趣不高。編譯原理課程內(nèi)容仍然是基于過程式語言展開的,沒有及時(shí)跟進(jìn)程序設(shè)計(jì)從傳統(tǒng)的過程式轉(zhuǎn)向函數(shù)式、對(duì)象式、組件型的變化,導(dǎo)致學(xué)生感到學(xué)習(xí)這門課程沒有實(shí)際意義且太難。

    三是,實(shí)驗(yàn)設(shè)計(jì)不合理。實(shí)驗(yàn)設(shè)計(jì)往往要求學(xué)生完成小型模型語言的完整編譯程序,但這樣的任務(wù)對(duì)于部分學(xué)生來說難以完成,不能激發(fā)他們的興趣。同時(shí),實(shí)驗(yàn)周期短、模塊間銜接復(fù)雜,不易立即看到整體效果,缺乏可用的實(shí)驗(yàn)教學(xué)資料。

    四是,缺乏實(shí)驗(yàn)教材和工具。教材偏重理論,缺乏對(duì)具體實(shí)現(xiàn)的介紹,對(duì)一些新的編譯技術(shù)如組合子解析器、Pratt解析器沒有涉及,實(shí)驗(yàn)工具使用LEX/YACC等,基本沒有引入如ANTLR、LLVM、CLANG、WASM等新型的前后端編譯工具,內(nèi)容陳舊。學(xué)生對(duì)開發(fā)工具和環(huán)境不熟悉,語言描述不夠詳細(xì),導(dǎo)致實(shí)驗(yàn)項(xiàng)目難以順利進(jìn)行。

    針對(duì)上述問題,筆者重新設(shè)計(jì)了編譯原理課程的實(shí)驗(yàn)內(nèi)容,目的是使學(xué)生能夠掌握一個(gè)完整的函數(shù)式編程語言的編譯器/解釋器的實(shí)現(xiàn)。

    實(shí)驗(yàn)教學(xué)內(nèi)容設(shè)計(jì)

    1.設(shè)計(jì)目標(biāo)

    設(shè)計(jì)一個(gè)完整的實(shí)驗(yàn)教學(xué)方案,學(xué)生可以在32個(gè)實(shí)驗(yàn)課時(shí)內(nèi),系統(tǒng)地學(xué)習(xí)編譯器的構(gòu)建過程,并完成一個(gè)完整的編譯器實(shí)現(xiàn)。通過這一過程,培養(yǎng)學(xué)生的理論知識(shí)和實(shí)踐技能,提高他們的問題解決能力和創(chuàng)新思維。

    2.設(shè)計(jì)思路

    ① 使用一個(gè)簡(jiǎn)單但足夠復(fù)雜的函數(shù)式編程語言。

    圖1

    ② 簡(jiǎn)化詞法分析和語法分析,聚焦語義分析和代碼生成。

    ③ 采用多趟(PASS)、多段(STAGE)設(shè)計(jì),編譯器各段之間相互獨(dú)立。

    ④ 覆蓋解釋器、虛擬機(jī)、編譯器。

    ⑤ 采用Python編程實(shí)現(xiàn)。

    3.主要內(nèi)容

    ① 先將編譯器的實(shí)現(xiàn)過程分解為若干個(gè)模塊,如詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成等,再通過具體的編程語言案例,引導(dǎo)學(xué)生逐步構(gòu)建編譯器,并圍繞一個(gè)簡(jiǎn)單的語言,完成相應(yīng)各環(huán)節(jié)的設(shè)計(jì)和實(shí)現(xiàn)。

    ② 鼓勵(lì)學(xué)生以小組形式合作,共同討論和解決問題,同時(shí)要求每個(gè)學(xué)生獨(dú)立完成部分模塊的實(shí)現(xiàn),以確保每個(gè)人都能掌握關(guān)鍵技能。在每個(gè)階段結(jié)束時(shí),進(jìn)行代碼審查和測(cè)試,確保學(xué)生的工作進(jìn)度和質(zhì)量,并提供及時(shí)的反饋和指導(dǎo)。在課程結(jié)束時(shí),要求學(xué)生展示他們的編譯器實(shí)現(xiàn),并進(jìn)行性能測(cè)試和比較。設(shè)計(jì)合理的評(píng)估體系,其中包括實(shí)驗(yàn)報(bào)告、代碼質(zhì)量、項(xiàng)目展示和個(gè)人貢獻(xiàn)等多個(gè)維度。

    ③ 設(shè)計(jì)相應(yīng)的實(shí)驗(yàn)指導(dǎo)書,內(nèi)容包括理論基礎(chǔ)、實(shí)驗(yàn)步驟、代碼示例和常見問題解答。

    實(shí)驗(yàn)包含三個(gè)模塊,包括一個(gè)解釋器、兩個(gè)編譯器,其中一個(gè)編譯器的目標(biāo)機(jī)器為堆棧式虛擬機(jī),另一個(gè)編譯器的目標(biāo)機(jī)器為RV32I指令集的RISC-V處理器(如圖1)。

    模塊一實(shí)現(xiàn)一個(gè)解釋器,通過該模塊使學(xué)生掌握詞法分析、語法分析、語義分析(可選,用于介紹類型自動(dòng)推導(dǎo))的基本技術(shù),以及編程語言的解釋實(shí)現(xiàn)。

    在模塊一基礎(chǔ)上,模塊二實(shí)現(xiàn)一個(gè)目標(biāo)為堆棧式虛擬機(jī)的編譯器。在模塊二中,直接使用模塊一里面的詞法分析器、語法分析器、語義分析等。使用堆棧式虛擬機(jī)作為目標(biāo)機(jī)器的好處在于,機(jī)器指令數(shù)少,不用考慮寄存器分配,同時(shí)利用宿主語言的特性可以簡(jiǎn)化內(nèi)存的使用和管理。此外,學(xué)生可以通過虛擬機(jī)的實(shí)現(xiàn)了解底層機(jī)器工作機(jī)制,為模塊三的以RISC-V為目標(biāo)的編譯器提供基礎(chǔ)。

    模塊三設(shè)計(jì)實(shí)現(xiàn)一個(gè)面向RISC-V機(jī)器(RV32I指令集)的編譯器。RISC-V的設(shè)計(jì)簡(jiǎn)單而精簡(jiǎn),RV32I指令集只有47條指令,尋址模式簡(jiǎn)單,指令功能正交化,大的寄存器文件,使得編譯器開發(fā)相對(duì)容易。此外,使用RISC-V模擬器RARS,RARS自帶了一個(gè)圖形化的集成開發(fā)和仿真環(huán)境,包括編輯器、匯編器和模擬器,編譯器生成的RISC-V匯編代碼可以直接在RARS中編譯、調(diào)試、執(zhí)行,不需要專門的RISC-V開發(fā)板或像QEMU的仿真環(huán)境。

    Cilly語言描述

    考慮到現(xiàn)有的高級(jí)語言太復(fù)雜,不適合一學(xué)期的實(shí)驗(yàn)教學(xué),筆者設(shè)計(jì)了一個(gè)動(dòng)態(tài)類型、支持閉包的函數(shù)式編程語言Cilly。

    使用動(dòng)態(tài)類型可以大大簡(jiǎn)化語法,同時(shí)只支持?jǐn)?shù)值(整數(shù)和浮點(diǎn)數(shù))、字符串、布爾值、數(shù)組、結(jié)構(gòu)體(類似于JSON對(duì)象)等基本和復(fù)合數(shù)據(jù)類型,實(shí)現(xiàn)if/for/while等基本控制流語法。這使得詞法、語法分析及語義分析代碼行數(shù)只需要700\~800行Python語句就可以實(shí)現(xiàn)。

    筆者還在語言中引入嵌套函數(shù)、閉包。目前,大多數(shù)編譯原理教材沒有介紹閉包,主流的編程語言如C、Java等也很少支持嵌套函數(shù)。但筆者認(rèn)為利用嵌套函數(shù)和閉包可以實(shí)現(xiàn)很多語法特性(如對(duì)象、流等),雖然增加了實(shí)現(xiàn)的復(fù)雜性,但有助于學(xué)生更好地理解編程語言。

    主要實(shí)驗(yàn)內(nèi)容

    1.基于遞歸下降分析的詞法分析器

    Cilly語言的詞法屬于正則文法。正則文法可以使用確定性有限自動(dòng)機(jī)(DFA)來實(shí)現(xiàn),lex/bison等工具可以根據(jù)詞法自動(dòng)生成詞法分析器,供后續(xù)的語法分析器如yacc調(diào)用。手工去實(shí)現(xiàn)這樣的分析器比較復(fù)雜。在組合子解析器實(shí)現(xiàn)中,通常在語法分析過程中直接使用正則表達(dá)式來進(jìn)行token的識(shí)別,不需要單獨(dú)的詞法分析器。

    遞歸下降分析傳統(tǒng)上用來處理上下文無關(guān)文法,而正則文法也屬于上下文無關(guān)文法,因此完全可以用來實(shí)現(xiàn)詞法分析。而有些語言如Python,其詞法屬于上下文無關(guān)文法,不能用lex來解析。遞歸下降分析很適合于手工編寫,因此本實(shí)驗(yàn)采用遞歸下降分析來實(shí)現(xiàn)Cilly的詞法分析。

    token的表示——筆者定義了三個(gè)函數(shù)mk_tk、tk_tag、tk_val來封裝token,具體實(shí)現(xiàn)使用Python的數(shù)組list來表示,這里忽略了token所在的行號(hào)等位置信息(如圖2)。

    詞法分析器Cilly_Lexer輸入為字符串,輸出為token的list,其實(shí)現(xiàn)如圖3所示。

    Cilly_lexer中反復(fù)調(diào)用函數(shù)token,直到讀到文件結(jié)束符,該函數(shù)每次返回當(dāng)前位置下的詞法單元。函數(shù)token實(shí)現(xiàn)如圖4所示。

    函數(shù)token首先跳過所有的空白字符和注釋,然后調(diào)用peek查看當(dāng)前字符,再根據(jù)不同類型來分別識(shí)別數(shù)字、標(biāo)識(shí)符、字符串、運(yùn)算符和其他符號(hào)。

    圖2
    圖3
    圖4
    圖5

    2.基于遞歸下降分析和Pratt解析器的語法分析器

    Cilly的語法分析器cilly_parser的輸人為cilly_lexer產(chǎn)生的token數(shù)組,輸出為抽象語法樹(也可以根據(jù)實(shí)際后續(xù)任務(wù),輸出其他形式的語法樹,如用于集成開發(fā)環(huán)境中語法高亮、代碼輸人自動(dòng)完def cilly_parser(tokens):def program:stats σ=σ []while peek!='eof':stats.append( statement)return['program',stats]return program成等)。

    抽象語法樹ast的節(jié)點(diǎn)采用Python的數(shù)組實(shí)現(xiàn),通過兩個(gè)輔助函數(shù)node_tag和node_val得到節(jié)點(diǎn)的類型和值,如上頁圖5所示。

    Cilly_parser的主函數(shù)為program,該函數(shù)反復(fù)調(diào)用statement函數(shù),將識(shí)別到的語句添加到數(shù)組stats中,直到讀到EOF詞法單元,然后構(gòu)建ast的父節(jié)點(diǎn)“program”返回(如圖6)。

    圖6
    圖7

    函數(shù)statement則是根據(jù)當(dāng)前的詞法單元來分別處理不同的語句,如圖7所示。

    表達(dá)式expr的解析使用了Pratt解析器。在傳統(tǒng)的遞歸下降分析中,處理表達(dá)式中的左遞歸、運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,必須進(jìn)行語法改造,消除左遞歸,把表達(dá)式語法變成如圖8所示的分層表示。

    圖8
    圖9
    圖10

    這使得程序里多了很多個(gè)結(jié)構(gòu)類似、重復(fù)的非終結(jié)符的實(shí)現(xiàn)。本實(shí)驗(yàn)引入了Pratt解析器,可以非常優(yōu)雅地同時(shí)處理左遞歸、運(yùn)算符優(yōu)先級(jí)和結(jié)合性問題。Pratt解析器也稱為自頂向下的運(yùn)算符優(yōu)先級(jí)解析器,由VaughanPratt在1973年提出,實(shí)際上它是一種更通用的解析技術(shù)。

    Pratt算法為每個(gè)一元運(yùn)算符或二元運(yùn)算符(也適用于像C語言這樣的多元運(yùn)算符)定義了左、右的結(jié)合力(BindPower),如假定 ?+, 的左、右結(jié)合力分別為10、20, ‘*’的左、右結(jié)合力分別為30、40,如圖9所示。則在表達(dá)式 1+2+3*4 中,由于2左邊的 ‘*’的右結(jié)合力大于2右邊的'+' 的左結(jié)合力,因此,上式應(yīng)該解析為 (1+2)+3*40 同樣,3的兩邊結(jié)合力分別為20和30,因此3要先和‘*’結(jié)合: (1+2)+(3*4)。

    一元前綴運(yùn)算符只有右結(jié)合力,后綴運(yùn)算符可以視為二元運(yùn)算符的特殊情況。上述思想可以用如圖10所示的算法實(shí)現(xiàn),其中parse_uniop和parse_binop分別用于解析一元表達(dá)式和二元表達(dá)式。這樣只要定義了不同運(yùn)算符的結(jié)合力,不同優(yōu)先級(jí)的一元、二元表達(dá)式都可以用上述函數(shù)來解析。

    3.Cilly解釋器及REPL執(zhí)行環(huán)境

    解釋cilly_eval_使用cilly_parse生成的抽象語法樹作為輸入。解釋器還有一個(gè)輸入變量為求值環(huán)境env,環(huán)境用于查找變量。

    筆者使用訪問器模式來實(shí)現(xiàn)解釋器,每個(gè)節(jié)點(diǎn)都有一個(gè)求值函數(shù),存放在visitors的字典中,在主程序中定義visit函數(shù),根據(jù)節(jié)點(diǎn)類型來調(diào)用相應(yīng)的求值函數(shù)(如圖11)。

    如節(jié)點(diǎn)program和打印的求值函數(shù)為ev_program.ev_print,其實(shí)現(xiàn)如圖12所示。

    解釋器主要難點(diǎn)包括變量(全局變量、嵌套函數(shù)里的變量)的定義、引用和賦值,函數(shù)的定義(閉包)、調(diào)用等,此處不詳細(xì)介紹。

    在Cilly_eval函數(shù)基礎(chǔ)上,可以實(shí)現(xiàn)一個(gè)類似于Python的交互式命令行repl(如圖13)。

    4.虛擬機(jī)及編譯

    模塊二實(shí)現(xiàn)了一個(gè)目標(biāo)機(jī)器為虛擬機(jī)的編譯器。

    (1)虛擬機(jī)的實(shí)現(xiàn)

    筆者定義了一個(gè)類似于Python虛擬機(jī)的堆棧式虛擬機(jī)cilly_vm。該虛擬機(jī)有一個(gè)常量池、運(yùn)算堆、作用域棧(用于嵌套函數(shù)、閉包)、調(diào)用棧、代碼和程序指針pc,其實(shí)現(xiàn)如圖14所示。

    設(shè)計(jì)的虛擬機(jī)的指令包括LOAD_CONST,LOAD_TRUE、LOAD_FALSE、LOAD_NULL、POP、LOAD_GLOBAL、STOREGLOBAL、BINOP_ADD、BINOPSUB、BINOP_MUL、BINOP_DIV、BINOP_GT、BINOP_GE、BINOP_LT、BINOP_LE、BINOP_EQ、BINOP_NE、UNIOP_NOT、UNIOP_NEG,JMP,JMP_TRUE、JMP_FALSE、PRINT_ITEM、PRINT_NEWLINE、LOAD_VAR、STORE_VAR、MAKEPROC、CALL、RETENTER_SCOPE,LEAVE_SCOPE等。

    所有的指令使用一個(gè)整數(shù)表示,可以有0、1、2個(gè)參數(shù),如LOAD_CONSTi,表示把常數(shù)池中編號(hào)為i的常數(shù)壓人運(yùn)算棧,而BINOPADD指令沒有參數(shù),其作用是將棧頂兩個(gè)數(shù)彈出,然后把它們的和壓人運(yùn)算棧。

    大部分指令的實(shí)現(xiàn)比較簡(jiǎn)單,"此處不詳細(xì)介紹。

    圖11
    圖12
    圖14
    圖15
    圖16
    圖17

    (2)編譯器實(shí)現(xiàn)

    編譯器cilly_vm_compiler將源程序的抽象語法樹翻譯成目標(biāo)代碼為上述虛擬機(jī)的機(jī)器碼。編譯器的輸出為生成的代碼和常量池:[code,consts]。編譯器采用與解釋器類似的訪問者模式實(shí)現(xiàn)(如圖15)。例如,頂層節(jié)點(diǎn)program及打印語句print的實(shí)現(xiàn)如圖16所示。

    這兩個(gè)函數(shù)和解釋器中的對(duì)應(yīng)函數(shù)結(jié)構(gòu)基本類似,主要區(qū)別是這兒調(diào)用emit生成機(jī)器指令,而不是執(zhí)行語句。其余語句的翻譯也類似。

    在解釋器中的變量都是通過環(huán)境來實(shí)現(xiàn)存儲(chǔ)、查找,在編譯器中變量的查找和引用分別是在編譯器和虛擬機(jī)中,因此必須將解釋器中環(huán)境的有關(guān)信息分別放在編譯器和虛擬機(jī)中。

    注意,遍歷一次ast樹生成目標(biāo)代碼,因此一些轉(zhuǎn)移指令的目標(biāo)地址需要用回填技術(shù)來實(shí)現(xiàn)。

    (3)反匯編器

    為了檢查生成的機(jī)器碼是否正確,還要實(shí)現(xiàn)一個(gè)反匯編器,將數(shù)字形式的機(jī)器碼轉(zhuǎn)換為容易閱讀的匯編指令格式。反匯編器的結(jié)構(gòu)和虛擬機(jī)的實(shí)現(xiàn)類似,這里不做具體介紹,圖17是反匯編器的輸出示例。

    5.Cilly語言的risc-v編譯器實(shí)現(xiàn)

    這部分內(nèi)容是模塊三的主要內(nèi)容。此處,筆者采用RARS這樣的RISC-V模擬器,該模擬器只實(shí)現(xiàn)了用戶模式,但對(duì)編譯器應(yīng)用來說足夠了,學(xué)生可以利用RARS來編譯和運(yùn)行所生成的匯編程序。此外,該模擬器自帶的匯編器語法基本與risc-v的gcc匯編器類似,學(xué)生很容易將生成的代碼轉(zhuǎn)換為gcc所支持的匯編代碼。

    與虛擬機(jī)編譯器不同的是,cilly_risc_compiler需要處理內(nèi)存管理,包括在內(nèi)存中分配、查找常量、變量,維護(hù)記錄棧以及堆的變化。此處筆者沒有處理內(nèi)存的釋放,也沒有實(shí)現(xiàn)垃圾回收機(jī)制,這么做也是為了簡(jiǎn)化實(shí)現(xiàn)。常量放在data區(qū),為了支持閉包和嵌套函數(shù),將參數(shù)和局部變量放在堆上,而不是堆棧上,堆棧上存放調(diào)用時(shí)的返回地址以及作用域指針。

    cilly_riscv_compiler的輸出為RARS格式的匯編代碼,實(shí)現(xiàn)方式和前面的解釋器和堆棧虛擬機(jī)的編譯器結(jié)構(gòu)類似,也采用了訪問者模式(如圖18)。

    其中,函數(shù)rars_output是將生成的代碼和數(shù)據(jù)合起來,輸出為RARS的匯編格式。

    6.優(yōu)化

    筆者提供了一些如常量合并、強(qiáng)度削弱等的優(yōu)化模塊,這些優(yōu)化通常作為一個(gè)獨(dú)立的階段在抽象語法樹上進(jìn)行。這么做的好處是可以將不同的優(yōu)化技術(shù)組合起來,盡管效率不高,但每個(gè)階段處理非常簡(jiǎn)單。

    教學(xué)實(shí)踐效果總結(jié)

    筆者在承擔(dān)的“編譯原理”課程教學(xué)中對(duì)上述實(shí)驗(yàn)教學(xué)內(nèi)容實(shí)施過一次,共有三個(gè)班(兩個(gè)計(jì)科專業(yè)班、一個(gè)信息安全班,二年級(jí)下),學(xué)生90人左右。由于實(shí)驗(yàn)教學(xué)內(nèi)容調(diào)整較大,內(nèi)容較多,而總課時(shí)不能調(diào)整,因此壓縮或去除了部分理論教學(xué)內(nèi)容(詞法分析中的子集法及自動(dòng)機(jī)理論,語法分析中的LR文法,中間代碼生成、數(shù)據(jù)流分析等),多出來的時(shí)間用于實(shí)驗(yàn)課時(shí)。同時(shí),采用翻轉(zhuǎn)課堂(學(xué)生提前自學(xué)相關(guān)理論部分)、課后自主實(shí)驗(yàn)(不占課內(nèi)時(shí)間)等形式,這樣基本保證了32課時(shí)的實(shí)驗(yàn)課時(shí)。實(shí)驗(yàn)教學(xué)形式采用教師課堂上編寫程序框架,介紹實(shí)驗(yàn)原理,學(xué)生課后填充細(xì)節(jié)。要求所有學(xué)生完成模塊一所有內(nèi)容,并對(duì)完整的解釋器運(yùn)行結(jié)果進(jìn)行展示,模塊二和模塊三選做。期末考核包括兩部分: ① 模塊一的任務(wù) (40%) ‘ ② 大作業(yè) (60%) ,實(shí)現(xiàn)logo語言解釋器或SQL語言解釋器。

    通過一個(gè)學(xué)期的教學(xué)實(shí)踐,整體下來,學(xué)生對(duì)“編譯原理”課程的興趣有較大提升,基本掌握了遞歸下降分析、表達(dá)式分析以及解釋器、編譯器等各環(huán)節(jié)原理和實(shí)現(xiàn)方法,能夠完成如json、sql、mermaid等的語法分析,以及l(fā)ogo、lisp這類動(dòng)態(tài)語言的解釋器實(shí)現(xiàn),為進(jìn)一步深入學(xué)習(xí)編譯技術(shù)打下了基礎(chǔ)。

    受教學(xué)課時(shí)等因素的限制,本實(shí)驗(yàn)沒有采用像llvm、gcc等之類的前后端,也沒有使用真實(shí)的編程語言,這使得學(xué)生對(duì)生產(chǎn)環(huán)境下的編譯工具和編譯技術(shù)缺乏了解。筆者希望在后面的教學(xué)實(shí)踐中逐漸改進(jìn),使實(shí)驗(yàn)教學(xué)內(nèi)容更貼合實(shí)際應(yīng)用。

    參考文獻(xiàn):

    [1]RARS—RlSC—VAssemblerandRuntime Simulator[EB/OL].https://github.com/TheThirdOne/rars.

    [2]KeithCooperamp;LindaTorczon.編譯器設(shè)計(jì)[M].北京:人民郵電出版社,2012.

    [4]海納.自已動(dòng)手寫Python虛擬機(jī)M.北京:北京航空航天大學(xué)出版社,2019.

    [5]RobertNystrom,CraftinghterpretersM].GeneverBenning,2021.

    [6]索斯藤·鮑爾.用Go語言自制解釋器M.北京:人民郵電出版社,2022.

    [7]Harold Abelson,GeraldJay Sussmanamp;JuieSusman.計(jì)算機(jī)程序的構(gòu)造和解釋(第二版)[M].北京:機(jī)械工業(yè)出版社,2004.e

    猜你喜歡
    實(shí)驗(yàn)學(xué)生
    記一次有趣的實(shí)驗(yàn)
    微型實(shí)驗(yàn)里看“燃燒”
    快把我哥帶走
    做個(gè)怪怪長(zhǎng)實(shí)驗(yàn)
    《李學(xué)生》定檔8月28日
    電影(2018年9期)2018-11-14 06:57:21
    趕不走的學(xué)生
    學(xué)生寫話
    NO與NO2相互轉(zhuǎn)化實(shí)驗(yàn)的改進(jìn)
    實(shí)踐十號(hào)上的19項(xiàng)實(shí)驗(yàn)
    太空探索(2016年5期)2016-07-12 15:17:55
    學(xué)生寫的話
    夜夜夜夜夜久久久久| 一本综合久久免费| 91麻豆av在线| 伊人亚洲综合成人网| 日韩欧美一区视频在线观看| 999精品在线视频| 91九色精品人成在线观看| 欧美一级毛片孕妇| 成人国语在线视频| videosex国产| 免费少妇av软件| 建设人人有责人人尽责人人享有的| 日日爽夜夜爽网站| 久久久久久亚洲精品国产蜜桃av| 欧美精品一区二区大全| 中文字幕人妻丝袜一区二区| 男女午夜视频在线观看| 黄色视频在线播放观看不卡| 看免费av毛片| 欧美国产精品一级二级三级| 99香蕉大伊视频| 国产精品自产拍在线观看55亚洲 | 黄片大片在线免费观看| 国产亚洲欧美在线一区二区| 欧美在线黄色| 亚洲精品在线美女| 色播在线永久视频| 大码成人一级视频| 又大又爽又粗| 大陆偷拍与自拍| 在线永久观看黄色视频| 18禁观看日本| 九色亚洲精品在线播放| 久久 成人 亚洲| 亚洲欧洲日产国产| 国产欧美日韩综合在线一区二区| 亚洲九九香蕉| 黄片小视频在线播放| 久久精品国产a三级三级三级| 亚洲精品一卡2卡三卡4卡5卡 | 飞空精品影院首页| 两性午夜刺激爽爽歪歪视频在线观看 | 一边摸一边抽搐一进一出视频| 久久久精品94久久精品| 亚洲国产av影院在线观看| 亚洲精品自拍成人| 黑丝袜美女国产一区| 亚洲视频免费观看视频| 国产亚洲精品第一综合不卡| 黄网站色视频无遮挡免费观看| 99九九在线精品视频| 久久国产精品人妻蜜桃| 亚洲欧美成人综合另类久久久| 母亲3免费完整高清在线观看| 黄色视频不卡| 久久亚洲精品不卡| 国产深夜福利视频在线观看| 97人妻天天添夜夜摸| 精品国产国语对白av| 两个人看的免费小视频| 少妇的丰满在线观看| 国产av又大| 麻豆国产av国片精品| 免费高清在线观看日韩| 91麻豆精品激情在线观看国产 | 一区福利在线观看| 三上悠亚av全集在线观看| 97人妻天天添夜夜摸| 亚洲美女黄色视频免费看| 精品一品国产午夜福利视频| 一区二区三区激情视频| 色老头精品视频在线观看| 亚洲精品国产区一区二| 日韩欧美国产一区二区入口| 男人舔女人的私密视频| 午夜精品国产一区二区电影| 婷婷色av中文字幕| 天堂俺去俺来也www色官网| 91精品伊人久久大香线蕉| 菩萨蛮人人尽说江南好唐韦庄| 天天添夜夜摸| 久久国产精品男人的天堂亚洲| 欧美 亚洲 国产 日韩一| 一级片'在线观看视频| av网站免费在线观看视频| 欧美午夜高清在线| 老汉色∧v一级毛片| xxxhd国产人妻xxx| 一区二区av电影网| 欧美av亚洲av综合av国产av| 成年人午夜在线观看视频| √禁漫天堂资源中文www| 1024视频免费在线观看| 一本一本久久a久久精品综合妖精| 一区二区三区激情视频| 50天的宝宝边吃奶边哭怎么回事| 日韩三级视频一区二区三区| 自线自在国产av| 老司机深夜福利视频在线观看 | 飞空精品影院首页| 99久久99久久久精品蜜桃| 亚洲第一欧美日韩一区二区三区 | 日韩欧美一区视频在线观看| av天堂在线播放| 黄网站色视频无遮挡免费观看| 中文字幕精品免费在线观看视频| 久久99热这里只频精品6学生| 自拍欧美九色日韩亚洲蝌蚪91| 精品国产乱码久久久久久小说| 亚洲欧美一区二区三区黑人| 欧美日韩亚洲综合一区二区三区_| 在线观看免费午夜福利视频| www.精华液| 9191精品国产免费久久| 美女福利国产在线| av在线播放精品| 久久精品国产综合久久久| 在线观看www视频免费| 久久狼人影院| 99国产精品一区二区蜜桃av | 99热全是精品| 日韩中文字幕欧美一区二区| 老司机靠b影院| 不卡一级毛片| 久久久久久人人人人人| 好男人电影高清在线观看| av在线老鸭窝| 国产一卡二卡三卡精品| 国产欧美日韩一区二区三 | 狠狠婷婷综合久久久久久88av| 一个人免费在线观看的高清视频 | 成年人黄色毛片网站| 亚洲黑人精品在线| 精品福利永久在线观看| 国产免费福利视频在线观看| 亚洲av日韩在线播放| 欧美在线一区亚洲| 免费观看av网站的网址| 99国产精品一区二区蜜桃av | 亚洲自偷自拍图片 自拍| 亚洲欧美一区二区三区久久| 国产成+人综合+亚洲专区| 亚洲国产欧美网| 9191精品国产免费久久| 精品久久久精品久久久| 91九色精品人成在线观看| 99久久99久久久精品蜜桃| 搡老熟女国产l中国老女人| 一区二区三区乱码不卡18| 精品卡一卡二卡四卡免费| 亚洲精品国产av成人精品| 一区二区三区乱码不卡18| 欧美日韩国产mv在线观看视频| 超碰成人久久| 日韩中文字幕欧美一区二区| 少妇 在线观看| 国产亚洲av高清不卡| 少妇 在线观看| 男人爽女人下面视频在线观看| 国产亚洲av高清不卡| 久久久久久久大尺度免费视频| 久久人人97超碰香蕉20202| 日韩欧美国产一区二区入口| 老熟女久久久| 日韩欧美国产一区二区入口| 好男人电影高清在线观看| 亚洲国产毛片av蜜桃av| 天天躁狠狠躁夜夜躁狠狠躁| 国产亚洲av片在线观看秒播厂| 日本91视频免费播放| 久久精品熟女亚洲av麻豆精品| 两个人免费观看高清视频| 亚洲成人国产一区在线观看| 国产一区二区三区综合在线观看| 国产一区二区三区综合在线观看| 亚洲欧美精品自产自拍| 亚洲国产欧美一区二区综合| 国产麻豆69| 久久热在线av| 中文字幕精品免费在线观看视频| 国产精品免费视频内射| 不卡av一区二区三区| 老熟妇仑乱视频hdxx| 欧美激情高清一区二区三区| 久久人妻熟女aⅴ| 日韩人妻精品一区2区三区| 超色免费av| 久久香蕉激情| 黑人欧美特级aaaaaa片| 啦啦啦中文免费视频观看日本| 九色亚洲精品在线播放| 悠悠久久av| 免费在线观看完整版高清| 成人免费观看视频高清| 在线看a的网站| 操出白浆在线播放| 亚洲伊人久久精品综合| 正在播放国产对白刺激| 高潮久久久久久久久久久不卡| 亚洲欧美一区二区三区久久| 999久久久精品免费观看国产| 国产成人欧美| 久久国产精品男人的天堂亚洲| 久久毛片免费看一区二区三区| 色94色欧美一区二区| 大陆偷拍与自拍| 欧美xxⅹ黑人| 黄片大片在线免费观看| 亚洲欧美成人综合另类久久久| av又黄又爽大尺度在线免费看| 制服人妻中文乱码| 在线观看免费高清a一片| 在线 av 中文字幕| 国产精品久久久久久精品古装| videos熟女内射| av视频免费观看在线观看| 日韩三级视频一区二区三区| 国产精品av久久久久免费| 午夜福利在线观看吧| 美女主播在线视频| 十分钟在线观看高清视频www| 亚洲综合色网址| 免费在线观看日本一区| 曰老女人黄片| 久久久久久免费高清国产稀缺| 精品人妻一区二区三区麻豆| 在线永久观看黄色视频| 国产在线视频一区二区| 国产免费现黄频在线看| 国产精品av久久久久免费| 午夜福利在线观看吧| 一进一出抽搐动态| 色综合欧美亚洲国产小说| 欧美久久黑人一区二区| 99久久综合免费| 色老头精品视频在线观看| 国产无遮挡羞羞视频在线观看| 日本五十路高清| 在线永久观看黄色视频| 成人亚洲精品一区在线观看| 叶爱在线成人免费视频播放| 亚洲精华国产精华精| 香蕉国产在线看| 精品久久蜜臀av无| 成人18禁高潮啪啪吃奶动态图| netflix在线观看网站| 国产精品影院久久| 1024香蕉在线观看| 欧美精品一区二区大全| 91麻豆av在线| 91精品伊人久久大香线蕉| 我要看黄色一级片免费的| 国产精品国产三级国产专区5o| av线在线观看网站| 日韩精品免费视频一区二区三区| 精品乱码久久久久久99久播| 免费看十八禁软件| 欧美国产精品一级二级三级| 欧美国产精品va在线观看不卡| 18禁观看日本| 久久中文看片网| 欧美在线一区亚洲| 亚洲欧美成人综合另类久久久| 极品人妻少妇av视频| 国产亚洲午夜精品一区二区久久| 欧美人与性动交α欧美软件| 午夜免费成人在线视频| 91成年电影在线观看| 制服诱惑二区| 久久久久久久久免费视频了| 无限看片的www在线观看| 精品国产超薄肉色丝袜足j| av在线app专区| 亚洲成av片中文字幕在线观看| 肉色欧美久久久久久久蜜桃| 成人手机av| 欧美日韩一级在线毛片| 老司机午夜十八禁免费视频| 亚洲欧洲日产国产| 久久国产精品人妻蜜桃| 中文字幕精品免费在线观看视频| 亚洲中文字幕日韩| 国产在线观看jvid| 成年人免费黄色播放视频| 1024视频免费在线观看| 亚洲欧洲日产国产| 欧美日韩精品网址| 一个人免费看片子| av网站免费在线观看视频| 中文精品一卡2卡3卡4更新| 国产亚洲精品一区二区www | 欧美人与性动交α欧美精品济南到| 亚洲av电影在线观看一区二区三区| 久热爱精品视频在线9| 欧美黑人精品巨大| 在线亚洲精品国产二区图片欧美| 亚洲精品久久成人aⅴ小说| 亚洲av日韩在线播放| 中文字幕最新亚洲高清| 亚洲精品第二区| 激情视频va一区二区三区| 三上悠亚av全集在线观看| 国产亚洲精品一区二区www | 99久久人妻综合| 亚洲国产精品999| 精品免费久久久久久久清纯 | 久久久久久久国产电影| 国产欧美日韩一区二区三 | 爱豆传媒免费全集在线观看| 中文字幕av电影在线播放| 新久久久久国产一级毛片| 亚洲激情五月婷婷啪啪| 国产免费一区二区三区四区乱码| av天堂在线播放| 亚洲国产欧美日韩在线播放| 狠狠精品人妻久久久久久综合| 国产亚洲一区二区精品| 日本欧美视频一区| 大陆偷拍与自拍| 国产极品粉嫩免费观看在线| 50天的宝宝边吃奶边哭怎么回事| 亚洲精品成人av观看孕妇| avwww免费| 国产成人精品无人区| 桃花免费在线播放| 精品少妇内射三级| 狠狠精品人妻久久久久久综合| 亚洲精品美女久久久久99蜜臀| 大香蕉久久成人网| 久久久久精品国产欧美久久久 | 久久精品熟女亚洲av麻豆精品| 性色av乱码一区二区三区2| 精品一区二区三区四区五区乱码| 免费一级毛片在线播放高清视频 | 一级片'在线观看视频| 一本久久精品| 十八禁高潮呻吟视频| 日韩视频一区二区在线观看| 三级毛片av免费| 亚洲中文日韩欧美视频| 久久久久久久国产电影| 黄色视频不卡| 欧美日韩视频精品一区| 黄色a级毛片大全视频| 激情视频va一区二区三区| a级片在线免费高清观看视频| 天天操日日干夜夜撸| 亚洲avbb在线观看| 下体分泌物呈黄色| 在线观看人妻少妇| 国产av精品麻豆| 女人精品久久久久毛片| 搡老熟女国产l中国老女人| 男女午夜视频在线观看| 91av网站免费观看| 亚洲欧美成人综合另类久久久| 久久国产精品人妻蜜桃| 岛国在线观看网站| 久热爱精品视频在线9| 韩国精品一区二区三区| 欧美老熟妇乱子伦牲交| 一本色道久久久久久精品综合| 亚洲中文字幕日韩| 国产成人精品在线电影| 国产精品欧美亚洲77777| 91成人精品电影| 18在线观看网站| 久久人人爽av亚洲精品天堂| 日韩欧美国产一区二区入口| 99国产精品一区二区蜜桃av | 99久久99久久久精品蜜桃| 国产精品1区2区在线观看. | 久久中文看片网| 国产精品 国内视频| 国产日韩一区二区三区精品不卡| 国产精品久久久久久精品古装| 国产不卡av网站在线观看| 免费观看a级毛片全部| 高潮久久久久久久久久久不卡| 精品国产超薄肉色丝袜足j| 性高湖久久久久久久久免费观看| 久久香蕉激情| 脱女人内裤的视频| 乱人伦中国视频| 老司机影院毛片| 伦理电影免费视频| 亚洲精品成人av观看孕妇| 欧美黑人欧美精品刺激| 日韩大片免费观看网站| 国产精品国产三级国产专区5o| 久热这里只有精品99| 视频区图区小说| 人妻人人澡人人爽人人| 国产免费av片在线观看野外av| e午夜精品久久久久久久| 亚洲欧美激情在线| 一区二区日韩欧美中文字幕| 最新的欧美精品一区二区| 亚洲综合色网址| 国产精品久久久久久精品电影小说| 国产不卡av网站在线观看| 母亲3免费完整高清在线观看| 久久午夜综合久久蜜桃| 黄色 视频免费看| 性高湖久久久久久久久免费观看| 人妻久久中文字幕网| 亚洲精品中文字幕在线视频| 十八禁网站免费在线| 热99re8久久精品国产| 亚洲专区字幕在线| 老汉色av国产亚洲站长工具| 成人手机av| 91精品国产国语对白视频| 亚洲精品国产av蜜桃| 国产精品久久久av美女十八| 午夜福利免费观看在线| 日本vs欧美在线观看视频| 一级毛片电影观看| 精品国产超薄肉色丝袜足j| 国产福利在线免费观看视频| 黑人欧美特级aaaaaa片| 亚洲专区字幕在线| www.自偷自拍.com| 日韩欧美一区二区三区在线观看 | 久久精品成人免费网站| 亚洲精品国产色婷婷电影| 日韩一区二区三区影片| 深夜精品福利| 欧美一级毛片孕妇| 久热爱精品视频在线9| 91麻豆精品激情在线观看国产 | 国产成人a∨麻豆精品| 99精品欧美一区二区三区四区| 爱豆传媒免费全集在线观看| 精品人妻一区二区三区麻豆| 国产麻豆69| 国产精品影院久久| 国产欧美日韩综合在线一区二区| 亚洲中文字幕日韩| 男女免费视频国产| 色播在线永久视频| 国产在线视频一区二区| 免费不卡黄色视频| 精品国产超薄肉色丝袜足j| 亚洲欧美一区二区三区黑人| 一本综合久久免费| 超色免费av| 亚洲情色 制服丝袜| 久久久精品免费免费高清| 桃花免费在线播放| 黄色 视频免费看| 一区二区三区精品91| 五月天丁香电影| 日韩视频一区二区在线观看| 日本av手机在线免费观看| 人人妻人人爽人人添夜夜欢视频| 久久久国产一区二区| 欧美国产精品va在线观看不卡| 国产精品二区激情视频| 国产成人免费观看mmmm| 乱人伦中国视频| 极品人妻少妇av视频| 伊人久久大香线蕉亚洲五| 黄色片一级片一级黄色片| 成人av一区二区三区在线看 | 国产精品国产三级国产专区5o| 99精国产麻豆久久婷婷| 人妻久久中文字幕网| 亚洲第一av免费看| 国产一区二区在线观看av| 国产欧美日韩一区二区三区在线| 亚洲精品久久久久久婷婷小说| 午夜福利影视在线免费观看| 欧美激情极品国产一区二区三区| 久久99热这里只频精品6学生| 国产免费av片在线观看野外av| 国产区一区二久久| 啦啦啦啦在线视频资源| 亚洲国产精品一区二区三区在线| 亚洲色图综合在线观看| 久久av网站| 亚洲国产精品一区三区| 国产主播在线观看一区二区| 欧美精品一区二区免费开放| 99久久综合免费| 久久精品熟女亚洲av麻豆精品| 久久香蕉激情| 下体分泌物呈黄色| 国产精品九九99| 伦理电影免费视频| 精品人妻1区二区| 国产成人影院久久av| 99国产精品一区二区三区| 亚洲精品一二三| 久久精品亚洲av国产电影网| 午夜福利影视在线免费观看| 18禁国产床啪视频网站| 99久久国产精品久久久| 一本久久精品| 日本欧美视频一区| 日韩有码中文字幕| 久久国产精品影院| 香蕉丝袜av| 精品一区二区三区av网在线观看 | 人妻人人澡人人爽人人| 国产精品av久久久久免费| 黄色a级毛片大全视频| 欧美黄色片欧美黄色片| 一级毛片电影观看| 亚洲男人天堂网一区| 日本av手机在线免费观看| 一本一本久久a久久精品综合妖精| 免费久久久久久久精品成人欧美视频| 午夜免费观看性视频| 熟女少妇亚洲综合色aaa.| 久久久久久久大尺度免费视频| 大香蕉久久成人网| 亚洲精品一卡2卡三卡4卡5卡 | a在线观看视频网站| 国产精品免费视频内射| 视频在线观看一区二区三区| a级毛片黄视频| 男女免费视频国产| 搡老熟女国产l中国老女人| 人人妻人人澡人人爽人人夜夜| 热re99久久国产66热| a级片在线免费高清观看视频| 亚洲国产欧美在线一区| 韩国精品一区二区三区| 成人手机av| 国产精品1区2区在线观看. | 最新在线观看一区二区三区| 国产精品一二三区在线看| av超薄肉色丝袜交足视频| av电影中文网址| 人人妻人人澡人人爽人人夜夜| 午夜免费鲁丝| 亚洲国产精品999| av一本久久久久| 成年动漫av网址| 狂野欧美激情性xxxx| 日韩欧美国产一区二区入口| 亚洲熟女精品中文字幕| 麻豆乱淫一区二区| 国产精品 国内视频| 女性被躁到高潮视频| 国产免费现黄频在线看| 一区二区三区四区激情视频| 深夜精品福利| 久久国产精品人妻蜜桃| www.999成人在线观看| 伦理电影免费视频| 欧美变态另类bdsm刘玥| 黄片播放在线免费| 视频区欧美日本亚洲| 一本大道久久a久久精品| 精品免费久久久久久久清纯 | 国产色视频综合| 性色av一级| 99精品久久久久人妻精品| 黑人巨大精品欧美一区二区蜜桃| 久久久精品国产亚洲av高清涩受| 一区福利在线观看| 亚洲精品国产一区二区精华液| h视频一区二区三区| 国产亚洲欧美精品永久| 美女午夜性视频免费| 久9热在线精品视频| 天堂俺去俺来也www色官网| 桃红色精品国产亚洲av| 午夜精品国产一区二区电影| 日本撒尿小便嘘嘘汇集6| 亚洲 国产 在线| 久久精品久久久久久噜噜老黄| av在线app专区| 法律面前人人平等表现在哪些方面 | 亚洲精品中文字幕一二三四区 | 亚洲精品一区蜜桃| 少妇的丰满在线观看| 久久久欧美国产精品| 黄色毛片三级朝国网站| 欧美激情高清一区二区三区| 亚洲精品一卡2卡三卡4卡5卡 | 午夜福利影视在线免费观看| 99国产精品一区二区蜜桃av | 久久精品久久久久久噜噜老黄| 国产成人系列免费观看| 国产精品一区二区在线不卡| 啦啦啦 在线观看视频| 丁香六月欧美| 精品国产一区二区三区久久久樱花| a级毛片黄视频| 国产精品成人在线| 狠狠精品人妻久久久久久综合| 最新在线观看一区二区三区| h视频一区二区三区| 青春草亚洲视频在线观看| 日韩三级视频一区二区三区| 午夜91福利影院| 国产精品久久久久久人妻精品电影 | 黑人欧美特级aaaaaa片| 19禁男女啪啪无遮挡网站| av电影中文网址| a级毛片在线看网站| 婷婷成人精品国产| 老司机午夜十八禁免费视频| avwww免费| 两个人看的免费小视频| av有码第一页| 色婷婷久久久亚洲欧美| 一区二区三区精品91| 老熟女久久久| 亚洲综合色网址| 男女床上黄色一级片免费看| 91九色精品人成在线观看|